Это всегда одна и та же проблема.Загрузка с пользователем ftp и отсутствие доступа для пользователя apache.
Я решил эту проблему с помощью расширенных acls файловых систем.
Возможно добавить пользователя и / или группу по умолчанию в новые сгенерированные файлы.
Что нужно сделать:
- добавить «acl» в опции монтирования для желаемой файловой системы.(Пожалуйста, проверьте, настроено ли ваше ядро для posix acl, прежде чем делать это!)
- используйте команду 'setfacl' для установки разрешений (вам может потребоваться установить пакет, содержащий 'setfacl', прежде чем в зависимости от вашего дистрибутива.)
Пример:
Первый пользователь для ftp, так что загрузки могут быть сделаны
# chown ftp:ftp /var/www/server/htdocs
# ls -la /var/www/server/htdocs/
insgesamt 0
drwxr-xr-x 2 ftp ftp 40 26. Nov 12:40 .
drwxrwxrwt 15 root root 360 26. Nov 12:40 ..
Следующий набор по умолчанию для пользователя apache
# setfacl -d -m u:apache:rwx /var/www/server/htdocs
# setfacl -d -m g:apache:rwx /var/www/server/htdocs
# getfacl /var/www/server/htdocs
# file: /var/www/server/htdocs
# owner: ftp
# group: ftp
user::rwx
group::r-x
other::r-x
default:user::rwx
default:user:apache:rwx
default:group::r-x
default:group:apache:rwx
default:mask::rwx
default:other::r-x
После помещения файлов или каталогов в этот каталог вы увидите, что у вас есть несколько прав доступа к ним.Но имейте в виду, что эти права предоставляются только новым файлам, а не существующим один раз.
# getfacl /var/www/server/htdocs/test.txt
# file: /var/www/server/htdocs/test.txt
# owner: ftp
# group: ftp
user::rw-
user:apache:rwx #effective:rw-
group::r-x #effective:r--
group:apache:rwx #effective:rw-
mask::rw-
other::r--
При использовании 'ls -l' после разрешений вы видите '+', чтобы сообщить о правах acl:
# ls -la /var/www/server/htdocs
insgesamt 0
drwxr-xr-x+ 3 ftp ftp 80 26. Nov 12:43 .
drwxrwxrwt 15 root root 360 26. Nov 12:40 ..
drwxrwxr-x+ 2 ftp ftp 40 26. Nov 12:43 test
-rw-rw-r--+ 1 ftp ftp 0 26. Nov 12:43 test.txt