当前位置:首页 > Linux > 正文

如何在Linux中添加用户?

在Linux中添加用户使用 useraddadduser命令,以root权限执行 sudo useradd -m 用户名创建用户并生成家目录,再通过 sudo passwd 用户名设置密码即可完成。

在Linux系统中添加用户是系统管理的基础操作,无论是部署服务器、分配权限还是多用户环境管理,都需要掌握此技能,以下为详细操作指南,涵盖命令行工具、配置选项及安全建议,所有步骤均需root权限(使用sudo前缀或切换至root账户执行)。


核心命令:useraddadduser

useradd(基础工具)

  • 基本语法
    sudo useradd [选项] 用户名
  • 常用选项
    • -m:创建用户家目录(默认位于/home/用户名)。
    • -s /bin/bash:指定登录Shell(如/bin/zsh)。
    • -c "备注信息":添加用户描述(如全名)。
    • -G 组名:将用户添加到附加组(如sudo组赋予管理员权限)。
    • -e YYYY-MM-DD:设置账户过期时间。
  • 示例
    sudo useradd -m -s /bin/bash -c "开发人员" -G developers,ftp john

adduser(交互式工具,推荐新手)

  • 部分Linux发行版(如Debian/Ubuntu)提供更友好的交互式流程:
    sudo adduser john

    执行后按提示输入密码、全名等信息。


关键操作步骤

设置用户密码

使用passwd命令为新建用户设置密码:

如何在Linux中添加用户?  第1张

   sudo passwd john
  • 输入两次密码(密码不显示),需符合系统密码策略(长度、复杂度)。

自定义用户家目录

通过-d选项指定自定义家目录路径:

   sudo useradd -m -d /data/users/john john

用户组管理

  • 添加用户到附加组(如sudo组):
    sudo usermod -aG sudo john  # -aG表示追加(不覆盖原有组)
  • 创建新用户组并加入
    sudo groupadd developers
    sudo usermod -aG developers john

修改用户属性

使用usermod调整现有用户:

   sudo usermod -s /bin/zsh john   # 更改Shell
   sudo usermod -L john            # 锁定账户(禁止登录)
   sudo usermod -U john            # 解锁账户

配置文件解析

/etc/passwd

存储用户基本信息,每行格式为:

   john:x:1001:1001:开发人员:/home/john:/bin/bash
  • 含义:用户名:密码占位符:UID:GID:描述:家目录:Shell

/etc/shadow

存储加密密码及策略(仅root可读):

   john:$6$加密密码...:19157:0:99999:7:::
  • 字段含义:密码最后修改日期、最小/最大密码有效期等。

/etc/skel/

  • 模板目录,新建用户时自动复制此目录内容到家目录。
  • 可预置.bashrc.profile等配置文件。

删除用户

完全删除用户及相关文件

   sudo userdel -r john  # -r同时删除家目录和邮件

保留用户文件

   sudo userdel john     # 仅删除用户,保留/home/john

安全与最佳实践

  1. 最小权限原则
    • 避免赋予普通用户sudo权限,必要时通过visudo精细配置。
  2. 密码策略
    • 使用chage设置密码过期时间:
      sudo chage -M 90 -m 7 -W 14 john  # 90天有效期,提前14天警告
  3. 禁用Shell访问
    • 创建仅用于服务的用户(如运行数据库):
      sudo useradd -m -s /usr/sbin/nologin dbuser

常见问题排查

  • 用户无家目录:忘记加-m选项 → 用mkhomedir_helper john手动创建。
  • 权限拒绝:确保命令前加sudo或切换至root账户。
  • 用户组未生效:用户需重新登录或执行newgrp 组名

引用说明: 基于Linux标准文档(man useradd)、Filesystem Hierarchy Standard (FHS) 及开源社区最佳实践,具体命令行为可能因发行版(如CentOS与Ubuntu差异)略有不同,建议查阅官方手册:

  • Linux man-pages
  • Debian User Management
  • Red Hat System Administrator’s Guide
0