Linux 文件权限与 umask 详解:从 rwx 到最小可用原则
【摘要】 在 Linux 日常运维和开发中,文件权限是最基础也最容易踩坑的一环。很多人能记住 chmod 777,却讲不清 rwx 对目录和文件的区别,也不清楚 umask 是如何影响新建文件权限的。本文把这套机制一次性讲清楚。一、权限位的三组结构执行 ls -l 会看到类似 -rw-r--r-- 的字符串:第 1 位是文件类型,后面 9 位每 3 位一组,分别代表所有者(user)、所属组(grou...
在 Linux 日常运维和开发中,文件权限是最基础也最容易踩坑的一环。很多人能记住 chmod 777,却讲不清 rwx 对目录和文件的区别,也不清楚 umask 是如何影响新建文件权限的。本文把这套机制一次性讲清楚。
一、权限位的三组结构
执行 ls -l 会看到类似 -rw-r--r-- 的字符串:第 1 位是文件类型,后面 9 位每 3 位一组,分别代表所有者(user)、所属组(group)、其他人(other)的读(r)、写(w)、执行(x)权限。
- 对文件:r 可读、w 可写、x 可执行(脚本或二进制)。
- 对目录:r 可列出内容、w 可增删文件、x 可进入(cd)。
因此给目录 755、给普通文件 644 是最常见的组合。
二、chmod 的两种写法
符号写法直观:chmod u+x script.sh 给所有者加执行权限,chmod go-w dir 去掉组和其他人的写权限。数字写法快捷:chmod 600 id_rsa 是私钥的标准权限,chmod 700 ~/.ssh 保证密钥目录不被他人窥探。
chmod 644 index.html
chmod 755 deploy.sh
chmod -R 700 /home/user/.ssh
三、umask:新建文件的默认权限
umask 是一个“掩码”,它从最大权限中减掉相应位。目录最大权限是 777,文件最大权限是 666(文件默认不可执行)。假设 umask 022,则新建目录权限为 755,新建文件权限为 644。
$ umask
0022
$ touch a.txt && ls -l a.txt
-rw-r--r-- 1 user user 0 Nov 9 20:00 a.txt
可以用 umask 077 让新建文件默认仅自己可见,适合处理敏感数据的场景。
四、常见踩坑
- 私钥权限过大导致 SSH 拒绝使用:把
.ssh目录设为 700、私钥设为 600 即可。 - 用
chmod -R 777图省事,等于把服务暴露给所有用户,生产环境务必避免。 - 目录少了 x 权限,即使有 r 也无法进入,表现为“能看到文件名却进不去”。
五、小结
权限管理的核心是“最小可用”:目录 755、文件 644、敏感文件 600,再配合合理的 umask,就能覆盖绝大多数场景。记住 rwx 对目录和文件含义不同,是理解一切权限问题的前提。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)