Назад | Перейти на главную страницу

openssh sftp chroot: два уровня доступа

Я хотел бы добиться следующего с помощью директив 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}.