Правильное назначение разрешений и групп

Так что мой 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 и, возможно, любое внутреннее приложение. Я считаю плохим разрешать им права "открытого бара": подумайте о том, когда они каким-то образом будут введены, они могут испортить или стереть все по своему усмотрению!
Другие вопросы по тегам