当我使用不同的组创建文件时,我发现权限不同
我以 root 身份执行此操作:
groupadd stack
useradd stack1
gpasswd stack (choose a password)
su stack1
touch testfile
I did ls -l and I see permissions rw-rw-r--
newgrp stack (enter the password I previously created for that group)
touch test2
I did ls -l and I see permissions of file test2 rw-r--r--
我在哪里可以更改该选项,我认为它与 umask 有关,但我不确定。
谢谢。
答案1
如您所知,差异是由于 umask 值不同造成的。创建文件时,您指定文件应具有的最大权限。因为touch
这将是rw-rw-rw-
。然后使用 umask 来减少权限。
一般来说,您应该使用su - stack1
切换到用户。
newgrp 是一个很难编写的程序。它通常是suid,因为它需要操纵群体。理想情况下,它会像 umask 一样内置到 shell 中,因此它会更改当前进程的组,但这与它是 suid 不兼容。因此,通常它是一个提示输入密码的 suid 二进制文件,如果验证成功,它将用 shell 替换自身。该 shell 可以运行其启动代码。
如果您的 ~/.bashrc 文件中直接或间接包含 umask 命令,那么这将解释值的差异。