Come posso ottenere SELinux per consentire Apache e Samba nella stessa cartella?


26

Nella configurazione che ho impostato, desidero consentire l'accesso a samba e apache / var / www. Sono in grado di impostare un contesto per consentire l'accesso a samba, ma quindi httpd non ha accesso. L'uso di setenforce su 0 elimina i problemi, quindi so che è SELinux.

Inoltre: come posso visualizzare il contesto di una cartella e una cartella può avere più contesti?

(CentOS)


Hai provato a usare l'opzione booleana di system-config-selinux?

Risposte:


39

Prima di tutto, puoi visualizzare il contesto di qualcosa con ls usando ls -Z

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

In secondo luogo, ci sono due opzioni per dare a Samba e Apache l'accesso alla stessa directory.

Il modo semplice è consentire l'accesso samba in lettura / scrittura ovunque con:

setsebool -P samba_export_all_rw 1

È semplice, facile e non si scherza con nessuna strana proprietà di SELinux.

Se sei preoccupato che Samba abbia pieno accesso a tutte le directory e desideri solo cambiare / var / www, prova:

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

Ciò consentirà a Samba e Apache di accedere in scrittura a qualsiasi directory con il contesto public_content_rw_t. Nota che chcon sta solo modificando / var / www. Qualsiasi nuova directory creata in / var / www sarà public_content_rw_t, ma non directory esistenti come / var / www / html o / var / www / manual. Se vuoi cambiare tutto, aggiungi un -R a chcon:

chcon -R -t public_content_rw_t /var/www

Puoi consultare questa pagina wiki di CentOS per ottenere suggerimenti su altri booleani di SELinux.


Ho provato questo e si lamenta che un contesto è già definito.
Joshua Enfield,

Hai ragione, sembra che le cose siano cambiate dall'ultima volta che ho fatto casino con SELinux. Aggiornerò la mia risposta con alcune altre opzioni.
David,

3
@Dave mi hai salvato il culo. Ci vediamo al lavoro domani.
Joel E Salas,

Volevo menzionare che se il tuo webroot è nidificato in una condivisione samba, dovrai impostare il contesto anche nelle directory principali. Ad esempio:chcon -t public_content_rw_t /mnt/share/webroot(/.*)? chcon -t public_content_rw_t /mnt/share
Greg Sheremeta,

1
Grazie, stavo lottando con qualcosa di simile ma con ftp, e tutto funziona dopo aver fattosetsebool -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

Per esempio:

semanage fcontext -a -t public_content_rw_t '/var/www(/.*)?'
restorecon -R /var/www
setsebool -P allow_smbd_anon_write 1
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.