尝试将用户添加到 /etc/group 中存在的组不起作用

Tyl*_*lly 2 users debian group useradd

我正在尝试将用户列表添加到 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
Run Code Online (Sandbox Code Playgroud)

但是运行它会打印出以下内容:

groupadd: group '5067' already exists
useradd: group '5067' does not exist
Run Code Online (Sandbox Code Playgroud)

查看我的组,cut-d: -f1 /etc/group我看到那里存在“5067”,但是当我运行时,groups我看到的只是“root”作为单独的组。

有小费吗?

lar*_*sks 5

groupadd使用数字组 ID调用将创建一个名为 的组5067。例如:

# groupadd 5067
# grep 5067 /etc/group
5067:x:1000:
Run Code Online (Sandbox Code Playgroud)

当您将数字标识符传递给 时useradd -g ...,它只查看组ID。因此,即使存在名为 的组5067:

# useradd -g 5067 testuser
useradd: group '5067' does not exist
Run Code Online (Sandbox Code Playgroud)

我怀疑这是你问题的根源。

运行时看不到新组groups是正常的。您添加了用户的任何新组在该用户登录之前都不会生效。如果用户已经登录,他们需要注销并重新登录(操作系统启动一个新的登录外壳)。这就是为什么您groups在/etc/group.