Сервер: Red Hat Enterprise Linux Server версии 6.5 (Сантьяго)
Использование openssh-server для разрешения sftp-соединений.
Я пытаюсь ограничить пользователей их личным домашним каталогом. Итак, я изменил / etc / passwd, установив пользователя "john" для использования /bin/rbash
вместо того /bin/bash
john:502:503::/home/john:/bin/rbash
Если я это сделаю, Джон не сможет подключиться через sftp: соединение закрывается, как только он входит в систему (сообщение sftp Connection closed
). Если вместо этого я установлю bash в / bin / bash, его соединение будет работать нормально, но тогда Джон сможет перемещаться по файловой системе сервера с помощью компакт-диска.
Можете ли вы объяснить, что я делаю не так, чтобы ограничить подключение пользователей через sftp к их собственному каталогу?
rbash
не позволит вам запускать команды с ведущими /
, если это будет сделано, он просто выйдет.
Если вы не используете внутренний sftp-сервер, попытка выполнить /usr/libexec/sftp-server
не удастся.
С помощью Subsystem sftp internal-sftp
в sshd_config
исправлю это.
Однако, используя rbash
не остановит sftp от блуждания по вашей файловой системе, вы, вероятно, захотите вместо этого chroot пользователей.
вы можете использовать обычную оболочку без ссылки, для ограниченной оболочки в / etc / profile поместите это
if [[ $USER == "pluto" ]]; then
export PATH=$HOME/bin
readonly PATH
set -r
fi
и
mkdir /home/pluto/bin as root
ln -s /bin/ls /home/pluto/bin/ls
Таким образом, sftp работает, а pluto может использовать только команду ls