Проблемы с разрешениями FTP и Apache


10

У меня проблемы с тем, какой пользователь должен владеть моим каталогом www - ftp или apache? Когда пользователь настроен на ftp, он может добавлять, удалять и легко изменять файлы, но действия файловой системы php приводят к ошибкам запрещенного доступа (конечно, потому что они требуют, чтобы пользователь был apache). Однако, если каталог www выбран как apache, ftpuser не сможет выполнять некоторые действия, такие как изменение и удаление файла. Кто-нибудь сталкивался с подобной проблемой? Что за исправление? Спасибо

Ответы:


12

Для этого и нужны группы.

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

например

# groupadd mygroup
# useradd -G mygroup ftp
# useradd -G mygroup apache
# chown -R: mygroup / var / www
# chmod -R g + rw / var / www

Эти команды делают следующее:

  1. Создает новую группу mygroup
  2. Добавляет пользователя ftp в мою группу
  3. Добавляет пользователя apache в мою группу
  4. Рекурсивно предоставляет групповое владение содержимому / var / www / mygroup.
  5. Рекурсивно предоставляет группе права на чтение и запись для содержимого / var / www /

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


3
Объединение " find /var/www -type d -print0 | xargs -0 chmod g+s /var/www" с umask 002 гарантирует, что новые файлы и каталоги в / var / www наследуют соответствующую группу и разрешения для доступа к этой группе. Во многих дистрибутивах Linux по умолчанию используется значение umask 002 (то же, что по умолчанию при создании новой группы для каждого нового пользователя)
— freiheit

Этот ответ работает отлично! Но у меня есть одна проблема, когда пользователь все еще может просматривать все другие каталоги за пределами, var/wwwесть ли способ ограничить это?
— Максимум

3
Строки 2 и 3 не будут работать, если пользователи уже существуют (в CentOS 7). В этом случае используйте, usermodнапример,usermod -G mygroup ftp
— ник

Просто, понятно, понятно! Отлично! Спасибо, @hobodave!
— Г.Т.Доров

4

Большая часть вашего контента должна принадлежать другому пользователю, кроме apache. Предполагая, что вы используете FTP для обновления вашего контента, вы можете установить все файлы, которые будут принадлежать ftp: apache. Я бы предложил использовать SCP для SFTP вместо ftp. Файлы должны иметь разрешения 644 или 640 и разрешения для каталогов 755 или 750.

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


0

У меня была похожая проблема со встроенной страницей php, которая копировала папку на сервере с другим именем. Я исправил это, отключив безопасный режим php.


2
PHP безопасный режим существует по причине. Отключить его не очень хорошая идея.
— user9517
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.