我希望/var/www
目录中的所有文件都归nginx.devel所有。 我已经执行了一次chmod
,并使用rsync
更新这些文件。
但是,如果我创build一个新的文件,然后rsync
它,它将由user.user拥有,我需要运行与sudo
权限的chmod
。
你不能。 那么,不是自动的。 但是,您可以执行组权限,通过仔细的计划和适当的umask,可以解决大多数权限问题。 如果在/var/www
目录中设置setgid位,它将确保在其下创build的任何新文件都由devel
组拥有。
请注意,根据您使用的标志, rsync
可能会覆盖此行为并复制源文件的所有权。
要设置setgid位:
$ ls -ldtesting drwxr-xr-x 2 insyte insyte 4096 2009-08-13 04:39testing $ chmod g + stesting $ ls -ldtesting drwxr-sr-x 2 insyte insyte 4096 2009-08-13 04:39testing
行为演示:
$ id uid = 1000(insyte)gid = 1000(insyte)groups = 4(adm),20(dialout),24(cdrom) $ ls -ldtesting drwxr-xr-x 2 insyte backup 4096 2009-08-13 04:39testing $ touch test / file1 $ ls -l test 总计0 -rw-r - r-- 1 insyte insyte 0 2009-08-13 04:43 file1 $ sudo chmod g + stesting $ ls -ldtesting drwxr-sr-x 2 insyte backup 4096 2009-08-13 04:43testing $ touch test / file2 $ ls -l test 总计0 -rw-r - r-- 1 insyte insyte 0 2009-08-13 04:43 file1 -rw -r - r-- 1 insyte backup 0 2009-08-13 04:44 file2
效果也是recursion的; 设置setgid位后创build的任何新目录也将设置setgid位。
当然,这种方法的替代scheme将是一个每分钟运行一次的cron作业,并修复/var/www/
下文件的权限。