gri*_*sha 5 fedora permissions selinux rsync
我目前正在从 Ubuntu 20.04 迁移到 Fedora 34。到目前为止,以下备份脚本运行良好:
rsync \
-avixXEH \
--stats \
--delete \
--numeric-ids \
--log-file="$LOG_FILE" \
--link-dest "$LATEST" \
--exclude '/some/exclude' \
admin@nas:/{a,b,c} \ # source is remote nas (via ssh)
"$TARGET" \ # $TARGET is ext. USB disk on fedora OS desktop
Run Code Online (Sandbox Code Playgroud)
不幸的是,在 Fedora 上,每个复制的路径现在都会导致警告,污染日志:
rsync_xal_set:lremovexattr(“/my/path/file.zPXUj1”,“security.selinux”)失败:权限被拒绝(13)
这似乎是 rsync 想要保留/删除扩展属性 ( ) 和 SELinux 的问题-X
。
红帽 Michal Ruprich最近引用的一句话:
RHEL5 中已通过抑制错误消息“修复”了此问题,使其不会中断正在运行的系统。[...]
“当源文件中的扩展属性已被删除时,rsync-2.6 不会删除目标文件的扩展属性。我们称其为 bug。
rsync-3.0 正确尝试删除已擦除的扩展属性。
如果目标系统上存在 selinux,则 rsync 无法删除文件的安全上下文,并输出上述错误。因此,除了信息性错误消息之外,2.6 和 3.0 的行为是相同的。”
使用rsync
3.2.3
非 SELinux 源,我的解释是 - 否则请纠正我:
使用此安全功能将文件从没有 SELinux 的源复制到目标将被解释为删除扩展"security.selinux"
文件属性。rsync
由于 SELinux 对目标的安全限制,无法将其删除。
这就提出了一个问题:
我仍然想复制扩展属性,-X
而不是按照此处的建议暂时禁用完整的 SELinux 。另外,偶然发现了一个替代方案,该替代方案表明setsebool -P rsync_full_access 1
- 不确定它到底做了什么。
仅针对这种特殊情况从根本上解决问题确实会很好:给定 USB 磁盘挂载点/run/media/user/<SOME-UID>
,是否有某种方法可以在 SELinux 中仅针对此路径或类似路径授予必要的权限?
提前致谢
经过更多研究并发现这个过时的响应,似乎这个选项修复了它:
--filter='-x security.selinux'
Run Code Online (Sandbox Code Playgroud)
据该男子称:
--xattrs, -X
[...]
The above name filtering can be overridden by using one or
more filter options with the x modifier. When you specify
an xattr-affecting filter rule, rsync requires that you do
your own system/user filtering, as well as any additional
filtering for what xattr names are copied and what names
are allowed to be deleted. For example, to skip the
system namespace, you could specify:
--filter='-x system.*'
Run Code Online (Sandbox Code Playgroud)
例子:
rsync -aHAXX \
--filter='-x security.selinux' \
--numeric-ids \
--no-inc-recursive \
--delete \
--exclude={"/lost+found"} \
--info=progress2 \
source \
target
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3715 次 |
最近记录: |