8

Я больше работаю в Windows, поэтому прошу прощения за незнание этого основного вопроса о Linux.

Я ищу сервер Linux (Debian), на котором установлены только Apache2 и vsftp.

Происходит то, что у меня постоянная борьба с тем, кто владеет файлами и папками, и, похоже, не могу понять это правильно.

Это мое понимание до сих пор:

  • Пользователю www-data необходимо владеть папками и файлами, так как все файлы в /var /www /html запускают сценарии, которые требуют от них записи в свою папку. И, конечно, он должен быть в состоянии обслуживать страницы через http.
  • Моему пользователю ftp (назовем его ftpuser) также требуется разрешение на запись в папку /var /www /html (рекурсивно), поскольку мне нужно иметь возможность загружать новые файлы.

Имея это в виду, я создал группу под названием ftpandwww и разбил все папки и файлы в этой группе. Это сработало до некоторой степени ...

Я почти в нужном месте, за исключением того факта, что любые новые папки, созданные с помощью моего FTP-клиента, имеют неправильные разрешения (которые я могу исправить, изменив их в FTP-клиенте), но тогда www-data не сможет записать в них потому что они принадлежат ftpuser, и я заканчиваю тем, что должен войти в SSH и запустить группу chown to ftpandwww, чтобы они оба были счастливы.

Как сделать так, чтобы все новые папки, которые я создаю на FTP, имели правильные разрешения (774) и автоматически принадлежали группе ftpandwww, к которой я могу загружать и обслуживать через Интернет (с разрешениями на запись) без необходимости заходить и разбивать все новые папки и файлы каждый раз?

1 ответ1

10

Используйте разрешения SetGID в корневом веб-каталоге и распространяйте их среди детей.

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

Чтобы применить SetGID к объекту файловой системы, используйте chmod с 2 перед кодом разрешения.
(например: 740 => 2740).

Я использую SetGID на многих моих акций Samba, так что файлы всегда имеют ownergroup Users и любой член группы может читать файлы (я обычно использую 2750 , так что только пользователь владелец может записать в файл).

В вашем случае запустите что-то вроде этого (замените XXX на нужные вам разрешения):

sudo chown -R  root:ftpandwww /var/www
sudo chmod -R 2XXX /var/www 

Тогда новые файлы и папки будут доступны с правами собственности, например, ftpuser:ftpandwww .

Редактировать:

В зависимости от вашего варианта использования SetGID, вероятно, достаточно для решения вашей проблемы, но если у вас есть продолжающиеся проблемы, когда одному или другому пользователю отказано в записи из-за неправильного разрешения группы (но право собственности является правильным), тогда лучше всего установить пользовательский UMASK для пользователя, который создает файлы.

Если у вас возникли трудности с настройкой UMASK для пользователя (потому что это демон), проверьте в этой ветке параметры для настройки UMASK демона-пользователя.

Я бы порекомендовал маску 007 если вы хотите, чтобы члены группы могли писать и удалять файлы, а не привилегии для не-владельцев.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .