详解 Linux 文件权限
Linux 文件权限
在深入了解之前,先来理解一下文件权限的基本信息。首先创建一个信息的文件
>$ touch new_file
>$ ll new_file
>$ -rw-r--r-- 1 root root 0 4月 23 22:59 new_file
文件 new_file 拥有下面三组权限:
rw- :文件的属主,登陆用户的权限 r w 分别是读写
r-- : 文件属主的所属组的权限 r 读
r--: 其他用户的权限 r 读
当然还有一个 x
可执行权限这里没有,可以通过 chmod
命令来增加。这个后面再说。我们先来说说文件权限的由来,touch
命令之后的默认权限是如何来的。要知道首先要知道有 umask
的存在。通过 umask
命令可以获取默认值。这个值很有用。
>$ umask
>$ 0022 // 这是我机器上面的值
要了解这个 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 的值。
>$ umask 026
本作品采用《CC 协议》,转载必须注明作者和本文链接