我有一个目录,我想将其设置为一个组的所有成员都具有 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在父文件夹上。这将导致组所有者仍为父文件夹的所有者。
你可以打开 SetGID或chmod 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
。