Linux快速创建用户教程

在Linux中使用useradd命令创建用户(如useradd username),随后用passwd username为其设置密码,最后可通过id username验证用户是否创建成功。

在 Linux 系统中创建新用户是一项基础且关键的管理任务,无论是用于多用户环境、服务账户隔离还是权限管理,本文将详细介绍两种最常用、最推荐的方法:useradd 命令和 adduser 脚本(在 Debian/Ubuntu 及其衍生版中),并涵盖重要的后续配置和安全注意事项。

Linux快速创建用户教程

核心前提:你需要 root 权限

创建用户需要修改系统级的文件和目录(如 /etc/passwd, /etc/shadow, /etc/group, /home 等)。你必须拥有 root 权限,通常通过以下两种方式之一实现:

  1. 直接以 root 用户登录: 不推荐日常使用,安全性较低。
  2. 使用 sudo 命令: 强烈推荐,这允许被授权(通常在 sudoers 文件中配置)的普通用户临时以 root 权限执行命令,本文后续命令将默认使用 sudo

使用 useradd 命令(通用、灵活)

useradd 是 Linux 发行版中最基础、最通用的用户创建工具,它提供了精细的控制选项。

基本语法:

sudo useradd [选项] 用户名

常用选项详解:

  • -m--create-home至关重要! 为新用户创建其主目录(通常是 /home/用户名),如果省略此选项,用户将没有主目录,登录后可能遇到问题。
  • -d /path/to/home--home /path/to/home:指定自定义的主目录路径(而不是默认的 /home/用户名),通常与 -m 一起使用。
  • -s /path/to/shell--shell /path/to/shell:指定用户的登录 Shell,常见的 Shell 有:
    • /bin/bash:功能强大的 Bourne-Again Shell (Bash),大多数发行版的默认 Shell。
    • /bin/sh:Bourne Shell 或其兼容链接(通常是 Dash 或 Bash)。
    • /usr/sbin/nologin/sbin/nologin用于服务账户,禁止该用户通过 Shell 登录系统,但进程可以以其身份运行。创建服务用户时常用
    • /bin/false:类似 nologin,立即退出,效果相同。
  • -g 主组名--gid 主组名/GID:指定用户的初始登录组(主组),组名或 GID(组 ID)必须已存在,如果省略,系统通常创建一个与用户名同名的新组作为其主组(在 RHEL/CentOS 等上),或者在 Debian/Ubuntu 上默认使用一个名为 users 的组(具体行为取决于 /etc/login.defs 配置)。
  • -G 附加组1,附加组2,...--groups 附加组1,附加组2,...:指定用户所属的附加组(辅助组),多个组名用逗号分隔,不要有空格,这赋予用户额外的权限(由这些组的权限定义)。sudo -G sudo,developers newusernewuser 加入 sudodevelopers 组。
  • -c "注释"--comment "注释":为用户添加一段描述性注释,通常是全名或描述(会出现在 /etc/passwd 的 GECOS 字段)。-c "John Doe, DevOps Engineer"
  • -u UID--uid UID:手动指定用户的 UID(用户 ID),通常系统会自动分配一个未使用的最小 UID(>= 1000 或 500 用于普通用户),仅在特殊需求(如 UID 映射)时使用。
  • -p 加密密码--password 加密密码极其不推荐直接使用! 此选项要求提供 已经加密 的密码字符串(如 $6$salt$hashedpassword),直接在命令行传递明文密码或加密密码存在安全风险(命令历史记录)。强烈建议使用 passwd 命令单独设置密码(见下文)。
  • -k /path/to/skel--skel /path/to/skel:指定一个包含默认配置文件(如 .bashrc, .profile)的骨架目录(Skeleton Directory),复制到新用户的主目录,默认通常是 /etc/skel,修改 /etc/skel 可以定制所有新用户的默认环境。
  • -e YYYY-MM-DD--expiredate YYYY-MM-DD:设置用户账户的过期日期,过期后用户将无法登录,格式:YYYY-MM-DD
  • -f INACTIVE--inactive INACTIVE:设置密码过期后,账户被永久禁用前的天数(宽限期),0 表示密码一过期就立即禁用,-1 表示禁用此功能(默认值)。

典型示例:

  1. 创建用户 johndoe,创建主目录,使用 Bash Shell:

    sudo useradd -m -s /bin/bash johndoe
    • 系统会自动创建一个名为 johndoe 的组作为其主组。
    • 主目录 /home/johndoe 会被创建,并从 /etc/skel 复制基本配置文件。
  2. 创建用户 webserver,创建主目录 /srv/web,禁止登录 Shell(用于服务):

    Linux快速创建用户教程

    sudo useradd -m -d /srv/web -s /usr/sbin/nologin webserver
  3. 创建用户 sarah,创建主目录,指定主组为 developers,附加组为 designerssudo,添加全名注释:

    sudo useradd -m -s /bin/bash -g developers -G designers,sudo -c "Sarah Connor" sarah
    • 确保 developers, designers, sudo 这些组已经存在(可用 groupadd 创建)。

使用 adduser 脚本(Debian/Ubuntu 等 – 交互式、用户友好)

在 Debian、Ubuntu 及其衍生发行版中,adduser 是一个更高级、交互式的 Perl 脚本,它封装了 useradd 和其他命令(如 passwd, chfn),并提供了更友好的提示式界面,它自动执行了 useradd -m 的行为(创建主目录),并引导你设置密码和用户信息

基本语法:

sudo adduser [选项] 用户名

常用选项:

  • --system:创建一个系统用户(UID < 1000,无主目录,Shell 为 /usr/sbin/nologin/bin/false),适用于服务账户。
  • --disabled-login:创建用户但不设置密码(密码字段在 /etc/shadow 为 或 ),禁止密码登录,稍后可通过 passwd 启用。
  • --gecos "注释":同 useradd-c,非交互式设置注释信息。
  • --ingroup 组名:指定主组(同 useradd-g)。
  • --home /path/to/home:指定主目录路径(同 useradd-d)。
  • --shell /path/to/shell:指定 Shell(同 useradd-s)。
  • --uid UID:指定 UID(同 useradd-u)。
  • --quiet:减少输出信息。

典型交互过程:

sudo adduser johndoe

执行后,脚本会提示你:

  1. 设置并确认新用户的密码(输入时不可见)。
  2. 输入用户的全名(GECOS 字段)和其他信息(房间号、工作电话、家庭电话),这些字段通常可以按 Enter 跳过。
  3. 最后确认信息是否正确(输入 Y)。

重要后续步骤:设置密码

无论使用 useradd 还是 adduser(除非使用了 --disabled-login-p),为新用户设置一个安全的密码是必须的

Linux快速创建用户教程

sudo passwd 用户名

系统会提示你输入并确认新密码,输入时密码不可见。

  • 安全最佳实践:
    • 使用强密码(长度、复杂度)。
    • 定期要求用户更改密码(通过 /etc/login.defsPASS_MAX_DAYS 等配置)。
    • 对于服务账户(使用 nologin/false Shell),不需要也不应该设置可登录的密码,账户状态应保持为锁定( 或 在 /etc/shadow 的密码字段),服务应通过其他机制(如密钥、服务管理器配置)运行。

验证用户创建

检查用户信息:

id 用户名  # 显示 UID, GID, 所属组
finger 用户名  # 显示用户信息(可能需要安装 `finger` 包)
grep '^用户名' /etc/passwd  # 查看 /etc/passwd 中的条目
ls -ld /home/用户名  # 检查主目录是否存在及权限 (如果创建了)

关键配置文件和目录

  • /etc/passwd:存储用户账户信息(用户名、UID、GID、注释、主目录、Shell)。
  • /etc/shadow:存储加密后的用户密码及密码策略(仅 root 可读)。
  • /etc/group:存储组信息。
  • /etc/login.defs:定义用户创建的默认设置(如 UID/GID 范围、主目录权限模版 UMASK、密码策略默认值等),修改此文件会影响后续所有 useradd 命令的行为。
  • /etc/skel/:骨架目录,当使用 -m 选项时,此目录下的文件和子目录会被复制到新用户的主目录中,管理员可以在此放置标准的配置文件(如 .bashrc, .profile, .vimrc)。

安全与最佳实践 (E-A-T 重点)

  1. 最小权限原则: 只赋予用户完成其工作所必需的最小权限,避免轻易将用户加入 sudo 组,如果需要管理员权限,考虑更细粒度的 sudo 规则配置(使用 visudo 编辑 /etc/sudoers)。
  2. 强密码策略: 强制执行密码长度、复杂度和有效期(配置 /etc/login.defs/etc/pam.d/common-password)。
  3. 服务账户: 为运行应用程序或服务的进程创建专用用户(使用 -r/--system-s /usr/sbin/nologin)。永远不要给服务账户设置可登录的 Shell 或密码。
  4. 禁用未使用账户: 对于不再需要的用户,使用 sudo usermod -L 用户名 锁定账户(在 /etc/shadow 密码字段前加 ),或者使用 sudo userdel 用户名 删除账户(userdel -r 用户名 会同时删除主目录和邮件假脱机文件)。
  5. 定期审计: 定期检查 /etc/passwd/etc/shadow/etc/groupsudo 权限,确保没有未授权或配置错误的账户。
  6. 主目录权限: 确保用户主目录权限正确(通常应为 700drwx------),使其仅对所有者可读、写、执行,检查 /etc/login.defs 中的 UMASK 设置(如 UMASK 022 会创建权限为 755 的目录)。
  7. 使用 sudo 避免直接使用 root 账户进行日常操作和管理,使用 sudo 并配置好 sudoers 文件。
  8. 了解发行版差异: 不同发行版(如 RHEL/CentOS vs Debian/Ubuntu)在默认组、/etc/login.defs 设置和 adduser 可用性上可能有细微差别,查阅你的发行版文档。

选择哪种方法?

  • useradd 通用、灵活、脚本友好,适合需要精确控制所有参数、编写自动化脚本或在所有发行版上工作的情况。务必记住 -m 选项来创建主目录。
  • adduser (Debian/Ubuntu): 交互式、用户友好、自动化了多个步骤(创建主目录、设置密码、提示信息),适合手动在 Debian/Ubuntu 系统上创建用户,简化了流程。

引用说明:

  • Linux useradd 手册页 (man useradd)
  • Linux adduser 手册页 (man adduser – 在支持它的系统上)
  • Linux passwd 手册页 (man passwd)
  • Linux usermod 手册页 (man usermod)
  • Linux groupadd 手册页 (man groupadd)
  • Linux id 手册页 (man id)
  • Linux 文件格式手册页 (man 5 passwd, man 5 shadow, man 5 group, man 5 login.defs)
  • Debian adduser 文档
  • Red Hat / CentOS 系统管理员指南中关于用户管理的章节
  • Linux 基金会 (Linux Foundation) 和各大发行版官方文档中关于用户和组管理的权威指南。

原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/31434.html

(0)
酷盾叔的头像酷盾叔
上一篇 2025年6月19日 22:34
下一篇 2025年6月12日 04:38

相关推荐

  • Mac装Linux双系统简单吗

    在Mac上安装Linux主要有两种方式:使用虚拟机软件(如Parallels或VirtualBox)或创建启动U盘进行双系统安装,双系统需先备份数据,使用启动盘制作工具创建Linux安装盘,重启Mac按住Option键选择U盘启动,并按提示分区安装即可,注意部分Mac硬件兼容性。

    2025年6月2日
    200
  • Linux怎么提取含关键词的行

    在Linux中提取含有特定字段的行,使用grep命令最便捷,基本语法为:grep “字段” 文件名,grep “error” log.txt会输出所有包含”error”的行,支持正则表达式,可用-i忽略大小写,-r`递归搜索目录。

    2025年6月18日
    000
  • Linux如何开启80端口?

    在Linux中开启80端口通常需配置防火墙,使用命令sudo ufw allow 80(UFW)或sudo firewall-cmd –zone=public –add-port=80/tcp –permanent(firewalld),执行后重载防火墙规则(firewall-cmd –reload或ufw reload),若防火墙关闭,临时启用命令sudo systemctl start firewalld或sudo ufw enable。

    2025年5月31日
    400
  • Linux新手必学命令输入技巧

    打开Linux终端(桌面菜单或快捷键启动),在命令提示符后直接输入指令,按回车执行,命令通常由命令名、选项(以短横线开头)和参数组成,系统执行后即显示结果或反馈。

    2025年6月3日
    400
  • Linux时间同步查看命令教程

    查看Linux时间同步状态: ,1. 使用 ntpq -p 检查NTP服务状态及同步源 ,2. 运行 chronyc sources 查看Chrony时间源状态 ,3. 执行 timedatectl status 查看系统时钟同步情况(显示”System clock synchronized: yes”即为同步成功)

    2025年6月11日
    000

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN