公众号旧文
chmod 600 到底是什么意思?
如果你刚开始学习 Linux,可能经常会看到这样的命令:
chmod 600 filename
很多人第一次看到 600 都会觉得有点奇怪。
但理解起来并不复杂。
chmod 是干什么的?
chmod 是 Linux 中用来修改文件权限的命令。
比如:
chmod 600 test.txt
意思就是给 test.txt 设置一种新的访问权限。
Linux 中,一个文件通常会涉及三类用户:
文件所有者
同组用户
其他用户
所以 600 这三个数字,分别对应这三类用户。
可以这样理解:
6 0 0
│ │ │
│ │ └── 其他用户
│ └───── 同组用户
└──────── 文件所有者
6 是什么意思?
Linux 中最基础的文件权限有三个:
r = read,读取
w = write,写入
x = execute,执行
它们分别对应一个数字:
r = 4
w = 2
x = 1
如果一个用户同时拥有多个权限,就把这些数字加起来。
比如:
读 + 写
4 + 2 = 6
所以:
6 = 读 + 写
也就是:
rw-
这里没有执行权限,所以最后一个位置是 -。
那 600 就很好理解了
600 可以拆成:
6 0 0
第一个 6:
读 + 写
第二个 0:
没有任何权限
第三个 0:
没有任何权限
所以最终效果就是:
rw-------
意思是:
文件所有者可以读取和修改这个文件,其他人完全没有权限。
为什么 SSH 私钥经常要设置成 600?
比如 SSH 私钥文件:
~/.ssh/id_rsa
我们经常会看到这样的命令:
chmod 600 ~/.ssh/id_rsa
原因很简单。
SSH 私钥属于非常敏感的文件。
如果其他用户也可以读取这个文件,就可能带来安全风险。
所以通常会限制成:
只有自己能读写
其他人不能访问
这就是 600 常见的使用场景之一。
还有哪些常见权限?
除了 600,还有几个数字也非常常见。
644
rw-r--r--
表示:
所有者:读 + 写
同组用户:只读
其他用户:只读
普通配置文件经常会使用这种权限。
700
rwx------
表示:
所有者:读 + 写 + 执行
其他人:没有权限
一些只允许自己使用的脚本或目录,会使用这种权限。
755
rwxr-xr-x
表示:
所有者:读 + 写 + 执行
同组用户:读 + 执行
其他用户:读 + 执行
很多脚本、程序和目录都会看到 755。
777
rwxrwxrwx
表示所有用户都拥有:
读
写
执行
权限非常大。
所以在实际使用中,不要为了省事直接 chmod 777。
虽然这样经常能解决权限报错,但也可能带来安全问题。
怎么快速记住这些数字?
其实只需要记住三个数字:
4 = 读
2 = 写
1 = 执行
然后做加法就可以了。
比如:
4 + 2 = 6
表示:
读 + 写
再比如:
4 + 1 = 5
表示:
读 + 执行
还有:
4 + 2 + 1 = 7
表示:
读 + 写 + 执行
所以当你以后看到:
chmod 755 test.sh
就可以理解为:
所有者:读 + 写 + 执行
同组用户:读 + 执行
其他用户:读 + 执行
最后总结一下
chmod 600 并不是什么神秘的数字。
它本质上只是 Linux 对文件权限的一种数字表示方式。
记住:
4 = 读
2 = 写
1 = 执行
然后再记住:
600 = rw-------
也就是:
只有文件所有者可以读写,其他用户没有任何权限。
理解这个规则之后,以后再看到 644、700、755、777,基本都能自己推出来了。