Всякий раз, когда я загружаю новый файл на свой сервер, я должен chown -R apache:apache /dir
чтобы он был доступен.
Есть ли более простой способ обойти это?
Скорее всего, что действительно нужно для того, чтобы файлы были доступны, так это то, что их группа настроена на apache
. Вы можете легко установить его по умолчанию для новых созданных файлов, запустив:
find /path/to/root/directory/of/website -type d -print0 | xargs -0 chmod g+s
Это также установит флаг setgid
во всех подкаталогах. Если этот флаг установлен, любой новый файл, созданный в нем, будет наследовать группу своего родительского каталога. (-print0
и -0
предназначены для правильной обработки пробелов в именах файлов)
Убедитесь, что права доступа к файлам правильные, прежде чем запускать его. Если вы не уверены, вы можете исправить это так же:
find /path/to/root/directory/of/website -print0 | xargs -0 chown apache:apache
Вот что вы можете сделать с VSFTPD:
Вы можете установить следующие 2 параметра в вашем vsftpd.conf
:
guest_enable=YES
guest_username=apache
guest_enable
, если включен, гарантирует, что все файлы загружены как пользователь / группа apache
.
Обратите внимание, что это будет работать только для файлов, загруженных через FTP. Если вы скопируете файл в самом Linux в свой каталог www, это не изменит разрешения.
Вот почему, если вы также обращаетесь к этому каталогу через файловую систему, лучше всего использовать предложенный Levans метод chmod g+s
.
(То есть)
find /var/www/site/public_html -print0 | xargs -0 chown apache:apache
find /var/www/site/public_html -type d -print0 | xargs -0 chmod g+s
guest_enable
Если этот параметр включен, все неанонимные входы классифицируются как "гостевые". Гостевой логин переназначается на пользователя, указанного в настройке guest_username.По умолчанию: НЕТ
guest_username
См. Логический параметр guest_enable для описания того, что представляет собой гостевой логин. Этот параметр является реальным именем пользователя, которому сопоставляются гостевые пользователи.По умолчанию: ftp