配置 SElinux 以允许从远程计算机进行 rsync

配置 SElinux 以允许从远程计算机进行 rsync

我已经使用 SElinux 设置了一台 Debian 机器,除了rsync从远程机器之外,一切都运行良好。我已经使用 创建了一些具有附加权限的模块audit2allow,现在审计日志中的所有错误都消失了。当我尝试 rsync 到机器时,但不幸的是,连接仍然不允许。将 selinux 设置为宽容,一切都按预期工作。

我没有将 rsync 作为守护进程运行,根据网络中的问题报告,这通常会导致更多问题。rsync 只是 Debian 7 的默认配置。

远程 rsync 失败并显示以下消息:

user1@othermachine:~$ rsync -vv servermachine:/home/user1/some/file .
opening connection using: ssh servermachine rsync --server --sender -vve.Lsf . /home/user1/some/file 
rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
rsync error: error in rsync protocol data stream (code 12) at io.c(605) [Receiver=3.0.9]

rsync 的权限如下:

root@host:~# ls -Z /usr/bin/rsync
system_u:object_r:rsync_exec_t:SystemLow /usr/bin/rsync

当我以宽容模式运行远程 rsync 和服务器时,我看到如下过程:

root@host:~# ps aux|grep rsync
user1   22948  1.0  0.0  26680  5156 ?        Ds   11:08   0:00 rsync --server --sender -vlogDtpre.iLsf . /home/user1/some/file
root     22954  0.0  0.0  11292   924 pts/0    S+   11:09   0:00 grep rsync

root@host:~# ps -eZ | grep rsync
unconfined_u:system_r:rsync_t:s0-s0:c0.c1023 22948 ? 00:00:00 rsync

例如,scp 可以毫无问题地处理同一个文件。我已经授予 rsync 的附加权限如下所示。我不确定他们是否太慷慨了,但他们至少修复了 中出现的问题audit.log

allow rsync_t user_home_t:file { read write getattr open };
allow rsync_t sshd_t:fifo_file { write read };
allow setfiles_t device_t:filesystem getattr;
allow setfiles_t devpts_t:filesystem getattr;
allow setfiles_t tmpfs_t:filesystem getattr;
allow setfiles_t sysfs_t:filesystem getattr;

所以,最让我困扰的是,我没有看到任何 AVC 条目,但它仍然不起作用。有什么可以增加详细程度的吗?怎么可能没有授予某些权限,但没有 AVC 条目?其次,我有点惊讶,我在网上找不到任何关于这个问题的参考资料,只有 selinux/rsync 作为守护进程运行的问题。但我也不知道我的配置有什么特别之处。所以任何关于诊断的进一步想法都会受到欢迎!

答案1

我在 SELinux 和 MySQL 中遇到了类似的问题。运行“semodule -B -D”重置后,我可以看到剩余的审计问题。

最初的问题是这里

相关内容