问题描述:
写了一个脚本update.sh调用rsync同步更新服务器上的文件,将update.sh加入Linux 自启动脚本/etc/rc.local由系统自动拉起后,rsync会无缘无故的失败,在终端手动运行update.sh就可以正常同步文件。
原因:
查看/var/log/messages发现是SELINUX限制了rsync的执行。
解决办法:
使用ls -Z 查看rsync命令的selinux context,
ls -Z /usr/bin/rsync
-rwxr-xr-x. root root system_u:object_r:rsync_exec_t:s0 /usr/bin/rsync
可以看出是 其type是 rsync_exec_t ,selinux对这个type作了限制。
(1)可以使用 chcon -t bin_t /usr/bin/rsync 改变rsync的type
此方法有被重新标记的风险,永久办法为使用semanage
或
(2)不需要SELINUX可以直接关掉它
参考: