将用户添加到组中时,可以使用以下命令:
usermod -a -G group user
但是,我找不到用于将用户从组中删除的类似命令(接受组和用户作为参数)。我能得到的最接近的是:
usermod -G all,existing,groups,except,for,group user
是否有像
usermod OPTION group user
这样的带有OPTION的命令可以使usermod
(或类似程序)从组中删除用户? br /> #1 楼
您可以使用gpasswd
:# gpasswd -d user group
,那么新的组配置将在下次登录时分配,至少在Debian上。如果用户已登录,则不会立即看到该命令的效果。
评论
很好,谢谢! gpasswd-一个用于将用户添加到该组的用户组也看起来更好,尤其是当输入错误并且-a选项被删除时。
– Lekensteyn
2012年1月20日下午16:43
对我不起作用。我收到两条消息:a)从组中删除用户。 b)gpasswd:用户不是组的成员。之后运行的“成员组”没有变化。
–地线学
2014年12月15日7:19
@geoidesic,您需要注销并再次登录才能看到效果
–瓦西夫·侯赛因(Wasif Hossain)
16年7月3日在11:09
有没有办法使更改生效而无需重新登录?
–安迪·富斯尼亚克(Andy Fusniak)
16年8月11日在15:49
@geoidesic我在Centos 7上遇到了这些错误。如果您试图从用户的默认组中删除该用户,那么我发现了这一点。尝试使用usermod -g user user切换默认组,然后尝试删除它们。
– PanPipes
18年1月25日在10:55
#2 楼
在Debian上,adduser
软件包包含一个deluser
程序,如果您同时将这两个参数作为参数传递,则该程序会将用户从组中删除:deluser user group
如果您的发行版没有
adduser
,您可以手动编辑/etc/group
和/etc/gshadow
。vigr
vigr -s
评论
我不知道像vigr和vipw这样的程序。如果联机帮助页距离太远,则非常有用:)
– Lekensteyn
2012年1月20日下午16:47
或者,在修改/ etc / group之后,运行grpconv来更新/ etc / gshadow而不是对其进行编辑。
–西里尔
14-10-20在12:57
sudo deluser jenkins admin / usr / sbin / deluser:您不能将用户从其主要组中删除。
–乔纳森
14-10-20在17:16
@JonathanLeaders每个用户都必须至少属于一组。使用usermod或vipw更改用户的主要组。这个问题是关于补充团体的。
–吉尔斯'所以-不再是邪恶的'
14-10-21在16:44
真好还有一个更简单的adduser $ user $ group命令,而不是usermod -x -y -z-...。
– ygoe
2014年12月11日12:35
#3 楼
usermod -G "" username
从用户名中删除所有辅助/补充组,而使它们仅是其主要组的成员。
这在Solaris 5.9中起作用
评论
在CentOS 6.4中测试;作品。
–aggregate1166877
2014年4月3日在12:13
在Ubuntu 12.04中也可以使用。
–aggregate1166877
2014年4月3日在12:22
这似乎是将次要组强制到任何组列表(不包括所有未列出的组)的最佳方法。
–圣人
16年8月12日在17:53
经过测试并在CentOS 7中工作。谢谢!
–整rick
18年8月8日在3:54
这是最好的答案。
–Weezy
2月28日17:37
#4 楼
这是“老派”方法...大多数* nix系统将组信息维护为纯文本文件
/etc/group
,其中每行包含以下字段:
group_name
密码
GID,以及
user_list
,以
:
字符分隔。user_list字段是用逗号分隔的用户名列表。首先备份
thisuser
,,然后使用具有su特权的首选编辑器
编辑文件
thatgroup
,并从
/etc/group
行条目中删除/etc/group
参考,例如原始行是这样的:
thisuser
编辑后应该这样保留:
thatgroup
和所有其他答案一样,这不会影响用户的当前会话(如果有的话)(即,如果用户当前已登录)。
更改将在用户下次登录时生效。
评论
已经提到过要使用vigr来手动编辑/ etc / group。我的手册页说用户名用逗号分隔,而不用冒号分隔。无需重新启动,您只需要重新登录(或使用newgrp)。
– Lekensteyn
2014年12月10日下午16:24
为了帮助所有非Debian用户走到这条路寻找线索...根据OP的问题范围,这对于Debian可能就足够了,但是如果您将其用于* BSD OS,则需要修改纯文本文件如前所述,然后发出pwd_mkdb -p /etc/master.passwd以实际使用该列表。
– danno
18年7月19日在17:43
#5 楼
您可以在SUSE发行版上使用以下命令(而且显然没有其他用途)。
usermod -R group user_name
其中
group
是要删除的组中的用户和
user_name
要从组中删除的用户。例如,
usermod -R root imnottheroot
评论
哪个软件包提供您的usermod二进制文件?我要求找出版本,因为我的shadow-utils-4.1.4.3不提供-R选项。
– myroslav
13-10-17在10:42
我的影子4.1.5.1-5软件包(Arch Linux)确实具有-R选项,但这意味着其他。我猜这不是Linux。
– Lekensteyn
13-10-17在14:51
我不确定这是否有效。该手册页说-R为:“ -R,-root CHROOT_DIR在CHROOT_DIR目录中应用更改,并使用CHROOT_DIR目录中的配置文件。”
– Mike Kusold
2014年7月8日在23:34
我唯一可以找到的相关内容是该oracle联机帮助页,但这仍然不是同一回事,因此应删除此答案。
–雷米
2014年10月5日在22:03
sudo usermod -R管理员jenkins usermod:无效的chroot路径'admin'
–乔纳森
14-10-20在17:18
#6 楼
考虑:用户名:
abc2
组名称:
newgroup11
任务:从组
abc2
中删除用户newgroup11
[root@home1 ~]# groups abc2
abc2 : abc2
[root@home1 ~]# usermod -G newgroup11 abc2
[root@home1 ~]# groups abc2
abc2 : abc2 newgroup11
[root@home1 ~]# usermod -G newgroup11 abc2
[root@home1 ~]# usermod -G abc2 abc2
[root@home1 ~]# groups abc2
abc2 : abc2
**如果我错了,请纠正我。 **
评论
这“有效”,但是仅因为您有一个辅助组。 usermod -G newgroup11 abc2将把您置于辅助组newgroup11中。由于主要组是abc2,因此您将同时进入这两个组。 usermod -g abc2 abc2导致newgroup11从辅助组中删除,因为不再提及它。因此,对于三个或更多不同的组,此方法将无效。请参阅其他涉及gpasswd的答案以获得更好的命令。
– Lekensteyn
15年1月17日在22:56
#7 楼
您可以通过不带-a选项的情况下执行usermod命令从组中删除用户。例如,通过执行
`usermod -G group1 username`
会将用户添加到group1,并将其从其他任何组中删除,其中它是。请记住,您可以通过列出组名称(用逗号分隔)来将用户保留在各个组中。
评论
该信息已经被多次呈现。
–斯科特
18年11月21日在18:11
#8 楼
pw groupmod "groupname|gid" -d "username|uid"
由于某种原因使用CSH的解决方案。
#9 楼
要在没有删除选项的发行版(如Fedora)中继续使用usermod,其中user = bob和group = deletethisgroup,命令为:usermod -G `cat /etc/group | grep bob | grep -v deletethisgroup | cut -d ':' -f 1 | tr '\n' ',' | sed 's/,$//'` bob
管道(1)获取用户所属的所有组条目,(2)取出需要删除的条目,(3)返回第一列(组名),用逗号替换换行符,并删除尾部逗号。
当然,您可以将所有内容放在bash脚本中,该脚本将要删除的用户和组作为参数。 awk可以用来缩短结尾,但我想坚持使用grep,cut,tr和sed。
评论
根据该手册页,gpasswd -d bob deletethisgroup也可用。有什么原因不使用它?
– Lekensteyn
16 Mar 27 '16 at 0:08
并非每个人都希望设置组密码。我只是在使用特定发行版中问题所引用的命令来提供解决方案。在带有gpasswd -d的Fedora / RHEL / Centos中,如果删除的用户有权访问密码,则该用户仍可以加入该组。实际上,与禁止访问相比,它增加了组访问。
–斯蒂芬
16-3-27在4:11
我知道该实用程序名为gpasswd,因为它与/ etc / passwd密切相关,但是可以管理组。与仅控制密码的普通passwd命令不同,gpasswd也可以用于管理组的成员身份。如果您是root或组管理员,则不需要组密码。
– Lekensteyn
16 Mar 27 '16 at 15:46
您阅读了gpasswd手册吗?对于Fedora / RHEL / CentOS,如果您阅读了该手册,则说明该命令“用于管理/ etc / group和/ etc / gshadow”。它实际上对/ etc / passwd没有影响。手册还指出:“组密码是固有的安全问题,因为允许多个人知道密码。”它实际上并不管理组的成员身份,而是使用密码向任何用户开放该组。如果您已经是组的成员,则不需要组密码。
–斯蒂芬
16-3-28在2:19
在相似的命名和目的的意义上密切相关,我并不暗示/ etc / passwd文件实际上是由gpasswd管理的。请注意,我的第一条评论中的“手册页”指向Fedora 13的gpasswd手册页。使用gpasswd $ group可以设置导致您提到的安全问题的组密码。但是,您也没有密码,而是使用gpasswd -d $ user $ group删除用户,如第一个注释和接受的答案所述。请注意,此命令不会提示输入组密码,也不会修改或不需要该密码。
– Lekensteyn
16 Mar 28 '16 at 20:42
#10 楼
假设username = student和groupname = research,因此要将student
用户从research
组中删除,需要执行以下操作:gpasswd -d student research
评论
为什么要重复六年前的事情?它被标记为已接受答案!
–贝塔利斯塔
19年5月3日,0:13
#11 楼
要从组中删除用户,gpasswd是此IMO的最佳实用程序。命令示例:
sudo gpasswd -d group user
*帮助信息*
Usage: gpasswd [option] GROUP
Options:
-a, --add USER add USER to GROUP
-d, --delete USER remove USER from GROUP
-h, --help display this help message and exit
-Q, --root CHROOT_DIR directory to chroot into
-r, --delete-password remove the GROUP's password
-R, --restrict restrict access to GROUP to its members
-M, --members USER,... set the list of members of GROUP
-A, --administrators ADMIN,...
set the list of administrators for GROUP
Except for the -A and -M options, the options cannot be combined.
评论
组和用户参数被交换。另外,这正是所接受的答案所建议的内容,此帖子真的没有帮助吗?
– Lekensteyn
18年1月19日在23:29
评论
对于到此为止的Fedora用户,man usermod在-G选项注释中显示,希望保留所有当前组的列表是删除组的方式。 Fedora没有-R选项;您必须使用他试图避免的Lekensteyn的方法。