Linux 文件权限与 chmod 入门
在 Linux 系统中,每一个文件与目录都带有一套权限位,用来控制"谁能对它的做哪些事"。理解这套权限以及 chmod 命令的用法,是 Linux 日常管理与安全加固的基础。
## 一、Linux 权限的基本组成
用 ls -l 查看文件时,最左边那一串字符(例如 -rw-r--r--)就是权限位。第 1 位表示文件类型:- 代表普通文件,d 代表目录,l 代表符号链接等。后面跟着 9 个字符,每 3 个一组,分别对应 owner(文件所有者)、group(所属组)和 others(其他用户)。每一组内部的三个位置固定表示 read(读,r)、write(写,w)、execute(执行,x);出现 - 表示没有该权限。
对普通文件而言,r 允许读取内容,w 允许修改内容,x 允许将其作为程序执行。对目录而言,含义略有不同:r 允许列出目录下的文件名,w 允许在目录中创建、删除或重命名文件,x 允许进入该目录(cd)。因此,"对目录有 r 但没有 x"会导致你能 ls 看到文件名,却无法 cd 进去查看子项。
## 二、权限的数值表示
chmod 支持把 rwx 换算成一位八进制数字:r=4,w=2,x=1,组合相加。比如 rw- 等于 4+2=6,rwx 等于 4+2+1=7,--- 等于 0。三组拼在一起就得到一个三位数。-rw-r--r-- 换算后就是 644(owner 6,group 4,others 4);-rwxr-xr-x 则是 755。
这种数字写法简洁且不易出错,是 chmod 最常用的形式。
## 三、chmod 的基本用法
chmod 用来修改文件权限。基本语法是:
chmod [模式] 文件名
常见的模式有两种写法。
1) 数字模式
chmod 644 readme.txt
chmod 755 myscript.sh
把 readme.txt 设为所有者可读写、组和其他人只读;把脚本设为可执行,方便 ./myscript.sh 直接运行。
2) 符号模式
chmod u+x script.sh
chmod go-w config.yaml
u/g/o/a 分别代表所有者、所属组、其他人和全部用户,+/-/= 表示增加、去掉或精确设定权限。go-w 会把 group 和 others 的写权限去掉,常用于配置文件的收紧。
两者可以混合使用,例如 chmod 755,go-w file 先设 755 再去掉其他人写权限,最终等价于 754。
## 四、常用场景与示例
- 脚本文件需要执行权限:chmod 755 deploy.sh。
- 私有密钥或凭证文件:chmod 600 ~/.ssh/id_rsa,仅所有者可读写。
- 项目配置不希望被同组同事修改:chmod 640 app.conf(owner rw,group r,others 无)。
- 递归修改整个目录树:chmod -R 755 myproject/。注意 -R 会同时修改目录和其中的文件,权限设成 755 会让所有文件都可执行,一般更推荐分别处理目录与文件,或用 find 配合 -type d / -type f。
## 五、注意事项与安全建议
1. 普通用户只能修改自己拥有的文件的权限;修改他人文件需要 root 权限。
2. 不要把敏感文件设成 777(所有人可读写执行),这在服务器和多用户环境下是典型安全隐患。
3. 使用 -R 时先 ls -l 看一下,确认影响范围,避免把关键配置文件改错。
4. 权限收紧遵循"最小权限"原则:默认从 644/755 开始,按需再开放或回收。
5. 对目录别忘了 x 权限:只有 r 没有 x 的目录无法进入,只有 x 没有 r 则能 cd 但看不到文件名。
## 六、小结
Linux 文件权限用 owner/group/others 三组 rwx 来描述,chmod 可以通过八进制数字(如 644、755、600)或符号表达式(u+rx、go-w 等)进行修改。掌握 r/w/x 对文件与目录的不同含义,配合最小权限原则,就能在日常开发、部署和运维中做到既好用又安全。
读者可以在终端中用 umask 命令查看自己创建新文件时的默认权限掩码,并结合 chmod 验证本文示例,巩固理解。
- 点赞
- 收藏
- 关注作者
评论(0)