Пользователи подключаются к серверу через SFTP. При этом каждому из них доступен просмотр любого каталога на сервере, если права на каталог не x00
Как можно ограничить пользователя? Дать возможность просматривать только свой домашний каталог?
Ответ
в openssh, начиная с версии 4.9, добавлена возможность делать chroot для пользователей.
для этого нужно в конец конфигурационного файла sshd (обычно /etc/ssh/sshd_config) добавить такие строки (здесь подразумевается, что домашние каталоги располагаются в каталоге /home):
match group sftponly
chrootdirectory /home/%u
forcecommand internal-sftp
заодно убедитесь, что в этом файле присутствует строка, начинающаяся с subsystem sftp. если есть, но закомментирована — раскомментируйте. если же совсем отсутствует что-либо подобное, вставьте (выше строки, начинающейся с match) такую строку:
subsystem sftp internal-sftp
после этого надо проверить корректность внесённых изменений:
$ sudo /usr/sbin/sshd -t
если проверка успешна, перезапустите sshd. обычно так:
$ sudo service ssh restart
затем нужно создать группу (вообще имя произвольное, можно использовать и другое, не забыв подправить его в вышеуказанном файле):
$ sudo groupadd sftponly
затем нужного пользователя(-ей) нужно добавить в эту группу. в debian и основанных на нём дистрибутивах (и ещё многих, не основанных) есть удобная программа adduser
$ sudo adduser <имя пользователя> sftponly
в тех дистрибутивах, где нет такой программы, можно сделать примерно так:
$ sudo useradd -a -G sftponly <имя пользователя>
и, наконец, нужно сделать root-а владельцем домашнего каталога выбранного пользователя(-ей) и запретить другим возможность записи в этот каталог:
$ sudo chown root:root /home/<имя пользователя>
$ sudo chmod go-w /home/<имя пользователя>
дополнение по поводу домашнего каталога в директиве chrootdirectory
если домашний каталог пользователя находится не в /home, имеет смысл в этой директиве использовать полный путь к домашнему каталогу с помощью %h
chrootdirectory %h
Комментариев нет:
Отправить комментарий