Правильное назначение разрешений и групп
Так что мой 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
пользователь, но я не думаю, что 775 является правильным способом установки разрешений веб-сервера, или я ошибаюсь?
1 ответ
Твоя проблема в том, что твой бобовый стебель работает с beanstalk:www-data
пользователь / группа при попытке доступа к вашему www-data:www-data
собственное дерево каталогов (группа beanstalk здесь бесполезна).
Так как пользователь beanstalk
там нет прав (файлы / каталоги принадлежат www-data
пользователь, разрешения определяются на уровне группы (файлы / каталоги принадлежат www-data
группа, которой принадлежит бобовый стебель). "Другие" разрешения также могут быть использованы.
Тем не менее, когда вы используете 755
разрешения для каталога, "группа" и "другие" разрешения 5
, что значит r-x
, Таким образом, ваша программа beanstalk может открывать (выполнять) каталог и читать его содержимое... но не может создавать файлы там!
Проблема, которую я вижу с предоставленным вам решением ACL, заключается в том, что эти ACL необходимо обновлять при каждом создании новых файлов / каталогов.
Что вы можете сделать, используя свойства самой файловой системы ext:
- Сделайте свое дерево принадлежащим
beanstalk:www-data
с правами по умолчанию: пользователь по умолчанию единственный, кому разрешено писать (755
для каталогов и644
для файлов). Так как для этого вам просто нужен бобовый стебель, это нормально! Обычно nginx и любая веб-серверная программа должны только читать файлы и перемещаться по дереву каталогов, поэтому они становятся частьюwww-data
достаточно. Чтобы обеспечить последующее создание каталогов автоматически с группой www-данных, вы можете установитьsetgid
пометьте существующие каталоги, уже установленные сbeanstalk:www-data
владелец пара. Каждый новый созданный файл / каталог теперь будет принадлежатьbeanstalk:www-data
! - Добавьте разрешение на запись для группы во все созданные каталоги. Однако, еще раз, маска по умолчанию создаст каталоги с
755
вам нужно будет преобразовать вручную в775
... Если ваше дерево каталогов веб-содержимого находится в выделенном разделе, вы можете изменить маску разрешений по умолчанию, чтобы она775
, что является ограничением. Еще одним недостатком является то, что теперь каждое приложение, принадлежащееwww-data
Группа сможет записывать данные в дерево каталогов..., которое включает в себя nginx и, возможно, любое внутреннее приложение. Я считаю плохим разрешать им права "открытого бара": подумайте о том, когда они каким-то образом будут введены, они могут испортить или стереть все по своему усмотрению!