www.Litecode.ru – Сборник рецептов для создания сайтов

Альтернатива chroot или как запереть пользователя в его домашней директории

ГлавнаяUnix → Альтернатива chroot или как запереть пользователя в его домашней директории

Limited shell или lshell — пользовательская оболочка, которая позволяет ограничить набор команд для отдельного пользователя, а так же «запереть» его в собственной директории. Данная реализация может быть полезна, если требуется дать доступ по sftp (который по умолчанию позволяет в гулять по системе в режиме чтения). Таким образом можно вполне обойтись без chroot. Принцип действия и порядок установки (для rpm) следующие:

1. Устанавливаем lshell. В некоторых дистрибутивах его можно найти в репозиториях. Для Cent OS 5.x.x я не нашел и ставил из источников. Скачать можно здесь - lshell или здесь — lshell

2. Добавляем (под root) нового пользователя, например optimus

adduser optimus

3. Далее меняем пользователю оболочку:

usermod -s /usr/bin/lshell optimus

Сразу же можно отредактировать конфиг оболчки, он находится здесь - /etc/lshell.conf В нем по умолчанию практически все запрещено. Добавляем в конец секцию:

[optimus]
sftp: 1 # разрешить коннект по sftp
allowed : ['cd','exit','ls','tar','mysqldump','mysql'] # разрешенные команды
forbidden : [';', '&','`','$(', '${'] # управляющие символы запрещены
path : ['/tmp'] # ращрешенные директории, кроме домашней директории

4. Устанавливаем пароль:

passwd optimus

5. Пробуем зайти по ssh:

ssh optimus@yourhost.ru

Если все ок, видим такое сообщение:

You are in a limited shell.
Type '?' or 'help' to get the list of allowed commands
optimus:~$

6. Скачиваем и устанавливаем альтернативный демон для обработки sftp соединений — MySecureShell, mysecureshell или здесь mysecureshell Конфиг по умолчанию лежит здесь - /etc/ssh/sftp_config

7. Затем правим конфиг нашего sshd /etc/ssh/sshd_config, в котором меняем директиву

Subsystem sftp /usr/lib/openssh/sftp-server

на

Subsystem sftp /bin/MySecureShell -c sftp-server

сохраняем и перезапускаем sshd. Пробуем конектится через ftp клиента и радуемся.