我有一个目录,我希望其中的所有文件始终以某种方式获得许可和拥有,无论哪个用户编辑它们。
这很接近:
# users: wilma, betty
# group: devs contains wilma and betty.
# directory: 'dir'
chgrp -R devs dir
find dir -type d -exec chmod 2770 \{\} \+
find dir -type f -exec chmod 660 \{\} \+
setfacl -d -R -m group:devs:rwx dir
setfacl -R -m group:devs:rwx dir
但如果其中一个用户使用 chmod(重置 acl 掩码)以及我在现实生活中见过但尚未确定它是如何发生的其他几种情况,它仍然会变得混乱!
我基本上不希望这些用户能够更改权限。
我能想到的唯一方法是制作一个 vfat fs 并将其安装在该目录上!
答案1
可以使用fuse文件系统绑定文件系统来实现这一目标。
例如,如果您希望用户 wilma 和 betty 能够共享一个文件目录,两者都具有写访问权限,并且都无法限制对方的访问权限。
假设 Wilma 是主要用户(您可以为此目的选择第三个用户),并且他们都位于“devs”组中。
wilma% mkdir src -m760
wilma% echo some content >src/file-created-by-wilma
wilma% mkdir shared
wilma% bindfs src shared -g devs -u wilma -p770 -m wilma:betty --create-with-perms=660
现在已经设置完毕,由两个用户在这个共享安装中创建一些文件......
wilma% cd shared
wilma% echo hi>file-created-by-wilma-inside-bindfs
betty% cd /path/to/shared
betty% echo hi>file-created-by-betty-inside-bindfs
查看挂载点内的文件。请注意,每个用户都将自己视为所有者!
wilma% ls -l
-rwxrwx--- 1 wilma devs file-created-by-willma
-rwxrwx--- 1 wilma devs file-created-by-willma-inside-bindfs
-rwxrwx--- 1 wilma devs file-created-by-betty-inside-bindfs
betty% ls -l
-rwxrwx--- 1 betty devs file-created-by-willma
-rwxrwx--- 1 betty devs file-created-by-willma-inside-bindfs
-rwxrwx--- 1 betty devs file-created-by-betty-inside-bindfs
查看“实际”文件...
wilma% ls -l src/
-rw-rw--- 1 wilma wilma file-created-by-willma
-rw-rw--- 1 wilma wilma file-created-by-willma-inside-bindfs
-rw-rw--- 1 wilma wilma file-created-by-betty-inside-bindfs