SELinux httpd доступ для записи в каталог


9

Я новичок в SELinux. пришел из Debian. Я хочу дать httpdдоступ к каталогу.

SELinux Alert Browser предлагает:

# grep httpd /var/log/audit/audit.log | audit2allow -M mypol
# semodule -i mypol.pp 

Я не мог понять, как работает эта команда. Я нигде не указываю путь к каталогу. откуда он знает, какой каталог разрешить для httpd?

Ранее я использовал grep для извлечения текста из вывода или файла. Но здесь grep используется в процессе. Это я не получил.

Также, что является актуальным решением. Если я хочу дать httpd доступ для записи в каталог?


4
И чтобы ответить на ваш другой вопрос, audit2allow читает файл журнала SELinux и записывает политику, разрешающую все, что было заблокировано; имя каталога будет в сообщении журнала. Используя httpd, вы немного ограничиваете его, но метод все еще более широк, чем должен быть.
miken32

Соответствующий ответ: unix.stackexchange.com/questions/511929/…
Salah-1

Ответы:


17

Вот как навсегда изменить контекст каталога:

# install semanage if you don't already have it:
yum install policycoreutils-python

# give the directory a new default context. The part at the end is a regex.
semanage fcontext -a -t httpd_sys_rw_content_t "/path/to/directory(/.*)?"

# apply the default context to the directory
restorecon -R /path/to/directory

Вот еще немного документации по различным контекстам для httpd:

RHEL 7: https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/SELinux_Users_and_Administrators_Guide/sect-Managing_Confined_Services-The_Apache_HTTP_Server-Types.h

РЕЛ 6: https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Managing_Confined_Services/sect-Managing_Confined_Services-The_Apache_HTTP_Server-Types.html


Отлично! У меня работало в Fedora 26, policycoreutils-python уже был установлен по умолчанию.
Sir_Faenor

5

SELinux использует расширенные атрибуты, которые могут добавляться к структурам каталогов на диске. Подумайте, если это как метаданные. Списки контроля доступа (ACL), являющиеся другим.

Расширенные атрибуты, которые вам нужно добавить в каталог, называются контекстами, а SELinux действует как гаишник, следя за тем, чтобы исполняемый файл, имеющий определенные контексты, имел доступ к файловой системе на основе этих контекстов. Вы можете увидеть, что доступно в каталоге, используя -Zпереключатель ls.

$ sudo ls -Z /var/www
drwxr-xr-x. root root system_u:object_r:httpd_sys_script_exec_t:s0 cgi-bin
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 html

Здесь вы можете увидеть , что эти каталоги имеют контекст httpd_sys_script_exec_t:s0на cgi-binреж. и htmlреж. есть httpd_sys_content_t:s0.

Вы можете добавить их, используя chconкоманду:

$ sudo chcon -t httpd_sys_content_t public_html

Команда, о которой вы спрашиваете, просто загрузит модуль. mypoll.ppЯ не верю, что она предоставит какие-либо разрешения для чего-либо, скорее всего, в сообщении, audit.logкоторое вам не хватает с вашей командой, будет больше сообщений , которые более подробно расскажут, что вам нужно сделать, чтобы разрешить доступ.

Я бы посоветовал вам уделить немного времени и ознакомиться с SELinux. Сначала это сбивает с толку, но, как правило, это просто, после того, как я провел с ним немного времени. Посмотрите ресурсы ниже, чтобы начать.

Ссылки


Спасибо. Я пойду через них. Но можете ли вы сказать мне сейчас, что мне нужно сделать, чтобы дать доступ на запись в этот каталог?
Нил Басу

Если это содержимое, которое вы хотите, чтобы Apache читал, вам, вероятно, нужно добавить этот контекст в каталог:chcon -R -t httpd_sys_content_t <dir>
slm
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.