Linux技巧,如何创建用户时禁止生成同名用户组(指定或无归属组)

admin

在Linux系统管理中,我们经常需要创建新的用户,默认情况下,当你使用 useradd 命令创建一个新用户时,系统通常会自动创建一个与该用户名同名的用户组,并将其作为该用户的主组,这被称为用户私有组机制。

但在某些特定场景下(例如共享开发环境、ftp账户限制等),我们可能不希望创建这个同名的私有组,而是希望该用户归属于某个已存在的公共组,或者暂时不归属于特定的私有组。

虽然Linux系统中每个用户必须拥有一个主组ID(GID),无法真正做到“完全没有组”,但我们可以通过参数阻止创建同名组,并将其分配给现有的通用组(如 usersnogroup)。

Linux技巧,如何创建用户时禁止生成同名用户组(指定或无归属组)

以下是实现这一目标的两种常用方法。


使用 -N (no-user-group) 参数

这是最直接的方法。-N 参数告诉系统不要创建与用户同名的用户组,而是将用户添加到系统默认的组中(通常是 /etc/default/useradd 文件中定义的组,在很多发行版中是 usersnogroup)。

命令语法:

useradd -N 用户名

操作示例:

  1. 创建用户: 假设我们要创建一个名为 testuser 的用户,且不创建 testuser 组:

    sudo useradd -N testuser
  2. 设置密码:

    sudo passwd testuser
  3. 验证结果: 使用 id 命令查看用户信息:

    id testuser

    输出可能如下:

    uid=1001(testuser) gid=100(users) groups=100(users)

    注意:可以看到 gid 指向了 users 组,而不是 testuser 组。


使用 -g 参数指定现有组

如果你不想使用系统默认组,而是想明确指定该用户属于哪个现有的组(例如将其加入到 nogroup 组,或者 dev 组),可以使用 -g 参数。

前提条件: 指定的组必须已经存在。

命令语法:

useradd -g 已存在的组名 用户名

操作示例:

  1. 创建用户并指定到 nogroup 组: 有些管理员为了体现“无组”的概念,会将用户指定给 nogroup(或 nobody)。

    sudo useradd -g nogroup myuser
  2. 验证结果:

    
    
文章版权声明:除非注明,否则均为xmsdn原创文章,转载或复制请以超链接形式并注明出处。

取消
微信二维码
微信二维码
支付宝二维码