У меня есть веб-сайты, которые должны быть полностью доступны для Apache (пользователь www-data), и у меня есть пользователь ftp (с тем же именем пользователя на сервере: user1), который должен иметь возможность обновлять веб-сайт.
Мне нужно, чтобы пользователь мог добавлять файлы в каталог веб-сайта, но www-data должны иметь полный доступ к добавленным файлам.
user1 является членом группы www-data.
На данный момент, когда user1 загружает файл на сервер, у файла есть права: 644, но мне нужно 664.
Как я мог это организовать.
Большое спасибо
Лучший способ исправить это - избегать использования стандартных разрешений unix в качестве принудительного.
Следующие четыре команды должны решить эту проблему:
setfacl -d -m apache:rwx -R /path/to/shared/folder
setfacl -d -m user1:rwx -R /path/to/shared/folder
setfacl -m apache:rwx -R /path/to/shared/folder
setfacl -m user1:rwx -R /path/to/shared/folder
Это изменяет поведение файла с использованием POSIX ACLS, так что и ваш FTP-пользователь, и apache могут изменять / удалять / создавать файлы внутри этого каталога независимо от того, кем был первоначальный автор.
Маски ACL определяются стандартными битами unix для группы. ACL могут сказать, что каталог является директорией, поскольку в нем неизбежно есть + x. Файл обычно не будет таким, даже если у вас есть ACL, установленный как rwx внутри него, часть + x будет замаскирована битом разрешения группы, который не установлен.
Другой способ - использовать suPHP, suExec или другой метод «смены пользователя при выполнении программы». Но лично я считаю эти методы менее удобными, чем этот.