Я хотел бы добиться следующего с помощью директив OpenSSH internal-sftp, chroot и Match:
Пользователи, принадлежащие к группе sftpuser должен иметь доступ для чтения и записи в / srv / sftp / {username} (или аналогичные, могут быть предприняты определенные уловки, чтобы представить более красивую структуру каталогов для chrooted пользователя)
Пользователи, принадлежащие к группе sftpadmin должен иметь доступ для чтения и записи к / srv / sftp и подкаталогам, то есть ко всем другим пользовательским каталогам.
Все пользователи, принадлежащие sftpadmin или sftpuser, являются пользователями только sftp. Так что не нужно беспокоиться об оболочках и т. Д.
/ srv / sftp должен принадлежать пользователю root, чтобы пользователи sftpadmin могли перейти в эту папку. / srv / sftp / {username} также должен принадлежать root, чтобы привязать пользователей sftpuser к этой папке.
Как лучше всего предоставить пользователям sftpadmin доступ к корневым каталогам / srv / sftp / {username}?
Могу ли я просто использовать ACL поверх прав root?
В итоге я сделал это:
/ srv / sftp / testadmin (домашний каталог testadmin пользователь)
/ srv / sftp / testuser / testuser (дом тестовый пользователь пользователь)
Группа sftpadmin, которую я привязал к / srv / sftp:
Match Group sftpadmin
ChrootDirectory /srv/sftp
AllowTCPForwarding no
X11Forwarding no
ForceCommand internal-sftp
и группа sftpuser, которую я привязал к / srv / sftp / {username} и изменил их начальный каталог на / srv / sftp / {username} / {username} (который просто / {username} видно из chroot):
Match Group sftpuser
ChrootDirectory /srv/sftp/%u
AllowTCPForwarding no
X11Forwarding no
ForceCommand internal-sftp -d /%u
Наконец, я дал группе sftpadmin rwx в каталоге / srv / sftp / testuser / testuser:
setfacl -m g:sftpadmin:rwx /srv/sftp/testuser/testuser
Это примерно достигло того, что я хотел. В sftpadmin группа может читать, записывать и изменять рабочий каталог на все, что ниже / srv / sftp (включая "домашние каталоги" sftpuser группа). В sftpuser группа может записывать только в каталог / srv / sftp / {username} / {username} и не видеть другой sftpuser home dirs, так как они расположены вне chroot для группы sftpuser.
Единственное, что нежелательно думать об этом, - это структура / srv / sftp / {username} / {username}. Пользователь группы sftpuser может делать CD .. и вернитесь в / srv / sftp / {username}, где указанный пользователь не может делать ничего полезного, кроме как вернуться к / srv / sftp / {username} / {username}. Изменение каталога на / srv / sftp / {username} можно предотвратить, удалив бит выполнения для / srv / sftp / {username}, но это также помешает группе sftpadmin перейти в этот каталог и, следовательно, эффективно помешать им выводить список файлов. и т. д. в каталоге / srv / sftp / {username} / {username}.