Разрешения для файлов; Должен ли мой контент в www-папке принадлежать www-data?

Это может быть вопрос о нобе, но он не может найти ответ нигде.

У меня есть проблема, проблема с которой еще одна проблема с файлами помогла мне решить проблему ALMOST.

Я создал пользователя в linux ( danny ), который имеет доступ к sudo. Я также создал новую группу, имя которой ТАКЖЕ является danny , и добавил пользователя danny в эту группу. Эта группа имеет доступ к sudo (root).

У меня есть все файлы и папки в моей папке www, принадлежащей группе danny / danny.

У меня есть код загрузки изображения, который является php . Этот код не может загружать изображения в папку под названием « images », находящуюся в папке www , если я не предоставил разрешения для 777 изображений.

Итак, я выполнил ответ по связанному вопросу и выяснил, что пользователь, который запускает сценарий загрузки, является « www-data ».

Согласно ответу на ссылку на другой вопрос, который я опубликовал, мне нужно добавить www-данные в группу … Но я застрял здесь …

К какой группе я должен добавить? Что мне делать дальше?

Любые советы приветствуются.

Кстати, вот некоторая информация о www-data и danny

id www-data: uid=33(www-data) gid=33(www-data) groups=33(www-data) id danny uid=1000(danny) gid=33(www-data) groups=33(www-data) 

Спасибо, и если вам нужно больше информации, просто дайте мне знать …

На самом деле, ваша проблема заключается в том, что вам нужно, чтобы пользовательские www-данные имели доступ для записи в папку изображений .

И вы, вероятно, хотите, чтобы пользователь danny имел полный доступ к папке.

EDIT: Дополнительное слово предупреждения: наличие файлов, которые можно записать на ваш веб-сервер, всегда является угрозой безопасности . Обязательно проверьте файлы, которые написаны, и убедитесь, что люди не могут загрузить или изменить код. Резюме: * Не позволяйте веб-серверу запускать скрипты, которые можно записать, или в папку для записи. Поэтому убедитесь, что только изображения / папка записана, и дважды проверьте, что все, что написано, на самом деле является образом!

Или:

  1. Установите www-data как владельца папки и chmod u + rwx www.
  2. Установите www-данные как часть группы X и измените владельца папки на X и chmod g + rwx www.
  3. Установите папку, которую можно записать на ваш сервер на сервере (в некоторых случаях это тоже приемлемое решение, но менее безопасно).

В общем, НЕТ , ваш контент не должен принадлежать www-данным. Единственный контент, который должен принадлежать www-данным, – это конкретные файлы, которые вам нужны для веб-приложений, которые могут быть изменены, и конкретные каталоги, которые им необходимы, чтобы иметь возможность создавать или удалять файлы. Остальные не должны быть (или доступны для записи) ) по www-данным, поскольку каждый файл, который могут записывать www-данные, – это файл, который злоумышленник, который нарушает ваш веб-сервер (включая любые скрипты или веб-приложения, которые он запускает), сможет заменить любыми вредоносными данными, которые он может выбрать ,

Особенно важно, чтобы www-данные не были зарегистрированы или не могли записываться в любой исполняемый файл (например, скрипты, флеш-файлы, документы в Word или другие форматы с возможностями макроса и т. Д.), Поскольку замена их на вредоносные исполняемые файлы обеспечивала бы легкую способ атаковать компьютеры пользователей или сам веб-сервер.

Я думаю, что имеет смысл, что файлы, используемые www-данными, принадлежат www-data. Я имею в виду, кому еще это нужно? Самая важная часть состоит в том, что веб-приложение не должно иметь доступ на запись к своему собственному веб-корню. Причина заключается в том, что уязвимость в обход каталога в функции PHP, например copy() или file_put_contents() может позволить злоумышленнику сбросить бэкдор .php в ваш веб-корень.

Еще одна важная атака, о которой нужно знать, заключается в том, что другой процесс или пользователь в системе может захотеть прочитать или записать в ваш веб-корень, поэтому важно, чтобы последнее число было равным нулю. Среднее число – это группа, и вы не используете ее, поэтому она также должна быть равна нулю. Следующие 2 команды делают ваш веб-корневой читабельным и исполняемым с помощью apache и только apache. Иногда используется другая учетная запись пользователя, поэтому запустите систему <?php system('whoami')?> Чтобы узнать правильную учетную запись пользователя.

chown www-data -R /path/to/webroot

chmod 500 -R /path/to/webroot

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

Я бы добавил пользователя www-data для группировки danny.

 usermod -a -G danny www-data 

Таким образом, www-данные могут войти в место Дэнни, но не наоборот.

Чтобы пользователь www-data мог писать в маску разрешения папки Danny, она должна быть похожа на (где подстановочный знак означает любое значение в порядке):

 d???rwx???