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

XMSDN

在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. 验证结果:

    
    
💡 温馨提示

📌 阅读须知 Rules & Notice

本站坚持免费分享,致力于为大家提供实用、优质的内容与资源。

🔗欢迎大家收藏与转发,转载请保留本站链接,请勿私自去除版权信息。

📚所有外部整理资源,仅作学习交流使用,请勿用于各类商业用途。

🤝网络相聚本是缘分,希望大家文明交流,理性浏览。

🛠️若发现内容有误或涉及侵权,我们将第一时间处理整改。

💖 感谢每一位朋友的陪伴与支持

✨ 用心分享,一路同行 ✨

目录[+]