Як змусити SELinux дозволити Apache та Samba в одній папці?


26

У налаштуваннях, у яких я налаштований, я хочу дозволити samba та apache до доступу / var / www. Я можу встановити контекст, щоб дозволити доступ до samba, але тоді httpd не має доступу. Використання setenforce до 0 усуває проблеми, тому я знаю, що це SELinux.

Крім того: Як я можу переглянути контекст папки і чи може папка мати декілька контекстів?

(CentOS)


Ви спробували використовувати булеву опцію system-config-selinux?

Відповіді:


39

По-перше, ви можете переглянути контекст чогось із ls за допомогою ls -Z

[root@servername www]# ls -dZ /var/www
drwxr-xr-x  root root system_u:object_r:httpd_sys_content_t /var/www

По-друге, є два варіанти надання доступу Samba та Apache до одного каталогу.

Простий спосіб - просто дозволити доступ самби для читання / запису скрізь за допомогою:

setsebool -P samba_export_all_rw 1

Це просто, легко і не возиться з якимись дивними властивостями SELinux.

Якщо ви переймаєтесь тим, що Samba має повний доступ до всіх каталогів і хочете лише змінити / var / www, спробуйте:

chcon -t public_content_rw_t /var/www
setsebool -P allow_smbd_anon_write 1
setsebool -P allow_httpd_anon_write 1

Це дозволить і Samba, і Apache писати доступ до будь-яких каталогів з контекстом public_content_rw_t. Зауважте, що chcon змінює лише / var / www. Будь-які нові каталоги, створені під / var / www, будуть public_content_rw_t, але не існуючі каталоги, такі як / var / www / html або / var / www / manual. Якщо ви хочете все змінити, додайте до chcon -R:

chcon -R -t public_content_rw_t /var/www

Ви можете переглянути цю вікі-сторінку CentOS, щоб отримати підказки щодо інших булевих файлів SELinux.


Я спробував це, і він скаржиться, що контекст уже визначений.
Джошуа Енфілд

Ви маєте рацію, схоже, що змінилися речі з моменту останнього спілкування з SELinux. Я оновлю свою відповідь деякими іншими параметрами.
Девід

3
@До ти врятував мій недопалок. Побачимось на роботі завтра.
Joel E Salas

Я хотів би зазначити, що якщо ваша веб-програма вкладена в спільну частину самби, вам потрібно буде встановити контекст і в батьківських каталогах. Наприклад:chcon -t public_content_rw_t /mnt/share/webroot(/.*)? chcon -t public_content_rw_t /mnt/share
Грег Шеремета

1
Дякую, я боровся з чимось подібним, але з ftp, і все працює після виконанняsetsebool -P ftpd_full_access=1
giorgiline

9
SHARING FILES
   If you want to share files with multiple domains (Apache,  FTP,  rsync,
   Samba),  you can set a file context of public_content_t and public_content_rw_t.
   These context allow any of the above domains  to  read  the
   content.   If  you want a particular domain to write to the public_con‐
   tent_rw_t   domain,   you   must   set   the    appropriate    boolean.
   allow_DOMAIN_anon_write.  So for samba you would execute:

       setsebool -P allow_smbd_anon_write=1

Наприклад:

semanage fcontext -a -t public_content_rw_t '/var/www(/.*)?'
restorecon -R /var/www
setsebool -P allow_smbd_anon_write 1
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.