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

我想将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... 

我从手册页中不清楚我应该使用哪些选项来完成这项工作。

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

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

试试这个:

 sudo usermod -a -G groupName userName 

用户需要注销并重新登录才能看到他们添加的新组。

  • -a (追加)开关是必不可少的。 否则,将从任何组中删除用户,而不是列表中的用户。

  • -G开关采用(逗号分隔的)其他组列表来分配用户。

将用户添加到组:

 sudo adduser user group 

从组中删除用户:

 sudo deluser user group 

添加到现有用户后:

 usermod -a -G group user 

您可能需要注销并登录才能从/etc/group获取组权限。

我通常使用

 sudo gpasswd -a myuser mygroup 

在Ubuntu上,由于未启用以root身份登录,因此sudo组中的用户可以提升某些受限命令的权限。 必须在sudo之前添加任何受限制的命令以提升权限。

 sudo usermod -a -G group user 

将现有用户user添加到名为group的补充group 。 用户的主要组将保持不变。

我发布这个作为答案,因为我没有足够的声誉来评论。 正如@ dpendolino所提到的,这个命令的效果仍然存在:

sudo usermod -a -G groupName userName

…你需要再次注销/登录。

但是,如果您需要一个快捷方式来立即开始使用新的组成员身份(并且您拥有正确的sudo权限),我发现了这种解决方法:

 $ sudo su - # su [userName] $ groups 

说明:

  • sudo su -会给你一个root shell
  • su [userName]返回您与用户的shell
  • 现在运行的组将显示您使用usermod -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