web-dev-qa-db-ja.com

/ etc / groupに存在するグループにユーザーを追加しようとしても機能しない

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」だけが表示されます。

任意のヒント?

1
Tyler Kelly

数値のグループ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には表示されます。

5
larsks

re:ルートのみを表示するgroupsコマンド。

単にグループを入力すると、your uidの応答が返されます。そのユーザーのグループを表示するには、グループ$ unameを使用する必要があります。

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

1