Linux 文件权限
在深入了解之前,先来理解一下文件权限的基本信息。首先创建一个信息的文件
1 | > touch new_file |
文件 new_file 拥有下面三组权限:
rw- :文件的属主,登陆用户的权限 r w 分别是读写
r– : 文件属主的所属组的权限 r 读
r–: 其他用户的权限 r 读
当然还有一个 x
可执行权限这里没有,可以通过 chmod
命令来增加。这个后面再说。我们先来说说文件权限的由来,touch
命令之后的默认权限是如何来的。要知道首先要知道有 umask
的存在。通过 umask
命令可以获取默认值。这个值很有用。
1 | > umask |
要了解这个 umask 的是如何工作的,首先要理解一下八进制模式的安全性设置。八进制模式的安全设置先获取这三个 rwx 权限的值,然后将其转换为三位二进制值,用一个八进制值来表示。在这个二进制表示中,每个位置代表一个二进制位。例如唯一读权限 r– 转换成二进制就是 100, 那么代表的八进制就是 4。
如下表表示的这样:
权限 | 二进制 | 八进制 | 描述 |
---|---|---|---|
— | 000 | 0 | 没有任何权限 |
–x | 0001 | 1 | 只有可执行权限 |
-w- | 010 | 2 | 只有可写权限 |
-wx | 011 | 3 | 只有可写可执行权限 |
r– | 100 | 4 | 只有可读权限 |
r-x | 101 | 5 | 只有可读可执行权限 |
rw- | 110 | 6 | 只有可读可写权限 |
rwx | 111 | 7 | 可读可写权限可执行 |
当了解对应权限以及八进制值之后,看看上面的 new_file 拥有权限是 644。那么这里有点困惑了,这个值是如何得来的呢。 umask
的 0022
有什么意义呢?其实这个值只是个掩码。他会屏蔽掉不像授予该安全级别的权限。对于文件来说,全权限是 666
,减去 umask
的值就是新创建文件的权限。 644 正是我们所期望的那样,默认屏蔽了文件所属组和其他用户 w 权限。这里说明一下文件夹的全权限是 777。如果你想屏蔽更多的权限,可以修改 umask 的值。
1 | > umask 026 |