Назад | Перейти на главную страницу

Альтернатива каталогам с разрешениями 777

Я использую несколько веб-сайтов на своем выделенном сервере, и многие из моих сайтов требуют, чтобы для некоторых каталогов были установлены разрешения 777. Я знаю, что это серьезная проблема безопасности, и я также знаю, что можно настроить все, чтобы вам не приходилось используйте 777 в каталогах, я просто не знаю, как это делать. Может ли кто-нибудь указать мне в правильном направлении, чтобы я мог работать без 777 каталогов?

Спасибо!

Когда несколько лет назад я обнаружил списки ACL для unix, они меня поразили! Также удивительно, насколько они не известны всем.

Короче говоря, они позволяют вам устанавливать расширенные права доступа к файлам, помимо обычных пользователей + группы + других классически задокументированных.

Вам нужны две команды: "setfacl" и "getfacl". Вам может потребоваться перемонтировать вашу fs с поддержкой acl, если она жалуется"монтировать -o remount, rw, acl /".

Я использую setfacl двумя распространенными способами:

setfacl -R -m u:apache:rwx /var/www/mydirectory
setfacl -R -d -m u:apache:rwx /var/www/mydirectory

В первой строке рекурсивно добавлены разрешения rwx для всего на заданном пути (в дополнение к уже имеющимся разрешениям). Вторая команда устанавливает политику по умолчанию для новых файлов и каталогов так, чтобы она автоматически имела rwx для пользователя apache.

Это ооочень быстрее, чем возиться с suPHP или разрешениями группы и т. Д.

Поскольку вы контролируете сервер, вы можете рассмотреть возможность запуска PHP через suPHP. Процессы PHP создаются для отдельного пользователя. Таким образом, ваши каталоги можно изменить на 0700 с правом собственности на пользователя, под которым работают процессы.

P.S .: Увидимся на serverfault. Я проголосовал за переезд.

Если вам нужно работать с 777, это означает, что у вас есть проблемы с владением.

Вообще говоря, есть только три группы пользователей, о которых вам нужно беспокоиться:

  • фактические пользователи, устанавливающие веб-приложение;
  • uid, под которым работает веб-сервер (и, возможно, PHP); и
  • все остальные.

Обычно у вас должна быть возможность установить права собственности на файлы и каталоги как фактического пользователя, выполняющего настройку, а членство в группе - как членство в группе веб-сервера. Если вы это сделаете, то вы можете установить разрешения для большинства вещей: rwx для владельца и rx для группы apache; ваши примечания к приложению должны быть очень конкретными относительно того, какие каталоги приложение требует доступа для записи. (Если это не так, вероятно, это написано нечетко и другими способами и может быть уязвимостью безопасности.)

Если вы сделаете это правильно, то «все остальные» (то есть «все как пользователи на сервере, которые не являются членами группы веб-сервера») могут иметь свои разрешения, установленные на 0 (то есть без чтения, без записи, без -ex).

Например, моя установка WordPress установлена ​​мной, но запущена веб-сервером, поэтому обычно все права доступа 750, право владения dave: apache. Для каталога, в котором wordpress хранит входящие загрузки, установлено разрешение 770, право владения dave: apache.