Linux 文件权限入门:读懂 rwx,管好 chmod 与 chown
刚接触 Linux 的人,第一次被权限拦住往往是在一个很普通的时刻:明明写好的脚本,双击或者直接输入文件名却提示权限不够;又或者网站目录明明存在,浏览器却返回 403。这些问题的根源,大多藏在文件前面那一串 rwx 里。理解权限,是用好 Linux 的第一步。
权限由三个维度组成。Linux 把每一个文件的使用者分成三类:文件的所有者、文件所属用户组里的成员、以及除此之外的其他人。每类人各自拥有一组读、写、执行的权限。用 ls -l 查看文件时,开头那十个字符就是答案。第一个字符表示类型,横杠代表普通文件,d 代表目录,后面九个字符每三个一组,依次对应所有者、所属组、其他人的权限。
r、w、x 三个字母分别代表读、写、执行,但它们在文件和目录上的含义并不完全相同。对文件来说,读意味着可以查看内容,写意味着可以修改内容,执行意味着可以作为程序运行。对目录来说,读意味着可以列出目录里的文件清单,写意味着可以在目录里新建或删除文件,而执行则意味着可以进入这个目录、访问其中已知名字的文件。很多人困惑为什么 cd 进一个目录需要 x 权限,原因就在这里:没有执行权限,目录就像一扇打不开的门,哪怕你知道里面有什么也进不去。
除了字母,权限还有一套数字表示法。读是 4,写是 2,执行是 1,把三类人的权限加起来,就得到一个三位数。比如 755 表示所有者拥有读写执行的全部权限,而组和其他人只有读和执行;644 则表示所有者可以读写,组和其他人只能读。网站静态文件常用 644,目录常用 755,这组数字几乎成了约定俗成的默认值。记住 421 的对应关系,就能快速读懂任何一组数字权限。
修改权限用 chmod。它有两种写法:数字写法一步到位,比如 chmod 755 deploy.sh;符号写法更直观,可以只改某一位,比如 chmod u+x deploy.sh 表示只给所有者加上执行权限,chmod g-w config.txt 表示收回组的写权限。实际运维中,符号写法适合微调,数字写法适合一次性定好整套权限,两者配合使用最顺手。
与权限形影不离的还有所有权。chown 用来改变文件的归属,比如 chown www-data:www-data index.html,把文件交给网站运行的用户和组;chgrp 只改所属组。需要注意的是,普通用户只能把文件交给自己所在的组,只有管理员才能随意变更所有权。刚部署完服务就遇到 403,常常就是文件还挂在上传用的账号名下,而网站进程用的却是另一个用户,权限数字再对也读不到。
说几个新手最容易踩的坑。第一,脚本写好却提示权限不够,多半是忘了给执行权限,chmod +x 即可。第二,密钥文件权限太松,SSH 会直接拒绝登录并提示权限过高,私钥文件应当设为 600,只允许自己读写。第三,目录权限设成 777 看似省事,实际上等于把大门敞开,任何用户都能往里写文件,正确做法是只给需要的人加权限。第四,复制文件时权限可能跟着变化,用 cp -p 可以保留原有权限。
权限管理的核心原则其实只有一句话:最小权限。只给刚好够用的权限,不多给一位。每次多给一位权限,都是在给未来的故障和安全隐患留口子。养成查看权限再操作的习惯,遇到权限问题先用 ls -l 看清现状,再决定是改权限还是改归属,而不是随手来一个 777 了事。
把 rwx、数字表示法、chmod 和 chown 这四样东西弄明白,Linux 的权限体系就通了大半。此后无论是部署网站、管理服务器,还是写自动化脚本,权限都不再是拦路的黑盒,而是一套可以随时检查、随时调整的明确规则。
- 点赞
- 收藏
- 关注作者
评论(0)