Иногда бывают случаи,когда надо пустить на свой сервер потенциально опасных пользователей.Хотя не столько потенциально опасных самих пользователей,сколько из опасного места — например какой нить сервер,доступ к которому имеют другие люди.В моем случае это сервер с которого бекапы ежедневно дублируются на мой сервер.Лить их,ясень пень,будем по scp, а значит нам надо добавить ключ нашего сервера в список авторизированных на удаленном сервере.А это опять же означает что при простых настройках,любой юзер с не доверенного сервера сможет заходить на мой сервер без пароля,ибо ключ уже добавлен в известные.Вот тут то и понадобиться ограничить действия нашего пользователя в системе! Есть несколько вариантов.Один из них — запустить юзера в ssh chroot оболочке.Но это много геммороя.Есть более простой способ — программа lshell,что расшифровуется как Limited Shell.
1)Для начала установим ее на нашем защищаемом сервере:
apt-get install lshell
2)Теперь создадим отдельного юзера,под которым сюда будут заливаться бекапы с удаленного сервера:
useradd -m —shell=/usr/bin/lshell username
Тут мы указали что создать домашнюю директорию вида /home/username и что оболочка пользователя будет наша LShell.
Зададим пароль юзеру:
passwd username
Если надо поменять оболочку уже существующему юзеру,то делается так:
usermod -s /usr/bin/lshell username
3)Исправим файл настроек lshell, что б разрешить нашему username выполнять строго определённый набор команд:
nano /etc/lshell.conf
В конец файла добавим:
[username]
sftp : 1 # можно соединяться по sftp
scp : 1 # можно принимать и отсылать по scp
allowed : ['cd','exit','ls','tar','mysqldump','mysql'] # только эти команды можно выполнять
forbidden : [';', '&','`','$(', '${'] # эти управляющие символы запрещены
path : ['/var/www'] # можно кроме домашнего каталога ходить и по указанному пути
Сохраняем и идем на удаленный сервер. Там уже под пользователем root генерируем ключ ssh-keygen -t rsa и добавляем его в известные ssh-copyid [email protected]. Теперь уже пишем скрипт или любым другим способом отправляем файл(ы) командой scp имя_файла [email protected]: — двоеточие в конце обязательно! Файлы должны копироваться без запроса пароля.