SELinux httpd bir dizine yazma erişimi


9

SELinux'da yeniyim. debian'dan geldi. httpdBir dizine erişim vermek istiyorum .

SELinux Alert Browser şunları önerir:

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

Bu komutun nasıl çalıştığını anlayamadım. Hiçbir yerde bir dizin yolu belirtmiyorum. httpd için hangi dizine izin verileceğini nasıl bilebilir?

Daha önce çıktı veya dosyadan metin ayıklamak için grep kullandım. Ama burada grep bir süreçte kullanılıyor. Almadım.

Ayrıca asıl çözüm nedir. Bir dizine httpd yazma erişimi vermek istersem?


4
Diğer sorunuza cevap vermek için audit2allow, SELinux günlük dosyasını okur ve engellenen her şeye izin veren bir politika yazar; dizin adı günlük iletisinde olacaktır. Httpd için selamlayarak onu biraz sınırlandırıyorsunuz, ancak yöntem hala olması gerekenden daha geniş.
miken32

Yanıtlar:


17

Bir dizinin içeriğini kalıcı olarak değiştirmek için:

# 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

İşte httpd için farklı bağlamlarla ilgili daha fazla belge:

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


Mükemmel !! Fedora 26'da benim için çalıştı, policycoreutils-python zaten varsayılan olarak kuruldu.
Sir_Faenor

5

SELinux, diskteki dizin yapılarına eklenebilecek genişletilmiş öznitelikleri kullanır. Bunları meta veri olarak düşünün. Erişim Kontrol Listeleri (ACL) başka bir liste.

Bir dizine eklemeniz gereken genişletilmiş özniteliklere bağlam denir ve SELinux bir trafik polisi gibi davranarak belirli bağlamlara sahip bir yürütülebilir dosyanın bu bağlamlara dayalı olarak dosya sistemine erişmesine izin verildiğinden emin olur. Sen kullanarak dizinde bulunanlarda görebilirsiniz -Zanahtarı 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

Burada bu dizinlerin dir httpd_sys_script_exec_t:s0üzerinde bağlam olduğunu görebilirsiniz cgi-bin. ve htmldir. vardır httpd_sys_content_t:s0.

Bunları şu chconkomutu kullanarak ekleyebilirsiniz :

$ sudo chcon -t httpd_sys_content_t public_html

Sormak istediğiniz komut sadece bir mypoll.ppşey için herhangi bir izin vereceğine inanmıyorum modülü yükleyecek , muhtemelen audit.logkomutunuzda eksik olduğunuzda, ihtiyacınız olan şeyi daha ayrıntılı olarak anlatacak daha fazla mesaj var. erişime izin vermek için.

Biraz zaman ayırmanızı ve SELinux'u tanımanızı öneririm. İlk başta kafa karıştırıcıdır, ancak biraz zaman geçirdikten sonra genellikle basittir. Başlamak için aşağıdaki kaynaklara bakın.

Referanslar


Teşekkürler. Onlardan geçeceğim. Ama şimdilik bana bu dizine yazma erişimi vermek için ne yapmam gerektiğini söyleyebilir misiniz?
Neel Basu

Apache'nin okumasını istediğiniz içerikse, muhtemelen bu bağlamı chcon -R -t httpd_sys_content_t <dir>
slm
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.