回答:
以下を使用できます。 usermod -a -G grouptoadd username
-a -Gが問題ないのに-a -Gが問題ない理由を私が思ったよりもはるかに明白ではないので、説明しようと思います。
-Gオプションは、1つの値または値のリストのいずれかを取ります。1つの値の場合、オプションと値の間にスペースを入れる必要がないため、値は次のように指定できます。これは単なる慣習です。
システムにaというグループがある場合、-Gaの呼び出しはあいまいになります。ユーザーにグループaを1つだけ持たせますか?-aと-Gを呼び出していますか?次に、「a」は-Gの値ですか?残りの値はどこですか(-Gまで)?また、1文字のオプションは、他の1文字のオプションの前に配置できることも一般的です。つまり、tat -xy == -yzです。ただし、オプションの1つがVALUEのような単一の値またはVAL1、Val2、val4などのような多くの値を取ることができる場合、これはあいまいです。
したがって、コマンドをFAILSAFEにしてすべての入力に対して適切に機能させるには、-aを-Gから分離する必要があります。
からman usermod
:
名前
usermod-ユーザーアカウントを変更する
あらすじ
usermod [オプション]ログイン
説明文
usermodのコマンドは、コマンドラインで指定された変更を反映するために、システムアカウントファイルを修正します。
オプション
usermodコマンドに適用されるオプションは次のとおりです。
-a、-append
ユーザーを補足グループに追加します。-Gオプションとのみ使用してください。
...
-G、--groups GROUP1 [、GROUP2、... [、GROUPN]]]
ユーザーがメンバーでもある補足グループのリスト。各グループは次のグループとカンマで区切られ、間に空白はありません。グループには、-gオプションで指定されたグループと同じ制限が適用されます。
ユーザーが現在リストにないグループのメンバーである場合、ユーザーはグループから削除されます。この動作は、ユーザーを現在の補足グループリストに追加する-aオプションを使用して変更できます。
...
質問で示したとおりにコマンドを実行した場合は、ユーザーKeithではなく、Johnだけを作成しました。コマンドラインでコマンドを順番に実行するには、;
またはを使用してコマンドを分離する必要があります&&
。それ以外の場合は、最初のコマンドのみが実行されます。
sudo adduser John sudo adduser Keith
adduser: Only one or two names allowed.
あなたがいる場合やったそれらを正しく実行し、大文字に注意してください。あなたの質問では、「ジョン」と「ジョン」の両方に言及しています。これはうまくいくはずです:
sudo adduser keith
sudo adduser john
sudo usermod -aG keith john