![诊断 rsync 错误输出](https://linux22.com/image/695296/%E8%AF%8A%E6%96%AD%20rsync%20%E9%94%99%E8%AF%AF%E8%BE%93%E5%87%BA.png)
我继承了一个 Centos 6.5 系统,它在运行 时输出多行错误rsync
。 rsync 正在同步到作为 挂载的本地连接驱动器/storage
。 命令是:
rsync -aAXv /* /storage/backup/ --exclude={/dev/*,/proc/*,/sys/*,/tmp/*,/run/*,/mnt/*,/media/*,/lost+found,/storage/*}
# Error concern 1, # Error concern 2, # Error concern 3
下面的输出中出现了三种不同类型的错误:
rsync -aAXv /* /storage/backup/ --exclude={/dev/*,/proc/*,/sys/*,/tmp/*,/run/*,/mnt/*,/media/*,/lost+found,/storage/*}
sending incremental file list
etc/cron.d/
root/
root/.bash_history
root/.viminfo
selinux/booleans/abrt_anon_write
selinux/booleans/abrt_handle_event
selinux/booleans/allow_console_login
[...]
# Error concern 1: There are probably 80 or more of these mkstemp errors, but I've shortened it:
rsync: mkstemp "/storage/backup/selinux/class/x_pointer/perms/.setfocus.0C5BYW" failed: Permission denied (13)
rsync: mkstemp "/storage/backup/selinux/class/x_pointer/perms/.use.iRMquA" failed: Permission denied (13)
rsync: mkstemp "/storage/backup/selinux/class/x_pointer/perms/.write.rHXg0d" failed: Permission denied (13)
rsync: mkstemp "/storage/backup/selinux/class/x_property/.index.Zwc8vR" failed: Permission denied (13)
rsync: mkstemp "/storage/backup/selinux/class/x_property/perms/.append.tTK01u" failed: Permission denied (13)
rsync: mkstemp "/storage/backup/selinux/class/x_property/perms/.create.KGNUx8" failed: Permission denied (13)
rsync: mkstemp "/storage/backup/selinux/class/x_property/perms/.destroy.IiUP3L" failed: Permission denied (13)
[...]
# Error concern 2:
tmp/
rsync: rsync_xal_clear: lremovexattr("storage","security.selinux") failed: Permission denied (13)
var/cache/man/whatis
[...]
# Error concern 3:
var/run/utmp
rsync: set_acl: sys_acl_set_file(var/run/cups/certs/0, ACL_TYPE_ACCESS): Operation not supported (95)
var/run/postgresql/.s.PGSQL.5432.lock
[...]
# Finishing output:
sent 4288406721 bytes received 52199 bytes 86635533.74 bytes/sec
total size is 22337384552 speedup is 5.21
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1039) [sender=3.0.6]
笔记
rsync 似乎运行正常,直到它遇到/selinux
目录中包含隐藏文件的特定部分。当 SELinux 设置为宽容时setenforce 0
,不会发生这些错误。尽管# Error concern 2
和# Error concern 3
仍然会发生。
/selinux
目录和目录的 SELinux 上下文/storage
如下:
drwxr-xr-x. root root system_u:object_r:security_t:s0 selinux
drwxr-xr-x. root root system_u:object_r:file_t:s0 storage
# /storage/backup directory
drwxr-xr-x. root root unconfined_u:object_r:public_content_t:s0 backup
到目前为止我# Error concern 2
还# Error concern 3
没有线索。
如果我遗漏了什么,请告诉我。我对 CentOS 6.5 的了解不如对 7 的了解,因为我不知道为什么会有一个/selinux
目录/
。我有一台 CentOS 7.2 服务器,它正在对连接的存储驱动器执行相同的 rsync 操作,没有任何问题。任何帮助或建议都将不胜感激。
更新 1
我通过以下方式将 SELinux 上下文更改/storage/backup
为public_content_rw_t
:
semanage fcontext -a -t public_content_rw_t "/storage/backup(/.*)?"
restorecon -Rv /storage/backup
我很快会再次运行 rsync 并报告是否有任何变化。
更新 2
之后,我使用新的安全上下文再次运行了 rsync,但得到了相同的错误结果。我想知道 rsyncing 目录是否/selinux
真的值得,因为系统/etc/selinux
无论如何都应该备份,如果系统需要重新标记自身,那么它将拥有所有上下文。有人可以对此发表意见吗?
更新 3
我倾向于不备份/selinux
目录。以下sestatus
显示了 CentOS 6.5 和 CentOS 7.2 之间的差异:
CentOS 6.5
SELinux status: enabled
SELinuxfs mount: /selinux
Current mode: enforcing
CentOS 7.2
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: enforcing
据我了解,该/selinux
目录被用作 SElinux 文件系统的挂载点?我想知道这是否是导致错误的原因。
答案1
/selinux
和(在 RHEL/CentOS 6 中)的区别在于/etc/selinux
前者是“用于导出安全策略 API 的伪文件系统”(请记住,强制访问控制是内核强制的);而后者“包含机器本地的配置文件”。
同步时不应包含/selinux
(或任何其他)伪文件系统。
有一个很好的问答Unix 和 Linux关于这个主题,有非常有用的链接文档。