SELinux httpd dostęp do zapisu do katalogu

9

Jestem nowy w SELinux. pochodzi z Debiana. Chcę dać httpddostęp do katalogu.

Przeglądarka alertów SELinux sugeruje:

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

Nie mogłem zrozumieć, jak działa to polecenie. Nigdzie nie podam ścieżki katalogu. skąd wie, który katalog zezwala na httpd?

Wcześniej użyłem grep do wyodrębnienia tekstu z pliku wyjściowego lub pliku. Ale tutaj grep jest używany w procesie. Tego nie dostałem.

Jakie jest rzeczywiste rozwiązanie. Jeśli chcę dać dostęp do zapisu httpd do katalogu?

Neel Basu
źródło
4
Aby odpowiedzieć na inne pytanie, audit2allow odczytuje plik dziennika SELinux i zapisuje zasady zezwalające na wszystko, co zostało zablokowane; nazwa katalogu będzie w komunikacie dziennika. Grep dla httpd nieco go ogranicza, ale metoda jest wciąż szersza niż powinna.
miken32
Odpowiednia odpowiedź: unix.stackexchange.com/questions/511929/…
Salah-1

Odpowiedzi:

17

Oto jak trwale zmienić kontekst katalogu:

# 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

Oto więcej dokumentacji na temat różnych kontekstów dla 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

Greg
źródło
Idealnie !! Pracował dla mnie w Fedorze 26, policycoreutils-python był już domyślnie zainstalowany.
Sir_Faenor,
5

SELinux wykorzystuje rozszerzone atrybuty, które można dołączyć do struktur katalogów na dysku. Pomyśl, jeśli są to metadane. Listy kontroli dostępu (ACL) są kolejnymi.

Rozszerzone atrybuty, które musisz dołączyć do katalogu, nazywane są kontekstami, a SELinux działa jak policjant ruchu, upewniając się, że plik wykonywalny, który ma określone konteksty, ma dostęp do systemu plików na podstawie tych kontekstów. Możesz zobaczyć, co jest dostępne w katalogu, używając -Zprzełącznika na 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

Tutaj widać, że katalogi te mają kontekst httpd_sys_script_exec_t:s0w katalogu cgi-bin. i htmlreż. ma httpd_sys_content_t:s0.

Możesz dodać je za pomocą chconpolecenia:

$ sudo chcon -t httpd_sys_content_t public_html

Polecenie, o które pytasz, po prostu załaduje moduł. mypoll.ppNie sądzę, aby udzielił jakichkolwiek uprawnień, prawdopodobnie jest więcej wiadomości audit.log, których brakuje w poleceniu, które powiedzą ci bardziej szczegółowo, czego potrzebujesz zrobić, aby umożliwić dostęp.

Zachęcam do poświęcenia trochę czasu i zapoznania się z SELinux. Na początku jest to mylące, ale ogólnie jest proste, po spędzeniu z nim trochę czasu. Zapoznaj się z poniższymi zasobami, aby zacząć.

Bibliografia

slm
źródło
Dzięki. Przejrzę je. Ale czy możesz mi teraz powiedzieć, co muszę zrobić, aby dać dostęp do zapisu w tym katalogu?
Neel Basu
Jeśli chcesz, aby Apache ją czytał, prawdopodobnie musisz dodać ten kontekst do katalogu:chcon -R -t httpd_sys_content_t <dir>
slm