我的 umask 是 0022
当我使用创建目录时
mkdir mydir
我获得的权限是 drwxr-xr-x
但是当我创建文件时
touch file
我获得的权限是 -rw-r--r--
为什么目录默认获得 x(搜索)权限而文件没有?默认设置如何生效?有没有办法改变它们(我知道直接改变它们可能不是一个好主意)。只是想尝试一下。
答案1
首先,“x” 的含义各不相同。对于文件,它表示“允许执行此操作”,对于目录,它表示“允许访问”,即允许某人通过 cd 进入目录。我在这里略过了一些细节。但它并不意味着“可搜索”。
一般来说,对于现代 Linux 系统上的普通用户,umask 设置为 0002(八进制)。这意味着在计算有效权限时使用此掩码。目录和文件的起始位置不同。创建目录默认为八进制 0777。文件的默认值取决于程序如何使用 open() 调用,但例如 touch 使用八进制 0666。因此,如果您的 umask 设置为 0002,则文件最终为 0664,目录为 0775,对应于文件的 rw-rw-r-- 和目录的 drwxrwxr-x。
您可以使用命令来设置 umask umask
。我建议仔细阅读 chmod(1) 手册页,并一定要查看 sticky-bit 以及 suid 和 sgid 位是如何发挥作用的,因为这些通常是很多人感到困惑的地方。
答案2
没有umask
说明将授予哪些权限放。相反,它只说明哪些权限将绝不如果工具/实用程序尝试设置它们这就是为什么它只是一个“面具”
如果您设置了,umask 0000
那么您将看到各种实用程序的本机文件权限;它们并不总是如您所注意到的一样。