简短的回答是:umask 有四位数字,不会随意更改,但 /etc/profile 和 fiends 会默认设置为 022;
更新
我有点忘乎所以,忘了正确回答你的问题:
检查安装在您更改到的文件夹上的分区(如果有)没有设置 umask。(只需输入mount)
长答案是:
man chmod
§6:数字模式是从一到四个八进制数字 (0-7),通过将具有值 4、2 和 1 的位相加得出。省略的数字假定为前导零。第一个数字选择设置用户 ID (4) 和设置组 ID (2) 以及限制删除或粘性 (1) 属性。第二个数字选择拥有文件的用户的权限:读(4)、写(2)和执行(1);第三个选择文件组中其他用户的权限,具有相同的值;第四个用于不在文件组中的其他用户,具有相同的值。
GNU coreutils 8.14 2011 年 10 月
我记得几年前多次阅读这个手册页,在我设置表格之前从未完全理解所有这些意味着什么。由于我丢失了我的参考表,我将在这里重新创建它。由于我不喜欢符号表示法,因为它输入起来更麻烦(例如 chmod u+x),我将省略它的任何提及。
chmod和umask的解读
可能的设置: 4:读取 2:写入 1:执行
每个数字的可能值以及示例
域 setuid 用户组 world
数字 1 2 3 4
值 0-7 0-7 0-7 0-7
花括号 {} 中的“可能设置”值可以加在一起以产生有效的权限位(数字)。
常见示例
0755:用户可以进入一个文件夹并在该文件夹中写入(删除)文件如果这个掩码设置在一个文件上,用户可以执行该文件(即./filenme.bin)。最后两位数字表示文件所属的组和世界(系统上的任何其他人)也可以执行文件。应用于目录意味着组和世界可以进入该目录。
0644 : 用户可以读写文件,但不能执行。组和世界只能读取文件。应用于文件夹,此掩码将阻止任何人进入该目录。
0600 : 只有所有者可以使用此掩码读写文件
0700 : 只有文件夹的所有者可以使用此掩码进入、读取和写入文件夹的内容。
0000:用于“隐藏”文件或(向您自己)发出不应使用文件或文件夹的信号。
无意义的面具
0200 : 如果用户可以写入文件,那么他们也可以更改文件的 umask。
危险的面具
0666 : 每个人都可以使用此掩码读取、写入和删除文件
0777:文件夹也一样。如果二进制文件设置为777,那么任何人都可以将任何他们想要的内容放入该文件并运行它,即使它位于系统范围的二进制目录中,例如 /usr/bin。
4755:超级用户(root)拥有的二进制文件将以超级用户权限运行。这其中的含义应该很清楚。也许,用 4755 直观地设置解释脚本将不起作用,因为脚本(例如 bash 脚本)仍然由 /bin/bash 运行。存储脚本的文本文件并不是真正的可执行文件。
在所有上述示例中,为方便起见,可以省略前导零。
将 umask 转换为 chmod
要设置正确的 umask,只需从“最大掩码”中减去不需要的权限,文件夹为 0777,文件为 666。
要强制 shell 创建具有默认权限 644 的文件,请将 umask 设置为 0022。对于文件夹,典型的(所需)umask 可能是 755,可以通过将 umask 设置为 0022 来实现。
0666 0777
-0022 -0022
____ ____
0644 0755
相关链接:
https ://unix.stackexchange.com/questions/364/allow-setuid-on-shell-scripts