rsync:系统重启时未创建锁文件

rsync:系统重启时未创建锁文件

系统重启后,rsync 启动,但没有锁定文件因此当远程机器上的 rsync 尝试获取目录进行备份时,它会失败,并显示

@ERROR: failed to open lock file
rsync error: error starting client-server protocol (code 5) at main.c(1534) [Receiver=3.0.9]

手动重新启动时,锁定文件已成功创建,并且问题消失,直到下次重新启动服务器/源。

Rsyncd 从 /etc/rc.local 启动:

/usr/bin/rsync --daemon --config /etc/rsyncd/rsyncd.conf

日志中没有什么特别有趣的东西。这是 /var/log/rsyncd.log:

2016/04/28 06:23:34 [26273] connect from <remote client> (<remote ip>)
2016/04/28 06:23:34 [26273] rsync: failed to open lock file /var/lock/rsyncd: Permission denied (13)

rsyncd 配置如下:

# cat /etc/rsyncd/rsyncd.conf
log file=/var/log/rsyncd.log
use chroot = yes
max connections=3
lock file = /var/lock/rsyncd
list = yes
uid = root
gid = root
secrets file = /etc/rsyncd.secrets
strict modes = yes
ignore errors = no
ignore nonreadable = yes
transfer logging = no 
timeout = 600
refuse options = checksum dry-run
dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz

[backup dir config]

服务器主机上的系统是 CentOS(不确定版本,因为它显示的是 RedHat 版本号):

# cat /etc/centos-release 
Red Hat Enterprise Linux AS release 4 (Nahant Update 5)
# uname -a
Linux <hostname> 2.6.32-504.el6.x86_64 #1 SMP Wed Oct 15 04:27:16 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

rsync 是:

# yum info rsync
Installed Packages
Name        : rsync
Arch        : x86_64
Version     : 3.0.6
Release     : 12.el6

造成这种行为的原因是什么?

UPD:尝试使用 xinetd 和 init 脚本启动 rsyncd,两种情况下的行为与前面描述的相同。使用 xinetd 启动时,锁创建在任何情况下都会失败,权限被拒绝;在启动时启动 init 脚本时也是如此 - 手动执行“service rsync restart”可以解决问题。

答案1

在 CentOS 论坛上寻求帮助并解决了问题。这是 SELinux 权限问题,rsync 可执行文件的上下文错误或诸如此类的问题。我做了几件事,其中最有效的是更新策略包。

按照我尝试的顺序:

为锁定文件创建一个单独的目录,恢复其默认值并修复配置以使用新路径

# mkdir /var/lock/rsync
# chmod 755 /var/lock/rsync
# restorecon -r /var/lock/rsync

# vim /etc/rsyncd/rsyncd.conf
lock file = /var/lock/rsync/rsyncd

更新包:

# yum update selinux-policy selinux-policy-targeted

有一些信息人rsync_selinux来自selinux-策略-doc包裹。

还有一个建议我没有尝试,因为问题已经解决了:

# getsebool rsync_server
rsync_server --> off

# setsebool -P rsync_server on

相关内容