尝试将用户添加到 /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是正常的。您添加用户的任何新组只有在该用户登录后才会生效。如果用户已经登录,则他们需要注销并重新登录(操作系统启动一个新的登录 shell)。这就是为什么您在 的输出中看不到新组,groups尽管您确实在 中看到了它/etc/group

答案2

回复:仅显示 root 的 groups 命令。

如果您只是键入组,您会得到以下响应你的uid。您需要使用 groups $uname 来查看该用户的组。

另外,请注意 useradd 可能会为具有相同名称的用户创建一个新组。您可以使用 -N 来防止这种情况。查看 /etc/login.defs 和 /etc/default/useradd 以检查选项默认值。

相关内容