Итак, мой nginx использует www-data:www-data
, и я хочу правильно развернуть файлы на моем сервере с помощью Beanstalk через sftp.
Итак, я создал пользователя по имени beanstalk
и добавил его в www-data
группа.
$ id beanstalk
uid=1000(beanstalk) gid=1000(beanstalk) groups=1000(beanstalk),33(www-data)
$ groups beanstalk
beanstalk : beanstalk www-data
Теперь, когда я запустил сценарий, который генерирует subby.site.net
и устанавливает для него разрешения 755 www-data:www-data
(EasyEngine), я готов развернуть свою штуку, но вот в чем дело:
beanstalk@site.net:/var/www/subby.site.net.net$ ls -la
total 20
drwxr-sr-x 4 www-data www-data 4096 Nov 14 08:50 .
drwxrwsr-x 26 www-data www-data 4096 Nov 14 09:32 ..
drwxr-sr-x 5 www-data www-data 4096 Nov 14 08:50 htdocs
drwxr-sr-x 2 www-data www-data 4096 Nov 14 08:50 logs
-rw-r--r-- 1 www-data www-data 3052 Nov 14 08:50 wp-config.php
beanstalk@site.net:/var/www/subby.site.net.net$ mkdir test
mkdir: cannot create directory ‘test’: Permission denied
Если я сделаю sudo chmod 775 /var/www/subby.site.net
, Я могу создать этот тестовый каталог с помощью beanstalk
user, но я не думаю, что 775 - это правильный способ настройки разрешений веб-сервера, или я ошибаюсь?
Ваша проблема в том, что ваш бобовый стебель работает с beanstalk:www-data
пользователь / группа при попытке доступа к вашему www-data:www-data
собственное дерево каталогов (группа beanstalk здесь бесполезна).
Поскольку пользователь beanstalk
не имеет прав там (файлы / каталоги принадлежат www-data
пользователя, разрешения определяются на уровне группы (файлы / каталоги принадлежат www-data
группа, к которой принадлежит beanstalk). Также могут быть использованы «другие» разрешения.
Однако когда вы используете 755
разрешения на каталог, права "группа" и "другое" 5
, что значит r-x
. Таким образом, ваша программа beanstalk может открывать (выполнять) каталог и читать его содержимое ... но не может создавать там файлы!
Проблема, которую я вижу с решением ACL, которое вам было предоставлено, заключается в том, что эти ACL необходимо обновлять каждый раз при создании новых файлов / каталогов.
Что вы могли бы сделать, используя свойства самой файловой системы ext:
beanstalk:www-data
с правами по умолчанию: по умолчанию только пользователь может писать (755
для справочников и 644
для файлов). Так что для этого вам просто нужен beanstalk, это нормально! nginx и любую программу веб-сервера обычно нужно только читать файлы и перемещаться по дереву каталогов, чтобы сделать их частью www-data
достаточно. Чтобы обеспечить автоматическое создание группы www-data при последующем создании каталогов, вы можете установить setgid
флаг на ваших существующих каталогах, уже установленный с beanstalk:www-data
пара владельцев. Каждый новый созданный файл / каталог теперь будет принадлежать beanstalk:www-data
!755
вам нужно будет вручную преобразовать в 775
... Если ваше дерево каталогов веб-содержимого находится в выделенном разделе, вы можете изменить маску разрешений по умолчанию, чтобы она была 775
, что является ограничением. Еще один недостаток - теперь каждое приложение, принадлежащее www-data
группа сможет записывать данные в дерево каталогов ... которое включает nginx и, возможно, любое бэкэнд-приложение. Я считаю плохим давать им разрешения «open-bar»: подумайте, когда им каким-то образом введут инъекции, они могут испортить / стереть все по своему желанию!