2.3 用户、权限与 sudo
Linux 是多用户系统。即使只有你一个人在用一台机器,系统里也会有很多服务用户,比如 www-data、mysql、nginx。权限系统决定谁能读、写、执行哪些文件。
看懂 ls -l
bash
-rwxr-xr-- 1 leaf dev 120 Jun 11 10:00 deploy.sh可以拆成几段:
- 第 1 位:文件类型,
-是普通文件,d是目录。 - 后 9 位:权限,三组三个字符。
leaf:所有者 owner。dev:所属组 group。120:文件大小。- 最后是时间和文件名。
权限三组分别是 owner、group、other。每组都有 r、w、x:
r:读。对目录来说,是查看目录列表。w:写。对目录来说,是创建、删除、重命名目录内项目。x:执行。对目录来说,是进入这个目录。
正在加载概念检查...
chmod 的两种写法
符号写法:
bash
chmod u+x deploy.sh
chmod g-w report.txt
chmod o-r secrets.txt符号写法可以拆成三段:谁 + 怎么改 + 改哪种权限。
u表示 owner,也就是文件所有者;g表示 group,也就是同组用户;o表示 other,也就是其他人;a表示 all,也就是三组全部。+表示增加权限,-表示移除权限,=表示直接覆盖成指定权限。r是读,w是写,x对文件来说是执行,对目录来说是进入/穿过目录。
所以上面三行分别是:
chmod u+x deploy.sh:给deploy.sh的所有者增加执行权限。常见场景是脚本本来可以读写,但不能用./deploy.sh运行。chmod g-w report.txt:从report.txt的同组用户权限里移除写权限。同组用户可能还能读,但不能改这个文件。chmod o-r secrets.txt:从secrets.txt的其他人权限里移除读权限。既不是所有者、也不在所属组的人就不能读取内容。
数字写法:
bash
chmod 755 deploy.sh
chmod 644 report.txt
chmod 600 secrets.txt数字来自 r=4、w=2、x=1。所以 7=4+2+1 是 rwx,5=4+1 是 r-x。
正在加载交互实验...
chown、groups 与 sudo
bash
whoami
groups
sudo command
sudo chown leaf:dev file.txtchown 改所有者和组;groups 查看当前用户属于哪些组;sudo 用更高权限执行命令。
sudo 很强,也很危险。它让你越过普通用户限制,所以删除、覆盖、改权限、安装服务时一定要停一下,确认命令真的只影响你想影响的范围。
正在加载概念检查...
权限排查常见问题
Permission denied:没有对应权限,或目录缺少x。- 脚本不能运行:可能没有执行权限,先
chmod u+x script.sh。 - 服务读不到文件:文件 owner/group 不适合服务用户。
- 上传后权限奇怪:可能受
umask、复制方式或部署工具影响。
不要一遇到权限问题就 chmod 777。这会让所有人可读、可写、可执行,通常是安全隐患。
正在加载本节练习...