csh*_*adi 5 linux redhat umask
我有一些奇怪的事情要报告。在我新配置的 RHEL5 服务器上,我的 shell 设置为 /bin/bash 我在 .bashrc 中将 umask 设置为 002。
当我第一次登录时,umask 似乎工作正常:
$ touch a
$ ls -l a
-rw-rw-r-- etc.....
Run Code Online (Sandbox Code Playgroud)
如果我创建另一个文件,它可以工作:
$ touch b
$ ls -l b
-rw-rw-r-- etc.....
Run Code Online (Sandbox Code Playgroud)
但是...如果我更改目录(到任何目录),则 umask 将设置回 022:
$ cd /var/www/whatever
$ touch c
$ ls -l c
-rw-r--r-- etc.....
Run Code Online (Sandbox Code Playgroud)
完全奇怪。
有人见过这样的吗?他们能想出什么要检查的吗?
为什么 umask 设置会在 cd'ing 后改变?
谢谢,
-查理
感谢 Barry Brown 的上述评论 - 我正在为这个问题(在 OSX 上,而不是 Linux 上)而烦恼,在我的案例中确实是 rvm 是罪魁祸首。检查您的 .profile、.bash_profile 等文件中是否有这样的一行:
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
Run Code Online (Sandbox Code Playgroud)
将其注释掉,重新启动您的 shell,这应该可以解决问题。我不知道 rvm 如此粗鲁和侵扰。最好仅在需要时加载它,而不是为每个 shell 加载。
简短的答案是:umask 有四位数字,并且不会随意更改,但 /etc/profile 和 fiends 会将其默认设置为 022;
\n\n更新
\n我有点得意忘形了,忘记正确回答你的问题:
检查您更改到的文件夹上安装的分区(如果有)没有设置 umask。(只需输入mount)
\n\n长答案是:
\n\nman chmod \n\xc2\xa76:\n数字模式是从 1 到 4 个八进制数字 (0-7),通过将值为 4、2 和 1 的位相加\n得出。省略的数字假定为前导 \恩泽罗斯。第一个数字选择设置的用户 ID (4) 和设置的组 ID (2) 以及\n限制删除或粘滞 (1) 属性。第二个数字选择\n拥有该文件的用户的权限:读(4)、写(2)和执行\n(1);第三个选择文件组中其他用户的权限,\n具有相同的值;第四个用于不在文件组中的其他用户,\n具有相同的值。
\n\nGNU coreutils 8.14 2011 年 10 月
\n\n我记得几年前多次阅读此手册页,但在设置表格之前从未完全理解所有这些意味着什么。由于我丢失了参考表,我将在此处重新创建它。由于我不喜欢符号符号,因为它输入起来比较麻烦(例如 chmod u+x),因此我将省略任何提及它的内容。
\n\n可能的设置:\n4:读取\n2:写入\n1:执行
\n\n\n域 setuid 用户组 world\n数字 1 2 3 4\n值 0-7 0-7 0-7 0-7\n\n\n
花括号 {} 中的“可能的设置”值可以相加在一起以生成有效的权限位(数字)。
\n\n常见示例
\n\n0755 : 用户可以进入文件夹并在该文件夹中写入(删除)文件\n 如果在文件上设置了此掩码,则用户可以执行该文件(即\n ./filenme.bin)。最后两位数字表示文件所属的组和世界(系统上的任何其他人)也可以执行该文件。应用于目录意味着组和\n世界可以进入该目录。
\n\n0644:用户可以读写文件,但不能执行它。组和世界 \n 只能读取该文件。应用于文件夹时,此掩码将阻止任何人进入该目录。
\n\n0600:只有所有者可以使用此掩码读取和写入文件
\n\n0700 : 只有文件夹的所有者可以使用此掩码输入、读取和写入 \n 文件夹的内容。
\n\n0000:用于“隐藏”文件或(向自己)发出不应使用文件或文件夹的信号。
\n\n无意义的面具
\n\n0200:如果用户可以写入文件,那么他们也可以更改文件的 umask。
\n\n危险面具
\n\n0666:每个人都可以使用此掩码读取、写入和删除文件
\n\n0777:文件夹也是如此。如果二进制文件设置为777,那么任何人都可以将任何他们想要的内容放入该文件中并运行它,即使它位于系统范围的二进制目录(例如 /usr/bin)中。
\n\n4755 : 超级用户 (root) 拥有的二进制文件将以超级用户 \n 权限运行。这其中的含义应该是清楚的。也许,用 4755 直观地设置解释脚本不会有任何效果,因为脚本(例如 bash 脚本)仍然由 /bin/bash 运行。存储脚本的 \n 文本文件并不是真正的可执行文件。
\n\n在所有上述示例中,为了方便起见,可以省略前导零。
\n\n要设置正确的 umask,需要做的就是从“最大掩码”中减去不需要的权限,其中文件夹为 0777,文件为 666。
\n\n要强制 shell 使用默认权限 644 创建文件,请将 umask 设置为\n0022。对于文件夹,典型的(所需的)umask 可能是 755,并且可以通过将 umask 设置为 0022 来实现。
\n\n\n 0666 0777\n-0022 -0022\n ____ ____\n 0644 0755\n\n\n
相关链接:\n https://unix.stackexchange.com/questions/364/allow-setuid-on-shell-scripts
\n| 归档时间: |
|
| 查看次数: |
1167 次 |
| 最近记录: |