Linux的权限系统是服务器安全的基石——谁能读写哪些文件、谁能执行什么操作,都由它管控。用root横冲直撞很危险,理解并善用权限管理,才能让服务器既好用又安全。本文把用户、用户组、文件权限一次讲透。
一、为什么不该总用root?
root是超级管理员,权限无限大。用root跑业务、日常操作的风险:一个误操作(比如 rm错目录)就是灾难、一旦被入侵攻击者直接拿到最高权限、无法追溯是谁做了什么。最佳实践:为日常操作创建普通用户,需要时用sudo临时提权。
二、用户管理
# 创建用户(-m创建家目录)
useradd -m -s /bin/bash zhangsan
passwd zhangsan # 设置密码
# 授予sudo权限(加入sudo组)
usermod -aG sudo zhangsan
# 删除用户(-r连家目录一起删)
userdel -r zhangsan
# 查看当前用户和所属组
id zhangsan
三、用户组:批量管理权限
用户组让你批量管理一组用户的权限。比如创建一个 dev 组,把所有开发者加进去,给这个组授予项目目录权限,管理起来清爽:
groupadd dev # 创建组
usermod -aG dev zhangsan # 把用户加入组
chown :dev /var/project # 把目录的组设为dev
一个用户可以属于多个组,-aG的a表示追加(别漏了a,否则会覆盖掉用户原有的组)。
四、文件权限:读懂那串rwx
ls -l 看到的 -rwxr-xr-- 是权限核心。拆解:
- 第一位:文件类型(
-普通文件,d目录,l链接); - 接下来每3位一组,分别是所有者(u)、所属组(g)、其他人(o)的权限;
- 每组的 r(读=4)、w(写=2)、x(执行=1)。
所以 rwxr-xr-- = 所有者可读写执行(7)、组可读执行(5)、其他人只读(4),即权限 754。
五、chmod修改权限
# 数字方式(最常用)
chmod 755 script.sh # 所有者rwx,组和其他人rx
chmod 644 config.txt # 所有者rw,其他人r
chmod 600 secret.key # 只有所有者能读写(私钥、敏感文件)
# 符号方式
chmod +x script.sh # 给所有人加执行权限
chmod u+w,o-r file # 所有者加写、其他人去读
常用权限速记:目录755、普通文件644、可执行脚本755、敏感文件(密钥/配置)600。
六、chown修改归属
chown zhangsan file # 改所有者
chown zhangsan:dev file # 同时改所有者和组
chown -R www-data:www-data /var/www # -R递归改整个目录(网站目录常用)
网站目录常需归属Web服务器用户(如www-data),否则会出现权限相关的读写错误。
七、sudo:精细化授权
sudo让普通用户临时执行需要权限的命令,操作可追溯。加入sudo组即可用sudo。进阶可编辑 /etc/sudoers(用 visudo)做精细授权——比如只允许某用户执行特定命令,不给完整root权限。这是多人协作服务器的安全关键。
八、权限安全最佳实践
- 日常用普通用户 + sudo,别直接用root干活;
- 敏感文件(密钥、配置)设600,只有所有者可读;
- 网站上传目录别给执行权限,防挂马(参考WordPress安全篇);
- 最小权限原则:用户和进程只给必需的权限;
- 多人协作用用户组管理,离职及时删用户。
结论
Linux权限管理的核心:普通用户+sudo替代root、用户组批量管理、文件权限按需最小化(644/755/600)、chown归属正确。这套系统用好了,服务器既方便多人协作又安全可控。在你的服务器上创建个普通用户、练习chmod/chown,养成不滥用root的好习惯——这是运维安全的基本功。