公众号旧文

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,基本都能自己推出来了。