在 Linux 系统管理中,用户和权限管理是最基础的工作之一。新建用户时,有时只需简单的一条命令,有时也需要更细粒度的 UID/GID 配置。本文总结了在 RockyLinux、CentOS、Ubuntu 等常见发行版下使用 useraddadduser 的方法和注意事项。


一、useraddadduser 的区别

  • useradd

    • 底层工具,所有发行版都支持。
    • 执行后无提示信息,返回 0 即代表成功。
    • 适合自动化脚本。
  • adduser

    • 在 Debian/Ubuntu 上是对 useradd 的友好封装(Perl 脚本),交互式,有提示。
    • 在 RockyLinux/CentOS 上 adduser 只是 useradd 的软链接,行为完全相同,也不会有提示信息

👉 所以:在 RockyLinux/CentOS 下用 adduseruseradd,而在 Ubuntu/Debian 下 adduser 更适合手动创建用户。


二、最常见的用户创建方式

在大多数情况下,你不需要额外创建组,系统会自动完成。

1. 创建普通用户(推荐方式)

sudo useradd -m langpusi
sudo passwd langpusi

说明:

  • -m:自动创建家目录 /home/langpusi
  • 系统会自动创建一个与用户名相同的组 langpusi,并将用户设置为该组的成员。

验证:

id langpusi

输出示例:

uid=1001(langpusi) gid=1001(langpusi) groups=1001(langpusi)

2. 创建指定 UID 的用户

有时需要与其他系统保持 UID 一致(例如挂载 NFS 或科研集群环境)。

sudo useradd -u 1500 -m langpusi
sudo passwd langpusi

3. 把用户加入已有组(附加组)

例如多个用户需要共享 /data/upload 目录,可以这样:

# 先建一个共享组(仅第一次需要)
sudo groupadd upload

# 创建用户,并指定 upload 作为主组
sudo useradd -m -g upload langpusi
sudo passwd langpusi

# 或者把已有用户追加到 upload 组
sudo usermod -aG upload langpusi

验证:

id langpusi

输出示例:

uid=1001(langpusi) gid=1001(upload) groups=1001(upload),1002(langpusi)

4. 指定 Shell

默认新用户的登录 Shell 可能是 /bin/sh,如果需要 bash

sudo useradd -m -s /bin/bash langpusi

三、验证用户和组

  • 查看用户信息:
id langpusi
  • 查看 /etc/passwd/etc/group
grep langpusi /etc/passwd
grep upload /etc/group

四、关于“没有提示信息”

很多朋友在 RockyLinux/CentOS 下执行 useraddadduser 时发现“没有任何提示”。 这是正常的,因为:

  • Linux 的设计哲学:无输出即成功
  • 如果出错(如 UID 冲突、组不存在),系统才会报错。

因此,不要担心“没提示”,只要通过 id langpusi 验证即可。


五、总结

  • 最常用useradd -m langpusi && passwd langpusi
  • 默认会建同名组,不必手动 groupadd
  • 只有在多人共享目录或需要固定 UID/GID 时才手动建组。
  • 在 RockyLinux/CentOS:adduser = useradd,没有提示。
  • 在 Ubuntu/Debian:adduser 提供交互提示,适合手动操作。