Ubuntu Server 10 中的 umask

Ubuntu Server 10 中的 umask

这是在测试机器上,而不是生产机器上。我在用户的 .bashrc 中包含了以下内容:

umask 000

我重新登录。当我在主目录中创建一个文件时,比如使用 vi test.txt,该文件获得权限 rw-rw-rw。

我也尝试手动设置 umask:

umask a=rwx

我做错了什么,因为我需要在文件和目录上执行相当于 CHMOD 0777 或 0755 的操作?同样,这是一个测试情况,因此目前无需担心安全性。

编辑:仔细想想,这不可能吗?由于文件的 umask 会减去 666,最低 umask 是 000,因此文件可以获得的最高 CHMOD 是 666?没有办法使用 umask 为文件提供 755 或 777 的 CHMOD?

答案1

我找不到参考,但我很确定你不能将其设置x为文件的默认权限。

答案2

umask没有默认权限,用于修改某些系统调用的默认模式,如,open(2)mkdir(2)

在您的例子中,vim正在创建具有模式的文件0666,这将由 umask 进一步修改。默认值为 0022,然后会创建一个具有模式 0644 的文件。umask 不能添加位,它只能面具它们(因此得名)。

例如,执行

$ touch testfile
$ ls -l testfile
-rw-r--r-- 1 bob bob 0 2011-06-27 16:36 testfile

但它进行了以下系统调用(请注意 mode_t 字段中的 0666)

open("testfile", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK, 0666) = 3

相关内容