Jak sprawić, by SELinux zezwalał Apache i Sambie na ten sam folder?

26

W konfiguracji mam konfigurację Chcę zezwolić na dostęp do samby i apache / var / www Jestem w stanie ustawić kontekst, aby umożliwić dostęp do samby, ale wtedy httpd nie ma dostępu. Użycie setenforce do 0 eliminuje problemy, więc wiem, że to SELinux.

Ponadto: Jak mogę wyświetlić kontekst folderu i czy folder może mieć wiele kontekstów?

(CentOS)

Joshua Enfield
źródło
Czy próbowałeś użyć opcji boolean systemu-config-selinux?

Odpowiedzi:

39

Po pierwsze, możesz wyświetlić kontekst czegoś za pomocą ls, używając ls -Z

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

Po drugie, istnieją dwie opcje przyznania Sambie i Apache dostępu do tego samego katalogu.

Prostym sposobem jest po prostu zezwolenie na dostęp do odczytu / zapisu samby wszędzie za pomocą:

setsebool -P samba_export_all_rw 1

Jest to proste, łatwe i nie zadziera z żadnymi dziwnymi właściwościami SELinux.

Jeśli martwisz się, że Samba ma pełny dostęp do wszystkich katalogów i chcesz tylko zmienić / var / www, spróbuj:

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

Umożliwi to zarówno Sambie, jak i Apache dostęp do zapisu do dowolnych katalogów w kontekście public_content_rw_t. Zauważ, że chcon modyfikuje tylko / var / www. Wszelkie nowe katalogi utworzone w / var / www będą public_content_rw_t, ale nie będą to katalogi takie jak / var / www / html lub / var / www / manual. Jeśli chcesz wszystko zmienić, dodaj -R do chcon:

chcon -R -t public_content_rw_t /var/www

Możesz przejrzeć tę stronę wiki CentOS, aby uzyskać wskazówki na temat innych booleanów SELinux.

David
źródło
Próbowałem tego i narzeka, że ​​kontekst jest już zdefiniowany.
Joshua Enfield,
Masz rację, wygląda na to, że wszystko się zmieniło od czasu ostatniego pomyłki z SELinux. Zaktualizuję swoją odpowiedź za pomocą innych opcji.
David
3
@Dave uratowałeś mój tyłek. Do zobaczenia jutro w pracy.
Joel E Salas,
Chciałem wspomnieć, że jeśli twój webroot jest zagnieżdżony w udziale samby, musisz ustawić kontekst również w katalogach nadrzędnych. Na przykład:chcon -t public_content_rw_t /mnt/share/webroot(/.*)? chcon -t public_content_rw_t /mnt/share
Greg Sheremeta
1
Dziękuję, setsebool -P ftpd_full_access=1
walczyłem
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

Na przykład:

semanage fcontext -a -t public_content_rw_t '/var/www(/.*)?'
restorecon -R /var/www
setsebool -P allow_smbd_anon_write 1
hm2k
źródło