我正在尝试将用户列表添加到 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 以检查选项默认值。