У меня есть две системы Centos 7, которые должны быть идентичными (кроме данных).
У меня есть серверный процесс на сервере A, которому запрещен доступ для записи в конкретный каталог. Отказ проявляется как отказ SELinux.
На сервере B той же службе не запрещен доступ на запись в один и тот же каталог.
Я сравнил разрешения файлов, каталоги, списки управления доступом и контексты SELinux на обоих серверах, и они выглядят идентичными, за исключением того, что A получает ошибку «отказано», а B - нет.
В качестве обходного пути я установил SELinux на «Permissive», и теперь серверный процесс на A может писать в каталог.
На данный момент я просто ищу идеи, что еще я могу устранить; Если потребуется, я с радостью предоставлю вам технические подробности. В целом я довольно опытен в администрировании Linux, но не очень разбираюсь в SELinux, поэтому на данный момент я в тупике.
Изменить - технические подробности
У меня возникли проблемы с сервисом IPA. На самом деле, однако, это Apache в комплекте с IPA, которому не разрешено писать в каталог 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
Сервер А
$ getsebool -a| grep httpd_manage_ipa
httpd_manage_ipa --> off
Сервер B
$ getsebool -a| grep httpd_manage
httpd_manage_ipa --> on
Как такое могло случиться? Кроме того, как я могу клонировать настройки selinux из B-> A?
Это ни в коем случае не ответ, но что вы видите в результате работы audit2why или audit2allow, если они доступны? Указывают ли они модули, которые, возможно, потребуется обновить, чтобы разрешить доступ?