如何用命令行新建一个带超管权限的账号
用户管理基础
1. 创建用户组并指定 GID
# 创建用户组,指定 GID 为 1002
sudo groupadd -g 1002 www
# 不指定 GID(系统自动分配)
sudo groupadd www
2. 添加用户并指定 UID
# 创建用户并加入 www 组
sudo useradd -g www -u 1003 -m -s /bin/bash www
# 参数说明:
# -g : 指定主用户组
# -u : 指定用户 ID
# -m : 创建用户主目录
# -s : 指定登录 shell
3. 修改用户密码
sudo passwd www
4. 删除用户
# 删除用户(保留主目录)
sudo userdel www
# 删除用户及其主目录
sudo userdel -r www
Sudo 权限配置
添加用户到 sudo 组
# Debian/Ubuntu 系统
sudo usermod -a -G sudo www
# CentOS/RHEL 系统
sudo usermod -a -G wheel www
查看用户所属组
groups www
# 输出: www : www sudo
Ubuntu 系统默认管理员组
Ubuntu 第一个默认账号加入的组:
adm cdrom sudo dip plugdev lpadmin sambashare
完整示例:创建 Web 服务用户
# 1. 创建用户组
sudo groupadd -g 1002 webapps
# 2. 创建用户
sudo useradd -g webapps -u 1003 -m -s /bin/bash webapp
# 3. 设置密码
sudo passwd webapp
# 4. 添加 sudo 权限
sudo usermod -a -G sudo webapp
# 5. 验证
su - webapp
sudo ls /root
Sudoers 文件配置
编辑 sudoers 文件
# 安全的编辑方式(会检查语法)
sudo visudo
# 直接编辑(不推荐)
sudo nano /etc/sudoers
常用配置示例
# 允许用户执行所有命令(无需密码)
username ALL=(ALL) NOPASSWD: ALL
# 允许用户执行所有命令(需要密码)
username ALL=(ALL) ALL
# 允许用户执行特定命令
username ALL=(ALL) /usr/bin/systemctl restart nginx, /usr/bin/systemctl stop nginx
# 限制只有特定 IP 可以使用 sudo
username 192.168.1.100=(ALL) ALL
用户组权限配置
# 允许 sudo 组所有成员执行命令
%sudo ALL=(ALL:ALL) ALL
# 允许 wheel 组无密码 sudo(CentOS)
%wheel ALL=(ALL) NOPASSWD: ALL
查看和管理
查看所有用户
cat /etc/passwd | grep -v nologin | grep -v false
查看所有用户组
cat /etc/group
锁定/解锁用户
# 锁定用户(禁止登录)
sudo passwd -l username
# 解锁用户
sudo passwd -u username
设置用户过期时间
# 设置账户过期日期
sudo usermod -e 2025-12-31 username
# 查看账户过期信息
sudo chage -l username
常见问题
Q: 为什么新用户无法使用 sudo?
A: 检查用户是否在正确的管理员组中:
# Ubuntu
groups username # 应该包含 sudo
# CentOS
groups username # 应该包含 wheel
Q: 如何免密使用 sudo?
A: 编辑 sudoers 添加 NOPASSWD:
sudo visudo
# 添加:username ALL=(ALL) NOPASSWD: ALL
最佳实践
- 不要给普通用户 root 权限 - 只授予必要的最小权限
- 使用用户组管理权限 - 便于批量管理
- 禁用 root 远程登录 - 提高服务器安全性
- 记录 sudo 操作日志 - 审计用户行为
# 启用 sudo 日志(Debian/Ubuntu)
sudo visudo
# 添加:Defaults logfile="/var/log/sudo.log"