Linux
配置 SElinux 以允許來自遠端機器的 rsync
我已經用 SElinux 設置了一台 Debian 機器,除了
rsync
遠端機器,一切正常。我已經創建了一些具有附加權限的模組audit2allow
,現在審計日誌中的所有錯誤都消失了。當我嘗試 rsync 到機器時,但不幸的是,仍然不允許連接。將 selinux 設置為 permissive,一切都按預期工作。我沒有將 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 作為守護程序執行的問題。但我也不知道,我的配置有什麼特別之處。因此,歡迎任何有關診斷的進一步想法!
我在 SELinux 和 MySQL 上遇到了類似的問題。執行“semodule -B -D”會將事情重置到我可以看到剩餘審計問題的位置。
原始問題在這裡。