我有以下问题。在 Unix 服务器 (CentOS 5.5) 上,属于同一组的多个用户可以访问相同的文件(通过 ssh)。在某个特定用户(假设用户 A)编辑文件后,文件所有者更改为 A,组 (G) 和权限 (0664) 保持不变。一旦第二个用户 (B) 尝试修改同一文件,他就不允许这样做。另一方面,如果用户 B 修改了文件,那么 A 可以毫无问题地更改它(除了搞砸权限)。
我知道权限/组出了问题,但我不知道是什么。因此,任何帮助将不胜感激。
提供更多信息:
$ ls -l /path/file
-rwxrwxr-x 1 B G 42269 jan 14 10:30 file
$ getfacl /path/file
# file: file
# owner: B
# group: G
user::rwx
group::rwx
other::r-x
$ ls -ld /path
drwxrwxr-x 12 B G 4096 jan 14 10:24 .
$ getfacl /path
# file: .
# owner: B
# group: G
user::rwx
group::rwx
other::r-x
答案1
A 有权写入该目录,因此 A 的编辑器写入一个新文件/path/file.tmp
(或一些类似的名称),然后将新文件移动到/path/file
.由于 A 刚刚创建了该文件,因此该文件归 A 所有。
B 无权写入该目录,因此 B 的编辑器覆盖现有文件,这不会更改所有权。
(看如何编辑文件并保留其访问控制列表/SELinux 安全上下文?了解编辑们为什么会这样做。)
看起来A在G组,但B不在。解决这个问题最简单的方法是确保 A 和 B 要么都在 G 组中,要么都不在 G 组中。