Linux 中新增用户的方法
目录
1. 使用 useradd 命令(推荐)
1.1 基本语法
useradd [选项] 用户名1.2 常用选项
-m或--create-home: 创建用户主目录-d或--home-dir HOME_DIR: 指定用户主目录路径-s或--shell SHELL: 指定用户的默认 shell-g或--gid GROUP: 指定用户的主要组-G或--groups GROUPS: 指定用户的附加组(多个组用逗号分隔)-u或--uid UID: 指定用户 ID-c或--comment COMMENT: 添加用户注释(通常是全名)
1.3 示例
# 创建用户并自动创建主目录
sudo useradd -m username
# 创建用户并指定 shell
sudo useradd -m -s /bin/bash username
# 创建用户并指定主目录
sudo useradd -m -d /home/customdir username
# 创建用户并指定组
sudo useradd -m -g users -G sudo,www-data username
# 创建用户并指定 UID
sudo useradd -m -u 1001 username
# 创建用户并添加注释
sudo useradd -m -c "User Full Name" username2. 使用 adduser 命令(交互式,Debian/Ubuntu)
2.1 基本用法
sudo adduser username2.2 特点
- 交互式创建用户
- 自动创建主目录
- 自动设置密码
- 自动创建同名组
- 提示输入用户信息(全名、房间号、工作电话等)
2.3 示例
# 交互式创建用户
sudo adduser username
# 非交互式创建用户(跳过提示)
sudo adduser --disabled-password --gecos "" username3. 创建用户后的必要操作
3.1 设置密码
# 使用 passwd 命令设置密码
sudo passwd username3.2 赋予 sudo 权限(可选)
# 方法1: 添加到 sudo 组
sudo usermod -aG sudo username
# 方法2: 编辑 sudoers 文件
sudo visudo
# 添加以下行:
# username ALL=(ALL:ALL) ALL3.3 验证用户创建
# 查看用户信息
id username
# 查看用户详细信息
finger username # 如果安装了 finger
getent passwd username3.4 用户主目录管理
3.4.1 创建用户主目录
# 创建用户时自动创建主目录(推荐)
sudo useradd -m username
# 如果创建用户时没有创建主目录,手动创建
sudo mkdir -p /home/username
sudo chown username:username /home/username
sudo chmod 755 /home/username3.4.2 复制默认配置文件到主目录
# 复制默认配置文件(.bashrc, .profile 等)
sudo cp /etc/skel/.bashrc /home/username/
sudo cp /etc/skel/.profile /home/username/
sudo cp -r /etc/skel/. /home/username/
# 设置正确的所有者和权限
sudo chown -R username:username /home/username
sudo chmod -R 755 /home/username3.4.3 修改用户主目录
# 修改用户主目录路径
sudo usermod -d /new/home/path username
# 移动现有主目录到新位置
sudo mv /home/username /new/home/path
sudo chown -R username:username /new/home/path3.4.4 设置主目录权限
# 设置主目录权限(只有所有者可访问)
sudo chmod 700 /home/username
# 设置主目录权限(所有者可读写执行,组和其他用户无权限)
sudo chmod 755 /home/username
# 递归设置主目录下所有文件权限
sudo chmod -R 700 /home/username
sudo chown -R username:username /home/username3.4.5 查看用户主目录
# 查看用户主目录路径
grep username /etc/passwd | cut -d: -f6
# 或者使用 getent
getent passwd username | cut -d: -f6
# 查看主目录详细信息
ls -ld ~username
ls -la /home/username3.5 设置登录时的默认账号
3.5.1 设置默认登录用户(图形界面)
3.5.1.1 使用 systemd 的自动登录(systemd 系统)
# 编辑自动登录配置
sudo nano /etc/systemd/logind.conf
# 找到并修改以下行(取消注释并设置)
# NAutoVTs=6
# ReserveVT=6
# KillUserProcesses=no
# 编辑 getty 服务配置
sudo systemctl edit getty@tty1.service
# 添加以下内容:
[Service]
ExecStart=
ExecStart=-/sbin/agetty --autologin username --noclear %I $TERM3.5.1.2 使用 LightDM(Ubuntu/Linux Mint)
# 编辑 LightDM 配置文件
sudo nano /etc/lightdm/lightdm.conf
# 在 [Seat:*] 部分添加:
autologin-user=username
autologin-user-timeout=03.5.1.3 使用 GDM(GNOME 显示管理器)
# 编辑 GDM 配置文件
sudo nano /etc/gdm3/custom.conf
# 在 [daemon] 部分添加:
AutomaticLogin=username
AutomaticLoginEnable=true3.5.1.4 使用 SDDM(KDE Plasma)
# 编辑 SDDM 配置文件
sudo nano /etc/sddm.conf
# 添加以下内容:
[Autologin]
User=username
Session=plasma.desktop3.5.2 设置默认 Shell
# 创建用户时指定默认 shell
sudo useradd -m -s /bin/bash username
# 修改现有用户的默认 shell
sudo chsh -s /bin/bash username
# 或者使用 usermod
sudo usermod -s /bin/bash username
# 查看可用的 shell
cat /etc/shells
# 查看用户的当前 shell
grep username /etc/passwd | cut -d: -f73.5.3 设置默认用户组
# 创建用户时指定主要组
sudo useradd -m -g users username
# 修改用户的主要组
sudo usermod -g groupname username
# 查看用户的组信息
groups username
id username3.5.4 设置默认环境变量
# 编辑用户的 .bashrc 文件
nano ~/.bashrc
# 或者编辑全局配置文件
sudo nano /etc/bash.bashrc
sudo nano /etc/profile
# 添加环境变量示例:
export PATH=$PATH:/usr/local/bin
export EDITOR=nano
export LANG=zh_CN.UTF-83.5.5 设置默认工作目录
# 在用户的 .bashrc 中添加
cd /path/to/default/directory
# 或者在 .profile 中添加
cd $HOME/projects3.5.6 配置 SSH 默认登录用户
# 编辑 SSH 客户端配置
nano ~/.ssh/config
# 添加以下内容:
Host myserver
HostName server.example.com
User username
Port 22
IdentityFile ~/.ssh/id_rsa
# 这样可以直接使用:ssh myserver3.5.7 设置系统默认用户(系统服务)
# 查看系统默认用户设置
cat /etc/default/useradd
# 编辑默认设置
sudo nano /etc/default/useradd
# 常见配置项:
# GROUP=100 # 默认组 ID
# HOME=/home # 默认主目录位置
# INACTIVE=-1 # 密码过期后的宽限天数
# EXPIRE= # 账户过期日期
# SHELL=/bin/bash # 默认 shell
# SKEL=/etc/skel # 骨架目录
# CREATE_MAIL_SPOOL=yes # 是否创建邮件目录3.5.8 禁用自动登录(安全考虑)
# 移除自动登录配置
sudo nano /etc/lightdm/lightdm.conf
# 注释掉或删除 autologin-user 行
# 或者
sudo nano /etc/gdm3/custom.conf
# 注释掉或删除 AutomaticLogin 行
# 重启显示管理器
sudo systemctl restart lightdm
# 或
sudo systemctl restart gdm34. 切换用户的方法
4.1 使用 su 命令
4.1.1 基本语法
su [选项] [用户名]4.1.2 常用选项
-或-l或--login: 完全登录(加载目标用户的环境变量)-c或--command: 以目标用户身份执行单个命令-s或--shell: 指定要使用的 shell-m或-p或--preserve-environment: 保持当前环境变量
4.1.3 示例
# 切换到 root 用户(需要输入 root 密码)
su
# 切换到 root 用户并加载完整环境
su -
# 切换到指定用户
su username
# 切换到指定用户并加载完整环境
su - username
# 以目标用户身份执行单个命令
su -c "command" username
# 切换到用户并保持当前环境变量
su -m username4.2 使用 sudo 命令
4.2.1 基本语法
sudo [选项] 命令4.2.2 切换到其他用户
# 切换到 root 用户(需要当前用户有 sudo 权限)
sudo su
# 切换到 root 用户并加载完整环境
sudo su -
# 切换到指定用户
sudo su username
# 切换到指定用户并加载完整环境
sudo su - username
# 以指定用户身份执行命令
sudo -u username command4.3 使用 sudo -i 命令
# 切换到 root 用户并启动交互式登录 shell
sudo -i
# 切换到指定用户并启动交互式登录 shell
sudo -i -u username4.4 使用 sudo -s 命令
# 切换到 root 用户并启动 shell(不加载完整环境)
sudo -s
# 切换到指定用户并启动 shell
sudo -s -u username4.5 退出切换的用户
# 退出当前用户会话,返回到之前的用户
exit
# 或者使用快捷键
Ctrl + D4.6 查看当前用户
# 查看当前登录的用户名
whoami
# 查看当前用户 ID
id
# 查看当前用户详细信息
id -a
# 查看所有登录的用户
who
# 查看当前用户和切换历史
w4.7 su 和 sudo 的区别
| 特性 | su | sudo |
|---|---|---|
| 密码要求 | 需要目标用户的密码 | 需要当前用户的密码 |
| 权限控制 | 切换到目标用户后拥有其所有权限 | 可以精细控制权限 |
| 审计日志 | 基本日志 | 详细的审计日志 |
| 安全性 | 需要共享 root 密码 | 更安全,不需要共享密码 |
| 使用场景 | 完全切换用户身份 | 临时提升权限执行命令 |
4.8 实际应用场景
4.8.1 临时切换到 root 执行管理任务
# 方法1: 使用 sudo(推荐)
sudo command
# 方法2: 使用 su
su -c "command"
# 方法3: 切换到 root 后执行
sudo su -
# 执行命令
# exit4.8.2 切换到普通用户测试
# 从 root 切换到普通用户
su - username
# 从普通用户切换到另一个普通用户(需要目标用户密码)
su - username4.8.3 以其他用户身份运行服务
# 以 www-data 用户运行命令
sudo -u www-data command
# 以 postgres 用户运行命令
sudo -u postgres psql4.9 安全注意事项
避免使用 su 切换到 root: 推荐使用
sudo而不是su,因为:- 不需要共享 root 密码
- 有详细的审计日志
- 可以精细控制权限
使用 sudo 的最佳实践:
# 只执行需要的命令,而不是切换到 root sudo command # 推荐 # 避免长时间以 root 身份运行 sudo su - # 不推荐,除非必要- 限制 sudo 权限: 在
/etc/sudoers中只授予必要的权限 - 使用 sudo 超时: sudo 默认在 15 分钟内记住密码,超时需要重新输入
5. 完整创建用户流程示例
5.1 使用 useradd 的完整流程
# 1. 创建用户
sudo useradd -m -s /bin/bash -c "John Doe" john
# 2. 设置密码
sudo passwd john
# 3. 添加到 sudo 组(可选)
sudo usermod -aG sudo john
# 4. 验证
id john5.2 使用 adduser 的完整流程
# 一步完成(交互式)
sudo adduser john
# 按提示输入密码和信息即可6. 高级选项
6.1 指定用户 ID 范围
# 查看当前系统用户 ID 范围
grep UID_MIN /etc/login.defs
grep UID_MAX /etc/login.defs
# 创建系统用户(UID < 1000)
sudo useradd -r -s /bin/false systemuser6.2 创建用户时指定多个附加组
sudo useradd -m -G sudo,docker,www-data username6.3 设置用户过期时间
# 使用 chage 命令
sudo chage -E 2024-12-31 username7. 相关配置文件
7.1 用户信息文件
/etc/passwd: 用户账户信息/etc/shadow: 用户密码信息(加密)/etc/group: 组信息/etc/gshadow: 组密码信息
7.2 默认设置文件
/etc/login.defs: 用户创建的默认设置/etc/default/useradd: useradd 的默认配置
8. 删除用户
8.1 删除用户但保留主目录
sudo userdel username8.2 删除用户及其主目录
sudo userdel -r username9. 修改用户信息
9.1 使用 usermod 命令
# 修改用户 shell
sudo usermod -s /bin/zsh username
# 修改用户主目录
sudo usermod -d /new/home/path username
# 修改用户组
sudo usermod -g newgroup username
# 添加附加组
sudo usermod -aG groupname username
# 锁定用户账户
sudo usermod -L username
# 解锁用户账户
sudo usermod -U username10. 注意事项
- 权限要求: 创建用户需要 root 权限,使用
sudo或切换到 root 用户 用户名规则:
- 只能包含小写字母、数字、下划线和连字符
- 不能以连字符开头
- 通常建议使用小写字母
- 主目录: 使用
-m选项确保创建主目录,否则用户无法正常登录 - Shell 设置: 确保指定的 shell 存在于
/etc/shells文件中 系统用户 vs 普通用户:
- 系统用户通常 UID < 1000,用于运行服务
- 普通用户 UID >= 1000,用于登录系统
11. 常见问题排查
11.1 用户无法登录
# 检查用户 shell 是否正确
grep username /etc/passwd
# 检查主目录是否存在
ls -la /home/username
# 检查主目录权限
sudo chown -R username:username /home/username11.2 查看用户所属组
groups username
id username11.3 查看所有用户
# 查看所有用户
cat /etc/passwd
# 只查看普通用户(UID >= 1000)
awk -F: '$3 >= 1000 {print $1}' /etc/passwd总结:
- Debian/Ubuntu 系统: 推荐使用
adduser(更简单) - 其他 Linux 发行版: 使用
useradd(更灵活) - 创建后记得设置密码和必要的权限


评论 (0)