Linux 入门:十分钟读懂文件权限
刚接触 Linux 的新手,最常遇到的困惑之一就是"Permission denied"。执行 ls -l 时,看到一串 -rwxr-xr-x 这样的字符,很多人第一反应是直接 chmod 777 了事。其实文件权限是 Linux 安全模型的基石,理解它只需要十分钟,却能帮你避开日后无数个坑。
一、先读懂 ls -l 的第一列
执行 ls -l,每一行开头都是一串 10 个字符:
-rw-r--r-- 1 zhangsan dev 4096 10-30 09:00 report.txt
第 1 个字符表示文件类型:- 是普通文件,d 是目录,l 是软链接。后 9 个字符分成三组,每组 3 个,依次对应"属主(user)"“属组(group)”"其他人(other)"的权限。
每组里的三个位置固定表示:读(r,值为 4)、写(w,值为 2)、执行(x,值为 1),没有权限就用 - 占位。比如 rw- 表示可读可写、不可执行;r-x 表示可读可执行、不可写。
二、数字表示法:日常更常用的写法
r=4、w=2、x=1,把每组权限相加,就得到三个数字:
- 755 = rwx(7) r-x(5) r-x(5):属主可读写执行,其他人只读可执行,适合可执行脚本和目录。
- 644 = rw-(6) r–(4) r–(4):属主可读写,其他人只读,适合普通文档和配置文件。
- 600 = rw-(6) —(0) —(0):只有属主能读写,适合私钥、密钥等敏感文件。
修改权限用 chmod:
chmod 755 deploy.sh # 数字写法
chmod u+x deploy.sh # 符号写法:给属主加上执行权限
chmod go-w notes.txt # 符号写法:去掉属组和其他人的写权限
三、目录的权限含义和文件不一样
很多人会忽略这一点。对目录来说:r 表示可以列出目录内容,w 表示可以在目录里新建、删除、重命名文件,x 表示可以进入目录(cd)并访问其中的文件。
一个常见误区:想让别人读取目录里的某个文件,光给文件加 r 权限是不够的,还必须给目录加上 x 权限,否则照样报 Permission denied。
四、修改属主和属组
chown zhangsan report.txt # 把属主改成 zhangsan
chown zhangsan:dev report.txt # 同时修改属主和属组
chgrp dev report.txt # 只修改属组
注意:chown 通常需要 root 权限,普通用户可以用 sudo 执行。
五、新手最容易踩的三个坑
- 盲目 chmod 777。777 意味着所有人可读写执行,等于把大门钥匙交给了全世界。能用 755、644 解决的,绝不用 777。
- 脚本"无法执行"先看 x 权限。自己写的 shell 脚本运行时报 Permission denied,第一反应应该是 chmod +x,而不是换 root。
- 用 umask 理解默认权限。新建文件的默认权限由 umask 决定,执行 umask 看看,一般是 0022,意味着新建文件默认 644、目录默认 755。
小结
记住这张速查表,日常基本够用:普通文档、配置文件用 644;可执行脚本、程序用 755;目录用 755;私钥、敏感文件用 600。
权限管理的核心思想其实很简单,就是最小权限原则:每个人只拿到完成工作所必需的权限,不多给一分。把这个习惯养好,很多安全问题从一开始就不会发生。
- 点赞
- 收藏
- 关注作者
评论(0)