SELinux httpd ha accesso in scrittura a una directory


9

Sono nuovo di SELinux. veniva da debian. Voglio dare httpdaccesso a una directory.

SELinux Alert Browser suggerisce:

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

Non riuscivo a capire come funziona questo comando. Non specifico un percorso di directory da nessuna parte. come fa a sapere quale directory consentire a httpd?

In precedenza ho usato grep per estrarre il testo dall'output o dal file. Ma qui grep viene utilizzato su un processo. Che non ho capito.

Anche qual è la soluzione reale. Se voglio dare a httpd l'accesso in scrittura a una directory?


4
E per rispondere alla tua altra domanda, audit2allow legge il file di registro SELinux e scrive una politica che consente tutto ciò che è stato bloccato; il nome della directory sarà nel messaggio di registro. Grepping per httpd lo stai limitando un po ', ma il metodo è ancora più ampio di quanto dovrebbe essere.
miken32,

Risposte:


17

Ecco come modificare permanentemente il contesto di una directory:

# 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

Ecco qualche altra documentazione sui diversi contesti per 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.html

RHEL 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


Perfetto !! Ha funzionato per me in Fedora 26, policycoreutils-python era già installato di default.
Sir_Faenor,

5

SELinux fa uso di attributi estesi che possono essere aggiunti alle strutture di directory sul disco. Pensa se questi sono metadati. Gli elenchi di controllo di accesso (ACL) sono un altro.

Gli attributi estesi che è necessario aggiungere a una directory sono chiamati contesti e SELinux si comporta come un poliziotto del traffico, assicurandosi che un eseguibile che ha determinati contesti sia autorizzato ad accedere al filesystem basato su questi contesti. Puoi vedere cosa è disponibile nella directory usando il -Zpassaggio a 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

Qui puoi vedere che queste directory hanno il contesto httpd_sys_script_exec_t:s0sulla cgi-bindir. e il htmldir. ha httpd_sys_content_t:s0.

Puoi aggiungerli usando il chconcomando:

$ sudo chcon -t httpd_sys_content_t public_html

Il comando di cui stai chiedendo caricherà semplicemente il modulo mypoll.ppNon credo che concederà autorizzazioni a nulla, probabilmente ci sono più messaggi in quello audit.logche ti manca con il tuo comando, che ti diranno in modo più dettagliato ciò di cui hai bisogno fare per consentire l'accesso.

Ti incoraggio a prenderti del tempo e familiarizzare con SELinux. All'inizio è confuso ma è generalmente semplice, dopo aver trascorso un po 'di tempo con esso. Consulta le risorse di seguito per iniziare.

Riferimenti


Grazie. Li esaminerò. Ma puoi dirmi per ora cosa devo fare per dare accesso in scrittura a questa directory?
Neel Basu,

Se è il contenuto che vuoi che Apache legga, probabilmente dovrai aggiungere questo contesto alla directory:chcon -R -t httpd_sys_content_t <dir>
slm
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.