我有一个项目,其中包含我在 Linux 中创建的许多文件。
我需要给另一个用户写权限。所以我创建了一个“开发”组,他和我都是其中的成员,并将文件的所有权更改为该组。
一个典型的文件现在具有以下权限:
-rw-rw-r-- 1 phil dev 5617 Jul 14 15:45 profile.html
但是,当我编辑文件 profile.html 时,它会像这样恢复给我,我的同事失去了编辑的能力。
-rw-rw-r-- 1 phil phil 5617 Jul 14 15:45 profile.html
我如何避免它像这样恢复?改变所有权是错误的做法吗?还是使用了错误的选项?还是这与我的编辑器(emacs)配置有关?
在包含文件夹中,您需要将组更改为 dev,然后使用将其标记为 set-gid。
set gid 位使在该文件夹中创建的文件继承该文件夹的组,并在任何新文件夹上标记 setgid 位。将文件移动到目录时要小心,因为这将保留其现有权限。
您可以使用目录上的 setgid 位来保留子组的组所有权。
您还可以使用 grpid 挂载选项挂载文件系统(假设为 ext2/3 ),这样每当您在目录中创建新文件时,它都会使组所有者与父目录相同。因此,您只需将这些文件所在的目录归组“dev”所有。
如果它是根分区(示例),则重新挂载它:
来自'man mount 8':
emacs 的默认行为是通过重命名来创建备份文件。从emacs手册:
有几种方法可以改变这一点。
或特定于 emacs:
因此,添加到您的 .emacs 中:
我的偏好实际上是“newgrp dev”,因为它是从“个人”模式(我编辑的文件只是我的)到组开发模式(我现在编辑的文件在组之间共享)的显式切换。