编辑文件的组成员*自动*更改所有权、组和权限

编辑文件的组成员*自动*更改所有权、组和权限

我有一个目录,我想将其设置为一个组的所有成员都具有 rwx 权限。以下是该目录及其权限的子集:

-rwxr-xr-x  1 myusrnm grpnm 21638 2015-04-22 14:14 correct
-rwxrwxr--  1 myusrnm grpnm 14403 2015-04-22 14:14 correct.c

现在,我切换到该组中的一个用户,确认他在其中:

myusrnm@server:~/grpdir$ sudo su hisusrnm
hisusrnm@server:/grpdir$ whoami
hisusrnm
hisusrnm@server:/grpdir$ groups
hisusrnm sshusers grpnm

并编辑 correct.c。现在,在另一个终端中,我检查目录并发现:

-rwxr-xr-x  1 myusrnm grpnm   21638 2015-04-22 14:14 correct
-rwxrwxr--  1 hisusrnm hisusrnm 14368 2015-04-22 14:23 correct.c

我刚刚意识到当我编辑文件时也会发生同样的事情;它的组自动更改为myusrnm,其权限自动更改为 774。为什么会发生这种情况?如何让组成员编辑文件而不更改其组、所有权和权限?这是 Linux 的默认行为吗?还是我的系统表现得特别特别?

答案1

使用设置GID在父文件夹上。这将导致组所有者仍为父文件夹的所有者。

你可以打开 SetGIDchmod g+s folder/path在数字模式的最高位置放置 2;例如:chmod 2740 folder/path。如果它是一个新文件夹,您可以将所有权应用于该文件夹,新文件将承担文件夹组所有者,或者在现有文件夹中,指示文件夹本身,但使用 chmod -R 开关设置所有现有子项的权限。如果子项有现有所有者,您也需要设置这些所有者

chown -R user:group /path/to/existing/dir
chmod -R 2640 /path/to/existing/dir

至于为什么您的权限会发生变化,请检查您的umask。听起来它被设置为0003。您是否对其进行了自定义?考虑将其更改为0022

相关内容