Я обдумывал способы ограничить доступ пользователей к их собственным каталогам, не позволяя им перемещаться выше своего собственного каталога пользователей.
Я использую SFTP и не хочу устанавливать обычный FTP из-за всех возникающих дополнительных проблем с безопасностью.
rbash
звучит как хорошая идея, за исключением того факта, что он отключает cd
. Я хочу, чтобы пользователи могли создавать каталоги в своем домашнем каталоге и перемещаться по своим собственным папкам.
А chroot
jail звучит так, как будто у него есть собственный набор проблем, и это больше похоже на головную боль, чем она того стоит.
Итак, мой вопрос: есть ли более простой способ ограничить пользователя только возможностью перемещаться по его пользовательскому каталогу, а не чем-либо выше его пользовательского каталога?
Если вы можете ограничить их только SFTP и не позволять им входить в систему через ssh, вы можете использовать средства chroot, встроенные в openssh. вот хорошая статья, объясняющая, как
Итак, следуя ссылке и инструкциям, на которые мне указал Стю, я смог заставить это работать. Однако мне пришлось внести несколько изменений, чтобы ключи SSH работали должным образом, поэтому я решил опубликовать подробный список того, что я сделал, чтобы другие могли прочитать.
chroot
Пользователь, использующий SSH для доступа только по SFTP:Начиная с Debian Squeeze 6.0.5 и OpenSSH 5.5p1
Добавить пользователя: adduser username
Добавьте группу для назначения пользователей, для пользователей, которых вы хотите исключить:
addgroup sftponly
<- название группы не имеет значения, если вы измените его во всех местах ниже
Добавить пользователя в группу: usermod -G groupname username
Установите libpam-chroot: apt-get install libpam-chroot
Добавьте следующую строку в /etc/pam.d/login
session required pam_chroot.so debug
Перейти к: /usr/share/doc/libpam-chroot/examples
Затем: chmod 744 setup-chrootdir-shell.sh
так что вы можете запустить скрипт
Запустите скрипт, указав каталог после скрипта:
./setup-chrootdir-shell.sh /path/to/userdir
Убедитесь, что каталог, который только что создан скриптом, существует, принадлежит пользователю и корню группы и для него установлено 755 разрешений.
Измените домашний каталог для пользователя: usermod -m -d /home/chrootdir/home username
Отключить оболочку пользователя: chsh -s /bin/false username
Скопируйте файлы пользователя в новый каталог (папку .ssh, .profile и т. Д.)
Отредактируйте файл конфигурации sshd: vi /etc/ssh/sshd_config
# %h/.ssh/authorized_keys is the default
AuthorizedKeysFile /home/%u/.ssh/authorized_keys
# Subsystem for chroot jail
# Default is Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp
# Chroot jail config
Match group sftponly
ChrootDirectory /home/chrootdir/home/%u
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
Match
Если вы используете AllowUsers
, добавьте к нему этого пользователя.
AllowUsers username
редактировать /etc/passwd
и измените расположение каталога пользователя для пользователя
vi /etc/passwd
например: username:x:1001:1002:/home/chrootdir/home:/bin/false
перезапустить ssh: /etc/init.d/ssh restart