/ etc / groupのグループにユーザーを追加しようとすると機能しません。

/ etc / groupのグループにユーザーを追加しようとすると機能しません。

Debian 仮想マシンの他のグループにユーザーリストを追加しようとしています。 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」だけが表示されます。

どのようなヒントがありますか?

答え1

数値のグループ ID で呼び出すと、groupaddグループが作成されます。名前付き 5067。たとえば、

# groupadd 5067
# grep 5067 /etc/group
5067:x:1000:

数値識別子を渡すときにのみuseradd -g ...グループを調べます。ID。だから一群の人でも名前付き 5067存在する:

# useradd -g 5067 testuser
useradd: group '5067' does not exist

これが問題の原因だと思います。

実行時に新しいグループが表示されないのはgroups正常です。ユーザーを追加した新しいグループは、そのユーザーがログインするまで適用されません。ユーザーがすでにログインしている場合は、ログアウトしてから再度ログインする必要があります(オペレーティングシステムは新しいログインシェルを起動します)。では、新しいグループがgroups表示されますが、出力では新しいグループが表示されないのはこの理由です/etc/group

答え2

回答:ルートのグループコマンドのみを表示してください。

group と入力すると、次のような応答が表示されます。あなたのuid。ユーザーグループを表示するには、グループ$unameを使用する必要があります。

また、useraddは同じ名前のユーザーに対して新しいグループを作成できます。これを防ぐには、-N を使用できます。オプションのデフォルト値を確認するには、/etc/login.defsと/etc/default/useraddを確認してください。

関連情報