Какая настройка пользователя / прав доступа в Linux для папки, в которую может писать PHP? - PullRequest
4 голосов
/ 07 декабря 2010

После нескольких лет использования chmod 777 для решения проблем с правами на запись в PHP, я хочу знать правильный способ решения проблемы.

У меня есть веб-сайт на моем сервере, принадлежащий user1 в группе user1.На этом веб-сайте есть папка с именем uploads.

Обычно, чтобы работать с PHP, мне нужно chmod эту папку 777.Но я, очевидно, признаю, что это опасно и неправильно, и я хочу правильно настроить разрешения, чтобы минимизировать риск.

Из моих ограниченных знаний я вижу два варианта:

  1. I chown папка uploads, так что она принадлежит apache.Таким образом, я могу просто использовать разрешения по умолчанию и apache может с радостью записывать в папку.
  2. Я добавляю вторую группу к apache из user1.Затем я даю разрешение на запись владельцу и группе на uploads, что должно позволить apache писать на uploads?

Мой вопрос: каков наилучший подход? Это что-то из вышеперечисленного или что-то совершенно другое?

Если лучшим решением является № 1, как user1 может также писать в загрузки по SFTP, поскольку это решение не позволяет им?

Ответы [ 2 ]

1 голос
/ 07 декабря 2010

Если это ваш собственный сервер, лучше всего установить папку для группы, которую использует Apache, например, с chgrp www-data на debian (может отличаться в других системах).Вы обычно должны делать это как пользователь root или, по крайней мере, как пользователь, имеющий доступ к своей собственной группе www-data.Если у вашего пользователя есть доступ к группе www-данных, это может быть для вас отличной возможностью, так как ее легко читать и, возможно, записывать / перемещать файлы.В этом случае используйте 770 в качестве разрешения для файла и убедитесь, что файлы, созданные php, получают это разрешение (явно после создания с помощью chmod или с помощью umask перед созданием. См. Руководство php для обоих.)

Если вы работаетев среде с общим хостингом единственное чистое решение, которое я знаю, это mod_suexec , но я не знаю многих хостеров, которые его поддерживают.Если это недоступно, я знаю только то, что вы знаете, работая с 777. Часто ваш домашний каталог в общих средах содержит более длинную случайную строку в имени пути, чтобы другие не могли найти ваш каталог и, следовательно, не могли получить доступ к вашему.файлы.Но это не настоящая безопасность ..; -)

Удачи, Мишель

1 голос
/ 07 декабря 2010

В моей нынешней компании мы установили группу apache для группы, которой принадлежит папка, поэтому вам просто нужно сделать chmod 770 для папки, чтобы дать разрешения этой конкретной группе на забавные вещи в этой папке.

Однако вы все равно должны помнить о защите своего приложения от злонамеренного пользователя, поскольку выполняемый сценарий PHP, если он достаточно небезопасен, все равно может повредить папку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...