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


668

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

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

Answers:


1039

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

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

尝试这个:

sudo usermod -a -G groupName userName

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

  • 所述-a(附加)开关是必需的。否则,该用户将从任何组中删除,而不是从列表中删除。

  • -G开关需要额外的基团的(逗号分隔)列表以分配所述用户。


71
sudo usermod -a -G [group-name] [user-name]:对于那些仅在阅读了标题之后才看一眼答案的人来说,这只是一个快捷工具
Programster,

36
我认为现在首选的方法是sudo adduser user group。它是更简单,更简洁的语法。请参阅@Bai的回复。
ctbrown 2014年

3
@wilhil::man usermod-a, -- append-将用户添加到补充组。仅与-G选项一起使用。; -G,--groups GROUP1 [,GROUP2,... [,GROUPN] ]] [...]如果用户当前是未列出的组的成员,则将从该组中删除该用户。可以通过-a选项更改此行为,该选项将用户添加到当前的补充文件中组列表。”
Adam Michalik

18
有没有办法解决“注销并重新登录”部分的问题?某种类型的update-groups命令,也许吗?
混淆使用

14
@ con-f-use,如果可以运行sudo login -f YOURUSERNAME,它将启动一个新的shell会话。使用id命令来验证新会话是否在正确的组集中。但是,这不是“全局”-不适用于已经打开的终端。所以,真的,退出是最好的选择,如果可能的话
阿伦McDaid

222

将用户添加到组:

sudo adduser user group

从组中删除用户:

sudo deluser user group

3
不完全是这个问题的要求
Tejendra 2014年

11
@Tejendra的评论似乎以使用useradd为前提/强制回答OP的问题为前提;也许这个答案只是遗漏了一些单词,以表明adduser / deluser是更好的选择。
2015年

12
对我来说,更简单的界面更好,这就是为什么我喜欢这一界面。
Betlista

4
正是所要提出的问题。@knocte,是的,我认为这是Debian的具体
Auspex

3
@Auspex我可以确认它在Red Hat上不起作用。
Stibu

54

添加到现有用户后:

usermod -a -G group user  

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


21
请将该部分设为“需要注销和登录”粗体。
晋权

仅供参考:我认为该id命令应该表明您已添加到该组而无需退出。id myuser
ficuscr 2014年

5
我需要在Ubuntu 14.10上注销并重新登录。
A.Danischewski 2015年

26

我通常使用

sudo gpasswd -a myuser mygroup

3
usermod在我的系统ubuntu 14.04上不可用。这很棒!
2014年

这也适用usermod于未安装Debian Stretch的情况。
Josh Habdas

8

我将其发布为答案,因为我没有足够的声誉来发表评论。正如@dpendolino提到的那样,要保留此命令的效果:

sudo usermod -a -G groupName userName

...您需要再次注销/登录。

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

$ sudo su -
# su [userName]
$ groups

说明:

  • sudo su - 会给你一个根壳
  • su [userName] 使您和用户一起返回shell
  • groups现在运行时,将显示您使用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

5

在Ubuntu上,由于未启用as登录,因此rootsudo组中的用户可以提升某些受限命令的特权。任何受限制的命令必须带有前缀sudo才能提升特权。

sudo usermod -a -G group user

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


1
sudo usermod -a -G groupName userName

可以正常工作,但是我必须完全重新启动,只是注销然后再次登录并没有完成工作...

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.