Я больше работаю в 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, к которой я могу загружать и обслуживать через Интернет (с разрешениями на запись) без необходимости заходить и разбивать все новые папки и файлы каждый раз?
источник
Ответы:
Используйте разрешения SetGID в корневом веб-каталоге и распространяйте их среди детей.
Когда вы применяете SetGID к каталогу, все новые элементы в этом каталоге будут создаваться с той же группой, к которой принадлежит их родитель, независимо от членства пользователя в группе по умолчанию.
Чтобы применить SetGID к объекту файловой системы, используйте
chmod
с 2 перед кодом разрешения.(например: 740 => 2740).
Я использую SetGID на многих моих общих ресурсах Samba, так что файлы всегда имеют группу владельцев,
Users
и любой член группы может читать файлы (я обычно использую2750
так, что только пользователь-владелец может писать в файл).В вашем случае запустите что-то вроде этого (замените XXX на нужные вам разрешения):
Тогда новые файлы и папки будут выходить с собственностью, как
ftpuser:ftpandwww
.Редактировать:
В зависимости от вашего варианта использования SetGID, вероятно, достаточно для решения вашей проблемы, но если у вас есть продолжающиеся проблемы, когда одному или другому пользователю отказано в записи из-за неправильного разрешения группы (но право собственности является правильным), тогда лучше всего установить обычай UMASK для пользователя , который создает файлы .
Если у вас возникли трудности с настройкой UMASK для пользователя (поскольку он является демоном), проверьте в этой ветке параметры для настройки UMASK для демона-пользователя .
Я бы порекомендовал маску,
007
если вы хотите, чтобы члены группы могли писать и удалять файлы, а не привилегии для не-владельцев.источник