Linux 文件系统安全全解析
1. 默认访问权限
当用户创建文件或目录时,权限掩码(即 umask 设置)会控制最终分配的权限。umask 是一个内置的 shell 函数,用于移除程序设置的某些权限位。新文件创建时,内核默认赋予 666(rw-rw-rw-)的权限模式,新目录则是 777(rwxrwxrwx)。但在实际设置权限前,会应用 umask 值。
umask 值的指定方式与 chmod 类似,依次为用户掩码、组掩码、其他用户掩码(暂不考虑特殊模式掩码)。例如,umask 值为 022 时,最终文件权限设置为 644(rw-r–r–)。虽然常说这是从默认权限设置中减去 umask 值的结果,但实际机制并非如此简单(如 umask 为 027 时)。
实际情况是,请求的权限设置(如示例中的 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 |
超级会员免费看
订阅专栏 解锁全文
1837

被折叠的 条评论
为什么被折叠?



