如何将现有用户添加到现有组?

如何将现有用户添加到现有组?

我想将 Apache 用户 ( www-data) 添加到该audio组。我已阅读 的手册页useradd,但没有任何进展。我正在运行 xubuntu 11.10。以下是我正在做的事情:

$ sudo useradd -G audio www-data
useradd: user 'www-data' already exists

如果我省略该-G选项,bash 将打印以下帮助信息useradd

$ sudo useradd  audio www-data
Usage: useradd [options] LOGIN
Options: -b, --base-dir BASE_DIR       base directory for the home directory...

从手册页中我无法清楚知道我应该使用哪些选项来实现这一点。

答案1

useradd命令将尝试添加新用户。由于您的用户已存在,因此这不是您想要的。

相反:要修改现有用户(例如将该用户添加到新组),请使用usermod命令。

尝试这个:

sudo usermod -a -G groupName userName
  • (附加)开关-a必不可少否则,该用户将被从任何组中删除,而不在列表中。

  • -G开关采用一个(以逗号分隔的)附加组列表来将用户分配到其中。

一般来说(对于 GUI 或已经运行的进程等),用户需要注销并重新登录查看新添加的组。对于当前 shell 会话,您可以使用newgrp

newgrp groupName
  • newgrp将组添加到当前 shell 会话。

答案2

将用户添加到组:

sudo adduser user group

从组中删除用户:

sudo deluser user group

答案3

添加现有用户后:

usermod -a -G group user  

您可以需要注销并登录获取群组权限/etc/group

答案4

我将此作为答案发布,因为我的声誉不足以发表评论。正如@dpendolino 提到的,要使此命令的效果持续存在:

sudo usermod -a -G groupName userName

...您需要重新注销/登录。

但是,如果你需要一个快捷方式来开始使用新的群组成员资格立即地(并且你有正确的须藤权限)我发现了这个解决方法:

$ sudo su -
# su [userName]
$ groups

解释:

  • sudo su -将会给你一个 root shell
  • su [userName]返回到带有用户的 shell
  • groupsusermod -aG现在运行时将显示你使用命令添加的组

就我而言,我试图将“docker”组添加到我的用户

前:

$ groups
userName adm cdrom sudo dip plugdev lpadmin sambashare wireshark lxd

后:

$ groups
userName adm cdrom sudo dip plugdev lpadmin sambashare wireshark lxd docker

相关内容