При создании пулов php5-fpm для пользователя в настройке Apache mod_fastcgi, какой из следующих способов является наиболее безопасным и эффективным способом предоставления разрешений веб-сервера пулу PHP?
Установите группу в www-data
:
listen.owner = username
listen.group = www-data
listen.mode = 0660
user = username
group = www-data
В то время как это работает, файлы, созданные PHP, будут иметь право собственности на Имя пользователя: WWW-данные в то время как файлы, загруженные через SCP, будут иметь Имя пользователя: имя пользователя.
добавлять www-data
в дополнительную группу username
:
listen.owner = username
listen.group = username
listen.mode = 0660
user = username
group = username
—
usermod -aG username www-data
Какие из этих вариантов безопасны? Вы также можете поделиться лучшим методом.
Я проверил следующие руководства:
Но все они были написаны до ошибки # 67060 был обнаружен и исправлен.
Я использую следующую настройку на моем LEMP (Nginx + PHP-FPM). Для Apache это также должно быть применимо.
PHP-FPM запускает несколько пулов как nobody:user1
, nobody:user2
…
Nginx работает как nginx:nginx
пользователь nginx
является членом каждого user1
, user2
.. группы:
# usermod -a -G user5 nginx
Права доступа к файлам:
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) домашний каталог пользователя не имеет x
разрешение на other
так пул php-fpm работает как nobody:user2
не будет иметь доступа к /home/user1
и наоборот.
(2) PHP-скрипт не имеет w
за group
, поэтому он не может создавать файлы в htdocs.
(3) Вкл uploads
dir мы должны вручную включить доступ для записи для группы user1
, чтобы включить php скрипт для размещения файлов там. Не забудьте отключить PHP-обработчик для uploads
в nginx это сделано
server {
....
location ^~ /uploads/ { }
но для Apache вы должны проверить.
(4) загруженные файлы также должны иметь w
за group
если мы хотим user1
чтобы иметь возможность редактировать эти файлы позже через FTP или SSH (вход в систему как user1:user1
). PHP-код также можно редактировать через FTP, так как user1
это его owner
,
Nginx будет иметь read
доступ ко всем пользователям и write
доступ ко всем загрузкам пользователя, начиная с пользователя nginx
является членом каждого user1
, user2
… группы.
Вы не должны забывать добавить его во все последующие группы. Вы также можете изменить useradd
скрипт, чтобы сделать это автоматически.
Других решений пока нет …