![如何使目录中的所有新文件归特定用户所有?](https://linux22.com/image/490995/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%9B%AE%E5%BD%95%E4%B8%AD%E7%9A%84%E6%89%80%E6%9C%89%E6%96%B0%E6%96%87%E4%BB%B6%E5%BD%92%E7%89%B9%E5%AE%9A%E7%94%A8%E6%88%B7%E6%89%80%E6%9C%89%EF%BC%9F.png)
我希望目录中的所有文件/var/www
都归 nginx.devel 所有。我已经执行了chmod
一次并使用 更新了这些文件rsync
。
但是如果我创建一个新文件然后rsync
它,它将归 user.user 拥有,并且我需要chmod
以sudo
它的权限运行。
答案1
你不能。好吧,无论如何都不是自动的。你能但是,通过仔细规划和适当的 umask,强制执行组权限可以解决大多数权限问题。如果您在目录上设置 setgid 位,/var/www
它将确保在其下创建的任何新文件都归该devel
组所有。
请注意,根据您使用的标志,rsync
可能会覆盖此行为并复制源文件的所有权。
要设置 setgid 位:
$ ls -ld 测试 drwxr-xr-x 2 insyte insyte 4096 2009-08-13 04:39 测试 $ chmod g+s 测试 $ ls -ld 测试 drwxr-sr-x 2 insyte insyte 4096 2009-08-13 04:39 测试
行为演示:
$id 复制代码 uid=1000(insyte)gid=1000(insyte)组=4(adm)、20(拨出)、24(cdrom) $ ls -ld 测试 drwxr-xr-x 2 insyte 备份 4096 2009-08-13 04:39 测试 $ touch 测试/file1 $ ls -l 测试 共 0 -rw-r--r-- 1 insyte insyte 0 2009-08-13 04:43 file1 $ sudo chmod g+s 测试 $ ls -ld 测试 drwxr-sr-x 2 insyte 备份 4096 2009-08-13 04:43 测试 $ touch 测试/file2 $ ls -l 测试 共 0 -rw-r--r-- 1 insyte insyte 0 2009-08-13 04:43 file1 -rw-r--r-- 1 insyte 备份 0 2009-08-13 04:44 file2
效果也是递归的;设置 setgid 位后创建的任何新目录也将设置 setgid 位。
当然,这种方法的替代方法是每分钟运行一次 cron 作业,并修复 下文件的权限/var/www/
。