Debian VMのさまざまなグループにユーザーのリストを追加しようとしています。 bashスクリプトで次の一連のコマンドを使用しています。
getent group $uid || groupadd $uid #add group before adding user
useradd -s $Shell -m -d $users_directory -g $uid $uname #add user with group id $uid
ただし、これを実行すると、次のように出力されます。
groupadd: group '5067' already exists
useradd: group '5067' does not exist
cut-d: -f1 /etc/group
で自分のグループを見ると、そこに「5067」が存在することがわかりますが、groups
を実行すると、唯一のグループとして「root」だけが表示されます。
任意のヒント?
数値のグループIDを使用してgroupadd
を呼び出すと、グループが作成されますnamed5067
。例えば。:
# groupadd 5067
# grep 5067 /etc/group
5067:x:1000:
数値識別子をuseradd -g ...
に渡すと、グループidsのみが調べられます。したがって、グループnamed5067
が存在する場合でも:
# useradd -g 5067 testuser
useradd: group '5067' does not exist
これがあなたの問題の根源だと思います。
groups
の実行時に新しいグループが表示されないのは正常です。ユーザーを追加した新しいグループは、そのユーザーがログインするまで有効になりません。ユーザーがすでにログインしている場合は、ログアウトして再度ログインする必要があります(OSは新しいログインシェルを開始します)。そのため、groups
の出力には新しいグループが表示されませんが、/etc/group
には表示されます。
re:ルートのみを表示するgroupsコマンド。
単にグループを入力すると、your uidの応答が返されます。そのユーザーのグループを表示するには、グループ$ unameを使用する必要があります。
また、useraddは、同じ名前のユーザー用に新しいグループを作成する場合があることに注意してください。 -Nを使用してそれを防ぐことができます。 /etc/login.defsと/ etc/default/useraddを調べて、オプションのデフォルトを確認します。