在 Linux 服务器运维中,用户和权限管理是安全的第一道防线。很多服务器被入侵,根本原因就是权限配置不当——比如用 root 跑 Web 服务、目录权限 777 随便给。
今天这篇文章把 Linux 用户、用户组、文件权限的核心知识点串一遍,并给出生产环境的推荐配置。
一、用户和用户组基础
Linux 是多用户系统,每个进程都归属于一个用户。查看当前用户:
whoami
id创建用户:
# 创建普通用户
useradd -m -s /bin/bash zhangsan
# 设置密码
passwd zhangsan
# 创建系统用户(不创建家目录,用于运行服务)
useradd -r -s /usr/sbin/nologin nginx用户信息存储在 /etc/passwd,密码哈希在 /etc/shadow。
二、文件权限三位一体
Linux 文件权限分三段:属主(u)、属组(g)、其他人(o)。
ls -l
# -rwxr-xr-- 1 root www-data 4096 Jul 20 10:00 config.php
# ^^^ ^^^ ^^^
# u g o每段三个位:读(r=4)、写(w=2)、执行(x=1)。
常用命令:
# 数字方式
chmod 755 script.sh # rwxr-xr-x
chmod 644 config.php # rw-r--r--
chmod 600 id_rsa # rw-------
# 符号方式
chmod u+x script.sh # 属主加执行
chmod g-w file.txt # 属组去写
chmod o= file.txt # 其他人无权限三、chown 更改归属
# 改属主
chown zhangsan file.txt
# 改属主和属组
chown zhangsan:www-data /var/www/html
# 递归修改(慎用!)
chown -R www-data:www-data /var/www/html四、生产环境最佳实践
1. 永远不要用 root 运行 Web 服务
# 为每个网站创建独立用户
useradd -r -s /usr/sbin/nologin site-a
chown -R site-a:site-a /var/www/site-a2. 最小权限原则
- Web 目录:755(目录)/ 644(文件)
- 上传目录:755,属主为 Web 用户
- 配置文件(含密码):600,属主为 Web 用户
- SSH 私钥:600
3. sudo 精细化授权
不要直接给 sudo su,而是精确授权:
visudo
# 添加:
zhangsan ALL=(ALL) /usr/bin/systemctl restart nginx4. 定期检查异常权限
# 查找 777 文件
find / -type f -perm 0777 2>/dev/null
# 查找无属主文件(可能来自已删除用户)
find / -nouser -o -nogroup 2>/dev/null
# 查找 SUID 文件(潜在提权风险)
find / -perm -4000 -type f 2>/dev/null五、特殊权限位
# SUID:以文件属主身份执行
chmod u+s /usr/bin/passwd # 普通用户也能改密码
# SGID:继承目录属组
chmod g+s /shared # 目录内新文件自动继承组
# Sticky:只有属主能删除
chmod +t /tmp # /tmp 标准配置总结
权限管理没什么高深的理论,关键是要养成习惯:建用户不偷懒、给权限不手松、查异常要定期。把基础打牢,能挡住 80% 的安全问题。
评论