为什么当我使用不同的组创建文件时会获得不同的权限?如何配置?

为什么当我使用不同的组创建文件时会获得不同的权限?如何配置?

当我使用不同的组创建文件时,我发现权限不同

我以 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 命令,那么这将解释值的差异。

相关内容