Разрешить www-data перемещать файлы в каталоге пользователя chroot sftp, используя ACL
У меня есть пользователи sftp, которые регулярно помещают файлы в свои собственные домашние каталоги, которые я следовал руководству по digitalocean, чтобы ограничить их доступ только к своим домашним каталогам. Смотри здесь
Это прекрасно работает.
У меня также есть API, который управляется с помощью nginx и запускается с использованием пользователя www-data. В этом API у меня есть конечная точка, которая выполняет сценарий в другом месте на сервере. Этот скрипт сканирует каталоги ftpuser и загружает файлы в базу данных. Я сделал это, потому что моя идеальная ситуация заключается в том, что каждый пользователь может загрузить свои файлы, а затем начать загрузку, когда они будут сделаны с помощью простого вызова API.
Я создал группу api_access
и добавил к нему www-данные. Затем я пошел в каталог пользователей sftp и создал rwx
ACL для этого api_access
группа. К сожалению, это по какой-то причине сломало мой chrooted sftp, и мне пришлось удалить ACL в родительском каталоге /home/ftpuser/
, На этом этапе мой пользователь www-данных может читать файлы, но не может выполнить mv
команда (не выполнена на ходу с ошибкой "отказано в разрешении")
Я оставил ACL в подкаталогах (в частности, /data/ и /archive/), так как именно там я и хотел получить разрешения. Однако скрипт все равно не работает.
Мне удалось заставить его работать, изменив разрешения для каталогов /data/ и / archive /, используя chmod -R o:rwx <folder>
но это не то, что я хочу. Кроме пользователя ftp и группы ftpaccess, я хочу, чтобы группа api_access была единственной группой, имеющей доступ к этим папкам.
Может кто-нибудь объяснить, почему мой ACL вышел из строя и как я должен был его построить?
getfacl data/
возвращает:
# file: data
# owner: ftpuser
# group: ftpaccess
user::rwx
group::r-x
group:api_access:rwx
mask::rwx
other::rwx
default:user::rwx
default:group::r-x
default:group:api_access:rwx
default:mask::rwx
default:other::r-x