Linux 入门:读懂文件权限,chmod 一次讲透
【摘要】 刚接触 Linux 的朋友,十有八九都在 Permission denied 上栽过跟头:脚本明明写对了,一运行就报错;文件想改却改不动;网上搜到“解决方案”让你 chmod 777,用了之后好像能跑了,却埋下安全隐患。这篇文章把 Linux 文件权限讲透:看懂 ls -l,会用数字表示法,知道什么时候该用什么权限。 一、先看懂 ls -l 在说什么在终端执行 ls -l,每一行长这样:-r...
刚接触 Linux 的朋友,十有八九都在 Permission denied 上栽过跟头:脚本明明写对了,一运行就报错;文件想改却改不动;网上搜到“解决方案”让你 chmod 777,用了之后好像能跑了,却埋下安全隐患。
这篇文章把 Linux 文件权限讲透:看懂 ls -l,会用数字表示法,知道什么时候该用什么权限。
一、先看懂 ls -l 在说什么
在终端执行 ls -l,每一行长这样:
-rwxr-xr-- 1 chenxi developers 2048 10-22 06:00 deploy.sh
最前面 10 个字符就是权限位,拆开看:
- 第 1 位是文件类型:
-普通文件,d目录,l软链接。 - 后面 9 位分成三组,每组 3 位,依次是属主(user)、属组(group)、**其他人(other)**的权限。
每组里的 rwx 含义:
r(read):读文件内容;对目录是“列出目录下文件名”。w(write):改文件内容;对目录是“在目录里增删改文件”。x(execute):文件可作为程序执行;对目录是“能 cd 进入”。
所以 rwxr-xr-- 的意思是:属主可读可写可执行,属组可读可执行,其他人只可读。
注意一个常被误解的点:目录的 x 不是“执行”,而是“进入”。一个目录即使有 r 没 x,你也 cd 不进去;有 x 没 r,能进入但看不到里面有什么。
二、数字表示法:4-2-1 速记
r=4,w=2,x=1,每组三个权限相加就是一个数字。rwx = 7,r-x = 5,r-- = 4。
于是 rwxr-xr-- 写成数字就是 754。最常见的两种组合建议直接记住:
- 文件默认
644(rw-r–r–):自己可改,别人只读。 - 目录默认
755(rwxr-xr-x):自己全权,别人可进可看。
新建文件和目录的默认权限由 umask 决定,一般不用改,了解即可。
三、动手改权限:chmod / chown
改权限用 chmod,两种写法:
chmod 755 deploy.sh # 数字写法,一步到位
chmod u+x deploy.sh # 符号写法:给属主加执行权限
chmod g-w notes.txt # 去掉属组的写权限
u/g/o 分别代表属主、属组、其他人,a 代表所有人,+ 加权限,- 减权限,= 直接设定。
改归属用 chown:
sudo chown chenxi:developers deploy.sh # 同时改属主和属组
四、三个新手常踩的坑
- 不要动不动
chmod 777。777 意味着任何人可读可写可执行,Web 目录这样设等于把大门钥匙挂在门口。能跑不等于该这样跑,先想想到底缺的是哪一组、哪个权限。 - 脚本报 Permission denied,先看有没有
x。bash deploy.sh能跑不代表./deploy.sh能跑,后者要求文件本身有执行位。 - 目录没
x,里面文件权限再对也白搭。排查“进不去/打不开”时,把路径上每一级目录的x都检查一遍。
五、小练习
找个测试目录自己动手试一遍,印象最深:
mkdir perm_demo && cd perm_demo
echo hello > a.txt
chmod 600 a.txt && ls -l a.txt # 看看变成什么样
chmod 644 a.txt && ls -l a.txt # 再改回来
权限这套规则从 1970 年代沿用至今,理解一次,终身受用。下次再看到 Permission denied,先 ls -l 看一眼,大多数问题当场就有答案。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)