我想将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会话中。

评论


sudo usermod -a -G [group-name] [user-name]:对于那些只看了标题后才看答案的人来说,这是一个方便

–Programster
13年11月11日14:50



我认为现在首选的方式是sudo adduser用户组。它是更简单,更简洁的语法。请参阅@Bai的回复。

–ctbrown
2014年8月14日14:20



有没有办法解决“注销并返回”部分?某些类型的update-groups命令,也许吗?

–继续使用
16 Mar 19 '16 at 0:05

@ con-f-use,如果可以运行sudo login -f YOURUSERNAME,它将启动一个新的Shell会话。使用id命令验证新会话是否在正确的组集中。但是,这不是“全局”-不适用于已经打开的终端。因此,实际上,注销是最好的选择

–亚伦·麦克戴(Aaron McDaid)
17 Mar 31 '14:57



您可以使用newgrp [group-name]命令将新组添加到当前会话的用户,而无需注销和再次登录。不过,仅当前会话会受到影响。

– stenix
17年11月21日在10:17



#2 楼

将用户添加到组中:

sudo adduser user group


从组中删除用户:

sudo deluser user group


评论


不完全是这个问题的要求

– Tejendra
2014年9月3日上午8:10

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

–圣人
15年7月28日在19:39

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

–贝塔利斯塔
16年8月11日在10:35

这正是所要提出的问题。 @knocte,是的,我认为这是Debian特有的

–澳大利亚
16-11-14在12:58



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

– Stibu
17年2月22日在9:43

#3 楼

添加到现有用户后:

usermod -a -G group user  


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

评论


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

–金权
2013年12月17日下午6:36

仅供参考:我认为id命令应该指示您已添加到该组而无需退出。 id myuser

– ficuscr
2014年1月3日在16:57

我需要在Ubuntu 14.10上注销并重新登录。

–A.Danischewski
2015年4月1日下午0:32

#4 楼

我通常使用

sudo gpasswd -a myuser mygroup


评论


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

–提请
2014年6月24日15:45

这在Debian Stretch上也很有效,其中未安装usermod。

–乔什·哈布达斯(Josh Habdas)
19 Mar 29 '19在6:36

#5 楼

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

sudo usermod -a -G groupName userName

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

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

$ sudo su -
# su [userName]
$ groups


说明:



sudo su -将为您提供根shell

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


评论


根据Aaron McDaid对另一个答案的评论,应用组成员身份的另一个选项是sudo login -f <用户名>。

–大卫·奥利弗(David Oliver)
1月4日20:08

#6 楼

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

sudo usermod -a -G group user


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

#7 楼

sudo usermod -a -G groupName userName


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