Permissions
SELinux 拒絕訪問創建文件,但比較所有 selinux 設置顯示沒有問題
我有兩個應該相同的 Centos 7 系統(數據除外)。
我在伺服器 A 上有一個伺服器程序,該程序被拒絕寫入特定目錄。拒絕顯示為 SELinux 拒絕。
在伺服器 B 上,不會拒絕同一服務對同一目錄的寫訪問。
我比較了兩台伺服器之間的文件權限、目錄權限、ACL 和 SELinux 上下文,它們看起來相同——除了 A 得到“拒絕”錯誤而 B 沒有。
作為一種解決方法,我將 SELinux 設置為“Permissive”,現在 A 上的伺服器程序可以寫入目錄。
在這一點上,我真的只是在尋找可以解決其他問題的想法;如果需要,我很樂意提供技術細節。我在 Linux 管理方面經驗豐富,但在 SELinux 方面經驗並不豐富,所以在這一點上我很難過。
編輯——技術細節
我遇到問題的服務是 IPA。但實際上,它是與 IPA 捆綁在一起的 Apache,不允許寫入 memcached 目錄。具體來說,使用者“apache”被拒絕寫訪問“/var/run/ipa_memcached/”。
以下是我執行的命令,它們在伺服器之間返回的結果完全相同(PID 除外)。(這些是以root身份執行的,所以以“$”開頭的行是命令,下面是輸出)
$ semanage fcontext -l | grep memc /var/run/memcached(/.*)? all files system_u:object_r:memcached_var_run_t:s0 /var/run/ipa_memcached(/.*)? all files system_u:object_r:memcached_var_run_t:s0 /usr/bin/memcached regular file system_u:object_r:memcached_exec_t:s0 /etc/rc\.d/init\.d/memcached regular file system_u:object_r:memcached_initrc_exec_t:s0 $ ls -ldZ /var/run/ipa_memcached/; ls -lZ /var/run/ipa_memcached/ drwx------. apache apache system_u:object_r:memcached_var_run_t:s0 /var/run/ipa_memcached/ srwx------. apache apache system_u:object_r:memcached_var_run_t:s0 ipa_memcached -rw-r--r--. apache apache system_u:object_r:memcached_var_run_t:s0 ipa_memcached.pid $ sudo -u apache id -Z unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 $ ps auxZ | grep http system_u:system_r:httpd_t:s0 apache 12321 0.0 6.6 674224 124860 ? Sl 19:07 0:06 (wsgi:ipa) -DFOREGROUND system_u:system_r:httpd_t:s0 apache 12322 0.0 1.3 324060 26040 ? S 19:07 0:00 /usr/sbin/httpd -DFOREGROUND system_u:system_r:httpd_t:s0 kdcproxy 12319 0.0 1.2 628032 23604 ? Sl 19:07 0:00 (wsgi:kdcproxy) -DFOREGROUND system_u:system_r:httpd_t:s0 kdcproxy 12320 0.0 1.2 628032 23604 ? Sl 19:07 0:00 (wsgi:kdcproxy) -DFOREGROUND system_u:system_r:httpd_t:s0 root 12314 0.0 1.3 298704 24652 ? Ss 19:07 0:00 /usr/sbin/httpd -DFOREGROUND system_u:system_r:httpd_t:s0 root 12318 0.0 0.5 53880 11096 ? S 19:07 0:00 /usr/libexec/nss_pcache 4423694 off /etc/httpd/alias unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 root 17615 0.0 0.0 112648 972 pts/0 R+ 21:11 0:00 grep --color=auto http $ find /var/run/ipa* | xargs getfacl getfacl: Removing leading '/' from absolute path names # file: var/run/ipa # owner: root # group: root user::rwx group::--- other::--- # file: var/run/ipa/services.list # owner: root # group: root user::rw- group::r-- other::r-- # file: var/run/ipa/renewal.lock # owner: root # group: root user::rw- group::--- other::--- # file: var/run/ipa_memcached # owner: apache # group: apache user::rwx group::--- other::--- # file: var/run/ipa_memcached/ipa_memcached.pid # owner: apache # group: apache user::rw- group::r-- other::r-- # file: var/run/ipa_memcached/ipa_memcached # owner: apache # group: apache user::rwx group::--- other::---
編輯發現問題
audit2why
向我展示了真正導致我的問題的原因grep jsilverman /var/log/audit/audit.log* | grep denied| audit2why ... /var/log/audit/audit.log.1:type=AVC msg=audit(1471293346.098:440365): avc: denied { create } for pid=13668 comm="httpd" name="krbcc_A_jsilverman" scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:memcached_var_run_t:s0 tclass=file Was caused by: The boolean httpd_manage_ipa was set incorrectly. Description: Allow httpd to manage ipa Allow access by executing: # setsebool -P httpd_manage_ipa 1 ... (and more, similar messages) ...
這導致比較 selinux 設置
伺服器 A
$ getsebool -a| grep httpd_manage_ipa httpd_manage_ipa --> off
伺服器 B
$ getsebool -a| grep httpd_manage httpd_manage_ipa --> on
現在,這怎麼可能發生?另外,如何從 B->A 複製 selinux 設置?
無論如何都不是答案,但是您認為 audit2why 或 audit2allow 的輸出(如果可用)是什麼?他們是否指定了可能需要更新以允許訪問的模組?