Права доступа к файлам; Должен ли мой контент в www-папке принадлежать www-data?

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

У меня проблема, которая Другая проблема с правами доступа к файлу помогли мне ПОЧТИ решить.

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

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

У меня есть код загрузки изображения, который PHP . Этот код не может загружать изображения в папку с именем « images », которая находится в папке www , ЕСЛИ Я не дам разрешения папке «images» 777 .

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

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

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

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

Кстати, вот некоторая информация о 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)

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

9
задан Community 23 May 2017 в 12:30
поделиться

4 ответа

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

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

РЕДАКТИРОВАТЬ: Дополнительное предупреждение: наличие файлов, доступных для записи вашим веб-сервером, всегда представляет собой угрозу безопасности . Обязательно проверьте записанные файлы и убедитесь, что люди не могут загружать или изменять код. Резюме: * Не позволяйте вашему веб-серверу запускать сценарии с возможностью записи или в папке с возможностью записи.Поэтому убедитесь, что для записи доступна только папка images /, и дважды проверьте, что все, что написано, на самом деле является изображением!

Либо:

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

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

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

18
ответ дан 4 December 2019 в 11:03
поделиться

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

Еще одна важная атака, о которой следует знать, - это то, что другой процесс или пользователь в системе может захотеть прочитать или записать в ваш корневой веб-сайт, поэтому важно, чтобы самое последнее число было нулем. Среднее число - это группа, которую вы не используете, поэтому оно также должно быть равно нулю. Следующие две команды делают ваш корневой веб-каталог доступным для чтения и выполнения для apache, и только для apache. Иногда используется другая учетная запись пользователя, поэтому запустите , чтобы узнать правильную учетную запись пользователя.

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

chmod 500 -R / path / to / webroot

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

2
ответ дан 4 December 2019 в 11:03
поделиться

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

usermod -a -G danny www-data

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

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

d???rwx???
1
ответ дан 4 December 2019 в 11:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: