Linux文件系统安全:权限管理与安全防护
1. 默认访问权限
当用户创建文件或目录时,权限掩码(umask设置)会控制最终分配的权限。umask是一个内置的shell函数,用于移除程序设置的某些权限位。新创建的文件,内核默认赋予666(rw - rw - rw -)的权限模式,目录则是777(rwxrwxrwx)。但在实际设置权限之前,会应用umask值。
umask值的指定方式与chmod相同,依次为用户掩码、组掩码和其他用户掩码。例如,umask值为022时,最终文件权限设置为644(rw - r – r –)。不过,这并非简单地从默认权限设置中减去umask值,实际是将请求的权限设置(如示例中的666)与umask值的按位取反进行逻辑与运算。
以下是逻辑与运算的真值表:
| && | 0 | 1 |
| — | — | — |
| 0 | 0 | 0 |
| 1 | 0 | 1 |
以umask为022,默认权限为666为例,具体运算过程如下表:
| U | G | O |
| — | — | — |
| umask设置为022 | 000 | 010 | 010 |
| umask值的按位取反 | 111 | 101 | 101 |
| 默认权限666 | 110 | 110 | 110 |
| 应用逻辑与运算 | — | — | — |
| 结果 | 110 | 100 | 100 |
| 十进制值 | 6 | 4 | 4 |
若umask为027,最终权限设置为640,运算过程如下: