Изолируем пользователей ssh в домашней директории с помощью lshell
Установим lshell, он есть в репозиториях большинства дистрибутивов. Установка для дебианоподобных дистров:
# apt-get install lshell
Затем открываем конфигурационный файл и редактируем
# nano /etc/lshell.conf
Там в основном все просто и понятно, обратим внимания на некоторые переменные в разделе [default].
Команды разрешённые для выполнения:
allowed : ['ls','echo','cd','ll','rsync','mkdir']
В allowed нельзя вписывать программы которые умеют бродить по каталогам например mc, т.к из lshell выполнение передается в bash и такие программы смогут выйти за пределы домашнего каталога. Поэтому тут будьте внимательны.
Команды которые можно выполнять через ssh:
overssh : ['ls','rsync']
В конце конфигурационного файла можно указать индивидуальные настройки для определенного юзера примерно так:
[user]
allowed: ['ls','echo','cd','ll','rsync','mkdir','cp','mv']
path: ['/backups']
overssh: ['ls', 'rsync']
Тут например мы разрешили пользователю user выполнять команды указанные в allowed, кроме домашней папки он может ходить в /backups, и может выполнять по ssh ls и rsync.
После редактирования сохраняемся и и закрываем файл.
Теперь нужно изменить shell у пользователей, которых мы ограничиваем.
# chsh -s /usr/bin/lshell user
# chsh -s /usr/bin/lshell user1
# chsh -s /usr/bin/lshell user2
.....
Теперь пробуем зайти по ssh user’ом и проверяем, что он изолирован в домашней папке и может выполнять только команды указанные в allowed.