如何从组中删除用户?

Lek*_*eyn 430 users group

我应该使用哪个命令从 Debian 的组中删除用户?

将用户添加到组时,可以通过以下方式完成:

usermod -a -G group user
Run Code Online (Sandbox Code Playgroud)

但是,我找不到用于从组中删除用户的类似命令(接受组和用户作为参数)。我能得到的最接近的是:

usermod -G all,existing,groups,except,for,group user
Run Code Online (Sandbox Code Playgroud)

是否有像usermod OPTION group userOPTION这样的命令可以使usermod(或类似程序)从组中删除用户?

小智 515

您可以使用gpasswd

# gpasswd --delete user group
Run Code Online (Sandbox Code Playgroud)

新的组配置将在下次登录时分配。如果用户已登录,则不会立即看到命令的效果。

  • 很好,谢谢!用于将用户添加到组的 `gpasswd -a user group` 似乎也更好,特别是如果出现拼写错误并且 `-a` 选项被删除。 (14认同)
  • 对我不起作用。我收到两条消息:a) 从组中删除用户。b) gpasswd:用户不是组的成员。之后运行“成员组”显示没有变化。 (2认同)
  • @geoidesic 需要注销重新登录才能看到效果 (2认同)
  • 有没有办法让更改生效而无需重新登录? (2认同)
  • @geoidesic 我在 Centos 7 上遇到了这些错误。我发现你遇到了这个,如果你试图从他们的默认组中删除用户。尝试使用 `usermod -g user user` 切换默认组,然后尝试删除它们。 (2认同)

Gil*_*il' 209

在 Debian 上,该adduser软件包包含一个deluser程序,如果您将两者都作为参数传递,该程序将从组中删除用户:

deluser user group
Run Code Online (Sandbox Code Playgroud)

如果你的发行没有adduser,你可以编辑/etc/group/etc/gshadow手动。

vigr
vigr -s
Run Code Online (Sandbox Code Playgroud)

  • 我不知道像 `vigr` 和 `vipw` 这样的程序。在手册页太远的情况下非常有用:) (12认同)
  • 或者,在修改 `/etc/group` 后运行 `grpconv` 来更新 `/etc/gshadow` 而不是编辑它。 (4认同)

use*_*145 88

usermod -G "" username
Run Code Online (Sandbox Code Playgroud)

username 中删除所有次要/补充组,使它们仅作为其主要组的成员。这适用于 Solaris 5.9

  • 请注意要求从“组”而不是所有组中删除用户的问题。 (6认同)
  • 在 CentOS 6.4 中测试;作品。 (5认同)

小智 19

这是“老派”方法...

大多数 *nix 系统将组信息保存在纯文本文件中/etc/group,其中

  • 每行包含字段

    • 团队名字
    • 密码
    • GID,和
    • 用户列表

    :字符分隔。

  • user_list 字段是用户名列表,以逗号分隔。

现在假设您要从名为thisuser 的组中删除名为的用户thatgroup。从备份开始/etc/group,然后使用具有 su 权限的您偏好的编辑器 来编辑文件/etc/groupthisuserthatgroup行条目中删除引用,例如,

原始行是这样的:

thatgroup:x:1274:someuser,thisuser,anotheruser

编辑后应该是这样的:

thatgroup:x:1274:someuser,anotheruser

与所有其他答案一样,这不会影响用户的当前会话,如果有的话(即,如果用户当前已登录)。更改将在用户下次登录时生效。

  • `vigr` 已经被提及用于手动编辑 `/etc/group`。我的手册页说用户名用逗号分隔,而不是冒号。不需要重新启动,您只需要重新登录(或使用`newgrp`)。 (2认同)