## Linux 用户权限管理命令全解析
以下是 Linux 系统中用户权限相关的核心命令详解,包含使用场景、常用选项和实际示例:
用户管理命令
1. useradd - 创建新用户
# 基本用法
sudo useradd [选项] 用户名
# 常用选项
-m # 创建用户主目录(/home/username)
-s # 指定默认shell(如 /bin/bash)
-g # 指定主用户组
-G # 指定附加用户组
-d # 指定主目录路径
-e # 设置账户过期日期(YYYY-MM-DD)
# 创建带主目录的用户并指定shell
sudo useradd -m -s /bin/bash john
# 创建用户并加入附加组
sudo useradd -m -G developers,sysadmin alice2. userdel - 删除用户
# 基本用法
sudo userdel [选项] 用户名
# 常用选项
-r # 同时删除用户主目录和邮件
# 删除用户但保留主目录
sudo userdel john
# 完全删除用户及其文件
sudo userdel -r alice3. usermod - 修改用户属性
# 基本用法
sudo usermod [选项] 用户名
# 常用选项
-aG # 添加附加用户组(-a 表示追加)
-g # 修改主用户组
-s # 修改默认shell
-L # 锁定账户
-U # 解锁账户
# 将用户加入sudo组
sudo usermod -aG sudo john
# 修改用户主组
sudo usermod -g developers alice
# 锁定用户账户
sudo usermod -L john用户组管理命令
4. groupadd - 创建新用户组
# 创建基本用户组
sudo groupadd developers
# 创建系统用户组(GID<1000)
sudo groupadd -r sysadmin5. groupmod - 修改用户组属性
# 修改组名
sudo groupmod -n devs developers
# 修改组ID
sudo groupmod -g 2001 devs6. groupdel - 删除用户组
# 删除空用户组
sudo groupdel devs
# 强制删除非空用户组(需先清空组成员)
sudo groupdel -f sysadmin文件权限命令
7. chmod - 修改文件权限
# 符号模式
chmod [ugoa][+-=][rwx] 文件
# 数字模式
chmod XYZ 文件
# 常用选项
-R # 递归修改
# 设置文件所有者为读写,其他用户只读
chmod u=rw,go=r file.txt
# 递归设置目录权限(rwxr-xr-x)
chmod -R 755 /project/
# 添加执行权限
chmod +x script.sh8. chown - 修改文件所有者
# 基本用法
chown [用户][:组] 文件
# 修改文件所有者
sudo chown john report.txt
# 同时修改所有者和组
sudo chown john:developers project/
# 递归修改目录所有者
sudo chown -R alice:developers /webapp/9. chgrp - 修改文件所属组
# 修改文件所属组
sudo chgrp developers config.ini
# 递归修改目录所属组
sudo chgrp -R sysadmin /logs/权限控制命令
10. umask - 设置默认权限掩码
# 查看当前umask
umask # 输出 0022
# 设置新umask(文件默认权限:666-022=644)
umask 0022
# 永久设置(添加到 ~/.bashrc 或 /etc/profile)
echo "umask 0027" >> ~/.bashrc11. chattr - 修改文件扩展属性
# 基本用法
sudo chattr [+-=][属性] 文件
# 常用属性
+i # 不可修改(免疫删除/重命名)
+a # 只能追加内容(日志文件)
+A # 不更新访问时间
+c # 透明压缩(某些文件系统)
# 设置文件不可修改
sudo chattr +i /etc/passwd
# 设置日志文件只能追加
sudo chattr +a /var/log/syslog12. lsattr - 查看文件扩展属性
# 查看文件属性
lsattr /etc/passwd
# 递归查看目录属性
lsattr -R /etc/ssh/用户信息命令
13. id - 显示用户身份信息
# 显示当前用户信息
id
# 显示指定用户信息
id john
# 输出格式:
# uid=1001(john) gid=1001(john) groups=1001(john),27(sudo)14. who - 显示已登录用户
# 基本用法
who
# 显示详细信息
who -Hu
# 输出示例:
# NAME LINE TIME IDLE PID COMMENT
# john tty1 2023-08-01 09:30 . 123415. whoami - 显示当前用户名
# 简单显示当前用户
whoami
# 输出:john16. last - 显示用户登录历史
# 显示所有登录记录
last
# 显示指定用户登录记录
last john
# 显示重启记录
last reboot权限切换命令
17. su - 切换用户身份
# 切换到其他用户
su - john # "-" 表示加载目标用户环境
# 切换后返回原用户
exit18. sudo - 以超级用户权限执行命令
# 执行单条命令
sudo apt update
# 以其他用户身份执行
sudo -u john whoami
# 编辑sudoers文件
sudo visudo19. w - 显示登录用户及其活动
# 显示所有登录用户的活动
w
# 精简输出
w -h
# 输出示例:
# 09:30:00 up 10 days, 1 user, load average: 0.00, 0.01, 0.05
# USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
# john tty1 :0 09:15 5.00s 0.10s 0.00s w高级权限命令
20. chpasswd - 批量修改密码
# 从标准输入修改密码
echo "john:newpassword" | sudo chpasswd
# 从文件批量修改
sudo chpasswd < users.txt
# users.txt 格式:
# username1:password1
# username2:password221. chroot - 切换根目录环境
# 创建受限环境
sudo mkdir /jail
sudo chroot /jail /bin/bash
# 用于系统恢复
sudo chroot /mnt/sysroot /bin/bash权限管理最佳实践
最小权限原则:
# 使用sudo代替直接root登录 sudo systemctl restart nginx # 限制sudo权限 # /etc/sudoers 配置: john ALL=(ALL) /usr/bin/systemctl restart nginx, /usr/bin/apt update安全审计:
# 检查空密码账户 sudo awk -F: '($2 == "") {print $1}' /etc/shadow # 检查sudo权限用户 sudo grep -Po '^sudo:\K.*$' /etc/group密码策略:
# 修改密码策略 sudo nano /etc/login.defsPASS_MAX_DAYS 90 PASS_MIN_DAYS 7 PASS_WARN_AGE 14文件权限检查:
# 查找全局可写文件 sudo find / -xdev -type f -perm -0002 -ls # 查找SUID文件 sudo find / -xdev -type f -perm -4000 -ls
命令对比表
| 命令 | 功能描述 | 常用场景 |
|---|---|---|
useradd | 创建新用户 | 系统初始化添加用户 |
usermod | 修改用户属性 | 将用户加入特权组 |
chmod | 修改文件权限 | 设置脚本可执行权限 |
chown | 修改文件所有者 | 项目目录所有权转移 |
sudo | 以特权身份执行命令 | 系统管理操作 |
chattr | 设置文件特殊属性 | 保护关键配置文件 |
chroot | 创建受限环境 | 系统恢复/安全沙箱 |
umask | 设置默认权限掩码 | 控制新建文件默认权限 |
提示:所有特权命令(如 useradd、chown 等)通常需要 root 权限执行,使用 sudo 前缀或切换到 root 账户。生产环境中建议通过配置管理工具(如 Ansible)批量管理用户权限。
评论 (0)