Linux 文件权限入门:先弄清读、写与执行这三件事

举报
yd_220574054 发表于 2026/11/11 10:23:23 2026/11/11
【摘要】 刚接触 Linux,很多人第一次栽在“权限”上:文件明明在眼前,打开却提示 Permission denied;脚本写好了,一运行却说没有执行权限。其实背后的规则并不复杂,核心就是三件事:读、写、执行,以及它们分别属于谁。 一、先看懂 ls -l 输出的那串字母在终端执行 ls -l,每一行开头都有一串类似 -rw-r--r-- 的字符。第一个字符表示类型:- 是普通文件,d 是目录,l 是...

刚接触 Linux,很多人第一次栽在“权限”上:文件明明在眼前,打开却提示 Permission denied;脚本写好了,一运行却说没有执行权限。其实背后的规则并不复杂,核心就是三件事:读、写、执行,以及它们分别属于谁。

一、先看懂 ls -l 输出的那串字母

在终端执行 ls -l,每一行开头都有一串类似 -rw-r--r-- 的字符。第一个字符表示类型:- 是普通文件,d 是目录,l 是软链接。后面九个字符每三个一组,依次对应所有者(user)、所属组(group)、其他人(others)。

字母含义很直白:r 是读(read),w 是写(write),x 是执行(execute),- 表示没有这项权限。-rw-r--r-- 就是:所有者可以读写,组和其他人只能读。

二、同样是 rwx,文件和目录上意思不同

对文件来说,读是查看内容,写是修改、追加内容,执行是把文件当作程序来运行。

对目录来说,读是列出里面的文件清单,写是在目录里新建、删除、重命名文件,执行是进入这个目录、访问其中已知名字的文件。

举个例子:目录 data 的权限是 r--,只有读没有执行,你可以用 ls data 看到里面的文件名,但 cat data/report.txt 会失败,因为没有执行权限,进不去这个目录。反过来,目录只有执行没有读时,你看不到文件清单,却能直接访问你知道名字的文件。目录的 x,就是一张通行证。

三、数字权限:把三件事压缩成一个数字

Linux 还可以用数字表示权限:r=4,w=2,x=1,把一组权限相加。rwx 是 7,rw- 是 6,r-x 是 5。于是 chmod 755 就表示所有者 rwx、组 r-x、其他人 r-x,这是可执行脚本最常见的权限。

写好一个部署脚本,想让它能直接运行:

chmod +x deploy.sh
./deploy.sh

想把敏感文件收紧到只有自己可读写:

chmod 600 config.txt
ls -l config.txt

这时输出是 -rw-------,存放密钥、令牌这类文件时,600 是最常用的选择。

四、新手最容易踩的三个坑

第一,别急着 chmod 777。777 意味着任何人都能读、写、执行,临时图省事常常会埋下安全隐患。遇到权限问题先问一句:到底缺了哪一位的哪一个权限?多数时候精确地补一个 x 就够了。

第二,删除文件看的是目录的写权限,不是文件的写权限。一个只读文件(444),只要它所在的目录可写,你仍然可以删除它;反过来,文件权限是 666,但所在目录没有写权限,你也删不掉它。

第三,执行脚本和读取脚本是两回事。运行 ./deploy.sh 需要 x 权限;而用 bash deploy.sh 运行,只需要读权限,因为这时是 bash 在读取脚本内容,而不是内核直接执行它。同一个脚本,两种运行方式对权限的要求不同,报错时先分清自己用的是哪一种。

五、动手练一次

在自己的练习目录里新建文件,写一行字进去,再依次改权限,观察 ls -l 的变化和能否正常读取:

echo "hello linux" > hello.txt
chmod 400 hello.txt
cat hello.txt
chmod 600 hello.txt

400 是只读,600 是自己可读写。亲手改一次、看一次输出,比背十遍权限表记得更牢。

文件权限说到底是在回答三个问题:谁能看、谁能改、谁能运行。先把读、写、执行这三件事,以及它们在文件和目录上的不同含义分清,再遇到 Permission denied,就不再是玄学,而是可以一步步排查的线索。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。