Файловые права; Должен ли мой контент www-папки принадлежать www-данным? - PullRequest
9 голосов
/ 14 августа 2010

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

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

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

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

У меня есть код загрузки изображения, который php .Этот код не может загружать изображения в папку с именем « images », которая находится в папке www , ЕСЛИ Я не предоставлю папке с разрешениями 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)

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

Ответы [ 4 ]

18 голосов
/ 14 августа 2010

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

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

2 голосов
/ 14 августа 2010

Я думаю, что имеет смысл, что файлы, используемые www-данными, принадлежат www-данным.Я имею в виду, кто еще должен владеть им?Наиболее важной частью является то, что веб-приложение не должно иметь права на запись в свой собственный веб-корень.Причина в том, что из-за уязвимости обхода каталога в 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

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

1 голос
/ 14 августа 2010

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

usermod -a -G danny www-data

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

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

d???rwx???
0 голосов
/ 14 августа 2010

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

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

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

Либо:

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