У меня есть сервер Debian Wheezy, на котором я хотел бы заблокировать определенных пользователей, когда они входят в систему через сервер openssh. Однако я получаю странную ошибку: в целях тестирования я просто добавил
ChrootDirectory /data/
В мой файл sshd_config (и перезапуск сервера)
Когда я пытаюсь войти в систему с помощью putty, окно просто закрывается без сообщения об ошибке. Когда я пытаюсь использовать openssh-client с сервера на себя, я получаю такую ошибку:
ssh testuser@localhost
testuser@localhost's password:
Last login: ....
/bin/bash: No such file or directory
Connection to localhost closed
каталог / data / принадлежит root: root и имеет 755 разрешений. Если я попытаюсь добавить каталог / data / testuser с такими же разрешениями, произойдет та же ошибка.
В auth.log нет никаких следов ни одной попытки.
Если я удалю строку chroot из sshd_config и перезапущу сервер, мне будет разрешено входить в систему как обычно, как через putty, так и через openssh-client.
Почему я получаю эту ошибку? Я не понимаю этого.
Это нормально и ожидаемо при настройке chroot. Что вам действительно нужно сделать, так это потратить некоторое время на изучение инструментов, которые вы используете. В частности, что такое chroot и как он работает, что явно отличается от того, как вы думаете. Этот отрывок из Википедии объясняет проблему, с которой вы сталкиваетесь, и дает представление о дальнейших исследованиях, которые вы можете предпринять.
Chroot в операционных системах Unix - это операция, которая изменяет видимый корневой каталог для текущего запущенного процесса и его дочерних процессов. Программа, запущенная в такой измененной среде, не может давать имена (и, следовательно, обычно не иметь доступа) к файлам за пределами назначенного дерева каталогов.