这是在测试机器上,而不是生产机器上。我在用户的 .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