详解 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。那么这里有点困惑了,这个值是如何得来的呢。 umask0022 有什么意义呢?其实这个值只是个掩码。他会屏蔽掉不像授予该安全级别的权限。对于文件来说,全权限是 666,减去 umask 的值就是新创建文件的权限。 644 正是我们所期望的那样,默认屏蔽了文件所属组和其他用户 w 权限。这里说明一下文件夹的全权限是 777。如果你想屏蔽更多的权限,可以修改 umask 的值。

>$ umask 026
本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!