Kiedy uruchamiam ps -efH
polecenie, aby wyświetlić cały proces, widzę, że Apache działa jako root
i wydaje się, że podprocesy działają jako www-data
. Oto fragment:
root 30117 1 0 09:10 ? 00:00:00 /usr/sbin/apache2 -k start
www-data 30119 30117 0 09:10 ? 00:00:00 /usr/sbin/apache2 -k start
www-data 30120 30117 0 09:10 ? 00:00:00 /usr/sbin/apache2 -k start
www-data 30121 30117 0 09:10 ? 00:00:00 /usr/sbin/apache2 -k start
Czy mogę sprawić, by Apache i wszystkie podprocesy działały jako inny użytkownik apache2d:apache2d
? Jeśli tak to jak? Czytałem gdzieś, że ustawienia tego można znaleźć, /etc/apache2/httpd.conf
ale ten plik wydaje się pusty? Czy można tego dokonać, zmieniając właściciela i grupę /etc/init.d/apache2
skryptu, a następnie ustawiając na nim flagę setuid?
źródło
@bahamat wyjaśnia to całkiem dobrze, ale dodam trochę więcej szczegółów.
W trakcie normalnej pracy proces apache będący własnością root nie będzie wykonywać żadnych rzeczywistych operacji poza nasłuchiwaniem na porcie 80 i przekazywaniem połączeń przychodzących do swoich (bezpiecznie nieuprzywilejowanych, jako
www-data
użytkownik) dzieci.Lokalizacja głównego pliku konfiguracyjnego zależy od opcji czasu kompilacji i różni się w zależności od dystrybucji, ale
/etc/apache2/apache2.conf
jest dobrym początkowym przypuszczeniem.Ponadto, jeśli konfigurujesz system hostingu dla wielu użytkowników, możesz zajrzeć do SuExec i fcgid, aby proces apache dla każdego użytkownika webhostingu działał jak wspomniany użytkownik - tak, że jeśli jeden użytkownik zaniedbuje swoje bezpieczeństwo, drugi nie będzie to miało wpływu na użytkowników.
źródło
Przynajmniej w Ubuntu, ustawienia dla tego są w
/etc/apache2/envvars
. Ulepsz je, a następnie uruchom ponownie apache i jesteś gotowy do pracy.źródło
Sprawdź także Apache2 ITK MPM .
Rozwidla wątek Apache z przypisanym
uid
/gid
, to pozwala ci dalej używaćmod_php
. Nigdy więcejchmod
/chown
itp.źródło
mpm_itk
którego jest znacząca poprawa w stosunku do suexec / fcgidMac OS X:
To, co zadziałało, to przejście do pliku konfiguracyjnego Apache:
W tym pliku szukałem użytkownika lub grupy
i wpadłem na:
Zmieniłem to na to, czego kiedykolwiek potrzebowałem użytkownik / grupa (w moim przypadku na użytkownika / grupę, który jest właścicielem moich plików aplikacji internetowej, które możesz zobaczyć. I to możesz sprawdzić, używając prostego 'ls -l' Komenda)
źródło