2014-11-11 30 views
6

Podczas tworzenia pul php5-fpm dla pojedynczego użytkownika w konfiguracji mod_fastcgi Apache, który z poniższych jest najbezpieczniejszym sposobem i skutecznym sposobem przyznania uprawnień serwera Web do puli PHP?Tworzenie puli php5-fpm dla użytkownika w bezpieczny sposób

Wariant 1:

ustawić grupę do www-data:

listen.owner = username 
listen.group = www-data 
listen.mode = 0660 

user = username 
group = www-data 

Chociaż to działa plików utworzonych przez PHP musiałby zbiór własności Nazwa użytkownika: www-data podczas plików przesłanych przez SCP mieć nazwa użytkownika: nazwa użytkownika.


Opcja 2:

Dodaj www-data do grupy uzupełniających username:

listen.owner = username 
listen.group = username 
listen.mode = 0660 

user = username 
group = username 

-

usermod -aG username www-data 

Która z tych opcji są bezpieczne? Możesz również udostępnić lepszą metodę.

Sprawdziłem następujących instrukcji:

ale wszystkie były napisane przed bug #67060 została odkryta i stała.

Odpowiedz

0

Używam następujących ustawień na moim LEMP (Nginx + PHP-FPM). W przypadku Apache powinno to również mieć zastosowanie.

PHP-FPM biegnie kilka basenów jak nobody:user1, nobody:user2 ...

Nginx działa jako nginx:nginx

użytkownika nginx jest członkiem każdy user1, user2 .. grup:

# usermod -a -G user5 nginx 

Uprawnienia do plików:

root:root drwx--x--x /home 
user1:user1 drwx--x--- /home/user1      (1) 
user1:user1 rwxr-x--- /home/user1/site.com/config.php (2) 
user1:user1 drwxrwx--- /home/user1/site.com/uploads  (3) 
nobody:user1 rw-rw---- /home/user1/site.com/uploads/avatar.gif (4) 

(1) Domowy katalog użytkownika nie ma pozwolenia na x dla other, więc pula php-fpm działająca jako nobody:user2 nie będzie miała dostępu do /home/user1 i na odwrót.

(2) skrypt php nie ma w dla group, więc nie może tworzyć plików w htdocs.

(3) W przypadku domeny uploads należy ręcznie włączyć dostęp do zapisu dla grupy user1, aby umożliwić skryptowi php umieszczenie tam plików.Nie zapomnij wyłączyć obsługi php dla uploads w nginx ten jest wykonany przez

server { 
    .... 
    location ^~ /uploads/ { } 

ale dla Apache należy sprawdzić.

(4) dodane pliki powinny mieć również w dla group jeśli chcemy user1 aby móc edytować te pliki później przez ftp lub ssh (zalogowaniu się jako user1:user1). Kod PHP można również edytować za pośrednictwem ftp, ponieważ user1 to jego owner.

Nginx będzie miał read dostęp do wszystkich użytkowników i write dostęp do wszystkich przesyłanych użytkownika, ponieważ użytkownik nginx jest członkiem każdy user1, user2, ... grupach. Nie zapomnij dodać go do wszystkich późniejszych grup. Można również zmodyfikować skrypt useradd, aby zrobić to automatycznie.