« 上一篇下一篇 »

rsync的incoming-chmod如何设置

【目标:】

希望通过smb使用rsyncd的传入目录里的文件的时候,能正常读写。

所以需要 smb用户(通常是nobody:nogroup)在此目录(owner是rsyncd或root等)要有rw权限


============== 以下是引用 ==============

根据对rsyncd.conf手册页的阅读,“incoming-chmod”

接受由chmod(1)手册页定义的逗号分隔的“ chmod”字符串可选地以D或F为前缀,以使它们适用于目录或文件。

本地chmod(1)手册页未提及字符串。指模式

可以是符号或八进制/数字。因此我尝试了

incoming-chmod = D755,F644

但这导致了“incoming-chmod”指令无效:D755,F644。  我应该报告rsync手册页存在问题吗?

“字符串”更改为“符号模式”,或者rsync增强为

是否支持八进制/数字模式?


接下来,我尝试了符号等效:

incoming chmod = Du=rwx,g=rx,o=rx,Fu=rw,g=r,o=r

这次没有来自rsync的错误消息,但是

目录获得了rx许可;设置的权限比没有设置“传入的chmod”的权限少。


接下来我尝试了

incoming chmod = Du+rwx,g+rx,o+rx,Fu+rw,g+r,o+r

这会在目录上同时在文件上设置755。

在网上搜索用法示例中,发现

“ incoming chmod”仅用于带有+或-的符号模式

所以我尝试了

incoming chmod = Du+rwx,g+rx,o+rx,Fa-x

这给出了期望的结果。

{原文自: https://lists.samba.org/archive/rsync/2010-December/025871.html }

============== 以上是引用 ==============


我希望的这个备份文件夹下,权限是 D777,F666 :

尝试过  Dugo+rwx,Fugo+rw-x、以及 Da+rwx,Fa-x+rw

都不正确。

cat /var/log/rsyncd.log 可见:

2020/05/29 09:10:40 [22081] Invalid "incoming chmod" directive: Dugo+rwx,Fugo+rw-x

2020/05/29 09:22:51 [22151] Invalid "incoming chmod" directive: Da+rwx,Fa-x+rw

格式略有错误,

这说明D和F参数后只能跟一个动作,或者+ 或者-,

综上,最后修正如下(把增加权限和去除权限分开来写)

incoming chmod = Da+rwx,Fa+rw,Fa-x

然后,重启动rsyncd之后,log里面没有再出现错误。

测试:

从另一台机器上rsync复制含有x权限的文件过来:

原文件 557 权限,复制过来后,成为666权限,完全正确。


done!