rsyncd service ProtectSystem=off 无效

rsyncd service ProtectSystem=off 无效

我正在使用 rsyncd 3.2 运行 Debian 11,ProtectSystem=full默认情况下。

我想覆盖它,所以我经常systemctl edit这样做。这是我要在覆盖中添加的内容:

### Editing /etc/systemd/system/rsync.service.d/override.conf
### Anything between here and the comment below will become the new contents of the file

[Service]
ProtectSystem=off

### Lines below this comment will be discarded

日志报告没有解析错误,并且单元(我认为)使用新配置重新加载。

/etc但是,当尝试 rsync 到(例如)中的路径时,我仍然收到“只读文件系统”错误。

我无法超越此限制,这是怎么回事?或者这个限制不是问题?在我升级到 Debian 11 之前,该配置在 Debian 10 上工作正常,所以我认为这ProtectSystem是导致问题的原因。

/etc/rsyncd.conf编辑:这是我正在使用的配置:

[nameOfMount]
     path = /etc/postfix
     auth users = sysadmin
     secrets file = /etc/rsyncd.secrets
     hosts allow = xxx.xxx.xxx.xxx 
     read only = false
     uid = root
     pre-xfer exec = /usr/local/bin/scriptA.sh
     post-xfer exec = /usr/local/bin/scriptB.sh

pro/post exec 脚本制作正在传输的文件的备份副本,并重新加载 postfix 守护进程。这些错误例如:

rsync error: requested action not supported (code 4) at clientserver.c(1098) [Receiver=3.2.3]
/bin/cp: cannot create regular file '/etc/postfix/fileName.yyyymmddd': Read-only file system

答案1

让我们从状态检查开始

systemctl show rsync | grep -E 'ProtectSystem|NoNewPrivileges'

在我未经修改的系统上,这会返回

ProtectSystem=full
NoNewPrivileges=yes

我之所以注意到这一点是NoNewPrivileges因为此设置会阻止rsyncd更改其 UID。

现在让我们看看守护进程重新启动的时间rsync,并记下它(在我的例子中是 22:53):

ps -ef | grep '[r]sync --daemon'

root     22600     1  0 22:53 ?        00:00:00 /usr/bin/rsync --daemon --no-detach

如果我将你的两行添加到覆盖中,

systemctl edit rsync

[Service]
ProtectSystem=off

然后我得到这个

systemctl show rsync | grep -E 'ProtectSystem|NoNewPrivileges'

ProtectSystem=no
NoNewPrivileges=yes

rsync守护进程没有重新启动:

ps -ef | grep '[r]sync --daemon'

root     22600     1  0 22:53 ?        00:00:00 /usr/bin/rsync --daemon --no-detach

事实上我发现我必须手动执行此操作

systemctl restart rsync
ps -ef | grep '[r]sync --daemon'

root     22770     1  1 22:56 ?        00:00:00 /usr/bin/rsync --daemon --no-detach

但是,文件系统仍处于只读模式。我们需要额外的一行:

systemctl edit rsync

[Service]
ProtectSystem=off
NoNewPrivileges=no

随后重新启动,

systemctl restart rsync

最后的健全性检查,

systemctl show rsync | grep -E 'ProtectSystem|NoNewPrivileges'

在我的系统上,这会返回所需的最终游戏,这允许我写入下面的文件和目录/etc

ProtectSystem=no
NoNewPrivileges=no

相关内容