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

OpenSSH SFTP: chrooted пользователь с доступом к файлам других chrooted пользователей

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

В настоящее время у меня есть 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 ).

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

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

chroot adminuser в / chroothome.

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

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

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

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

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

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

В вашем / 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