【问题标题】:rsync sets wrong grouprsync 设置了错误的组
【发布时间】:2012-03-14 05:13:56
【问题描述】:

我有一个 bash 脚本来在两台服务器之间同步 Zendframework 站点,但由于某种原因,一个文件没有获得正确的所有者/组。由于该文件随后变得无法被 apache 读取,因此该站点在该服务器上出现故障。

在第一台服务器上,我有以下文件:

-rwxrwx--- 1 monit www-data 4184 2012-03-14 05:39 application.ini

这在第二台服务器上应该完全相同,因为用户监控和组 www-data 都存在于那里,但情况并非如此,如下所示。

-rwxrwx--- 1 monit monit    4184 2012-03-14 05:39 application.ini

此文件是唯一受影响的文件。所有其他文件都获得正确的权限、所有者和组。 rsync命令如下

rsync -az --delete --stats  --include="document_root/.*" --exclude=".*" SERVER1 SERVER2

rsync 是 3.0.3 版本,Server 1 是 Ubuntu 9.04,Server2 是 Debian 5.0

目前,通过将原始文件的权限设置为 -rwxrwxr-- 来规避问题。同步的文件仍然有错误的组,但至少是可读的。

【问题讨论】:

    标签: linux bash rsync


    【解决方案1】:

    检查monit 用户是否在目标服务器上的www-data 组中。 尝试仅对有问题的文件进行 rsync,同时在目标服务器上运行 rsync 并添加一个或多个 -v 选项,然后查看输出:

    $ groups monit |grep www-data
    $ rsync -avv source_host:path/to/application.ini ./application.ini
    

    【讨论】:

    • 用户monit只是monit组的成员,组www-data中唯一的成员是apache创建的用户www-data。两台服务器都是如此。仅同步该文件并没有提供任何有用的信息,但我确实注意到在进行更多搜索后,更多文件与 monit:monit 所有权同步
    • 如果 rsync 以 monit 用户(即非 root)运行,它不能将文件组更改为它不属于的组。尝试以监视用户chgrp www-data application.ini 的身份尝试,并看到它失败并出现“不允许操作”错误。如果 rsync 以 www-data 用户身份运行,则它无法 chown 进行监控。解决方案是将 monit 用户添加到 www-data 组,或者像您一样更改权限,或者以 root 身份运行 rsync(坏主意)。
    • 多哈。有时我只是单纯的愚蠢。但是,即使在我将用户监视器添加到组 www-data 之后,仍然会出现同样的问题。似乎我无权将组更改为我所属的组。但我现在只满足于将用户 www-data 添加到组 monit,这也解决了问题,但如果你能给我更多的输入,我会很高兴。
    • 更改用户组后不要忘记重新登录。
    猜你喜欢
    • 1970-01-01
    • 2015-03-07
    • 1970-01-01
    • 2012-01-10
    • 1970-01-01
    • 2023-01-29
    • 2023-04-09
    • 2011-09-10
    • 1970-01-01
    相关资源
    最近更新 更多