Иногда возникает ситуация, когда надо ограничеть пользователя, который подключается к системе через SSH. TrueWay использовать chroot, но я рассмотрю альтернативный вариант, а именно lshell.
Естественно, его нужно установить:
# yum install lshell
Конфиг находится в /etc/lshell.conf
.
В принципе файл довольно подробно документирован, но кратко пройдусь по параметрам.
Файл разбит по секциям.
# глобальные настройки самого lshell.
[global]
# путь до логов
logpath : /var/log/lshell/
# уровень логирования от 0 до 4
loglevel : 2
# шаблон логфайлов (возможны комбинации %u - user, %d - day %m - month, %y - year, %h - time)
# возможен вариант syslog
logfilename : %u
# в случае, если logfilename установлен как syslog, используется как идентификатор приложения
#syslogname : lshell
# нижеследующее также применимо к [username], [grp:groupname]
[default]
# список aliases, подобно как в .bashrc
aliases : {'ll':'ls -l', 'vi':'vim'}
# список разрешенных команд, разрешенных на выполнение
# заданных для пользователя PATH
allowed : ['ls','echo','cd','ll']
# список запрещенных символов
forbidden : [';', '&', '|','`','>','<', '$(', '${']
# список команд, которые можно использовать с sudo
#sudo_commands : ['ls', 'more']
# сколько раз предупреждаем пользователя, что он хочет запретного
# прежде чем выкинуть из lshell. -1 - отключить
warning_counter : 2
# баннер, который отображается при входе в lshell
intro : "== My personal intro ==\nWelcome to lshell\nType '?' or 'help' to get the list of allowed commands"
# Как выглядит командная строка (возможные комбинации %u - user и %h - host)
prompt : "%u@%h"
# таймер сессии, значение в секундах
# не понятно что это за штука
timer : 5
# список директорий, куда пользователю разрешено ходить
path : ['/var/log/','/etc']
# можно переопределить home directory для пользователя
# если не задана, используется $HOME
#home_path : '/home/bla/'
# можно перезадать $PATH для пользователя
#env_path : ':/usr/local/bin:/usr/sbin'
# можно добавить переменные окружения
#env_vars : {'foo':1, 'bar':'helloworld'}
## разрешить/запретить использвать scp. 0 - нет, 1 - да
scp : 0
# разрешить/запретить использовать upload для scp
scp_upload : 0
# разрешить/запретить использовать download для scp
scp_download : 0
## разрешить/запретить использовать sftp
sftp : 0
# уровень жесткости. В случае, если стоит 1, все неизвестные команды будут
# считаться запрещенными, по истечении warning_counter команд пользователя выкинет из lshell
# в противном случае, просто выдается предупреждение
strict : 0
# если задана, то все принятые по scp файлы будут сложены в следующую директорию
#scpforce : '/home/bla/uploads/'
# размер истории
history_size : 100
# расположение файла истории (по умолчанию в /home/%u/.lhistory)
history_file : "/home/%u/.lshell_history"
# пример пользователя
[loguser]
allowed : ['ls','echo','cd','ll','cat','less']
path : ['/var/log/phpdaemon/']
warning_counter : -1
Обращаю внимание, что мне пришлось вручную создать директорию для логов и разрешить доступ всем, для того, что бы логи начали писаться.
Не разбирался почему так, возможно, это просто баг.
links:
Официальная документация