Проблемы с разрешениями 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.

hobodave
источник
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.

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

BillThor
источник
0

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

Карлу
источник
2
PHP безопасный режим существует по причине. Отключить его не очень хорошая идея.
user9517