Решил перефразировать вопрос целиком, чтобы не приходилось ставить новый.

В настоящее время у меня есть сервер SFTP, настроенный с использованием функциональности OpenSSH SFTP. Все мои пользователи chrootted, и все работает.

Сейчас мне больше всего нужно, чтобы один пользователь, который не является пользователем root (потому что этот пользователь не может иметь никаких реальных полномочий SSH!), Имел доступ ко всем корневым каталогам других пользователей. Задача этого пользователя - время от времени получать все загруженные документы.

Структура каталогов на данный момент:

/ home | _ / home / user1 | _ / home / user2 | _ / home / user3

С ChrootDirectory, установленным как / home /% u

Пользователь adminuser должен иметь доступ к каталогам user1, user2 и user3 без доступа к / home или, по крайней мере, ни к чему, кроме / home.

Бонусные баллы для того, кто может сказать мне, как разрешить пользователям писать в / home /% u без необходимости создавать новый каталог внутри этого каталога, которым они сами владеют, а не root, как в случае с / home /% u (openssh предварительное условие chroot).

answer

Создайте новый домашний каталог, например / chroothome.

Сделайте так, чтобы домашние каталоги всех пользователей находились в этом chroothome.

chroot adminuser в / chroothome.

Для всего остального просто используйте разрешения файловой системы.

Что касается вашего «бонусного вопроса», то использование встроенных функций невозможно. Неспособность пользователя chroot писать в корневой каталог является механизмом безопасности по замыслу. Конечно, вы всегда можете изменить исходный код.

Тем не менее, я подозреваю, что вы можете указать домашний каталог пользователя как / user1 и иметь рабочий каталог при входе в тот, в который они могут писать.

В вашем / etc / ssh / sshd_config добавьте эти строки:

Subsystem sftp internal-sftp

Match group SFTP-users
     ChrootDirectory /home/%u
     X11Forwarding no
     AllowTcpForwarding no
     ForceCommand internal-sftp

Затем смените владельца домашнего каталога пользователя.

# chown root.root /home/user
# usermod -d / user
# adduser user SFTP-users

Перезапустить демон сервера ssh

#/etc/init.d/sshd restart

1 °) Sshd проверяет, принадлежит ли домашний каталог пользователю, который вошел в систему. 2 °) если вы используете chroot, sshd проверяет, что каждый родительский каталог для дома принадлежит пользователю root ( http://www.tenshu.net/archives / 2008/10/09 / openssh-51-chrootdirectory-permissions-issue / )

Если вы хотите chroot пользователя и позволить ему читать chroot для других пользователей, домашний каталог этого пользователя должен быть родительским каталогом chroot этого пользователя. Из-за этого вы нарушите одно из двух предыдущих правил.

AFAIK, единственное решение - исправить sshd :-)