Я изучал этот вопрос некоторое время назад и нашел полезную информацию... но теперь, когда мне действительно нужно это сделать, я, конечно, больше не могу найти то руководство, которое видел.
В любом случае, вот ситуация. У меня есть программа, которая работает с использованием меню ncurses через SSH. Я хочу, чтобы пользователи могли входить в эту программу через SSH, но только в эту программу.
Что мне нужно сделать, чтобы этот сценарий стал возможным?
- Пользователь открывает Putty
- Пользователь входит на сервер Linux, используя свое имя пользователя и пароль.
- При входе в систему они сразу попадают в эту программу.
- В случае закрытия программы, сбоя, отмены и т. д. пользователь принудительно выходит из системы.
Моя цель — вообще лишить их возможности видеть командную строку и ограничиться только этой программой. Возможно ли это? Как я могу/буду ли я это делать?
решение1
Это также называется авторизацией по сети.
Добавить к профилю пользователя ~/.profile выполнение программы и выход.
exec /usr/local/bin/program
exit
Умные пользователи знают, что они могут предоставить команду в своем клиенте ssh, которая не является оболочкой, которую вы ожидаете. Предотвратите это с помощью ForceCommand в вашей конфигурации sshd:
ForceCommand
Принудительно выполняет команду, указанную ForceCommand, игнорируя любую команду, предоставленную клиентом, и ~/.ssh/rc, если она присутствует. Команда вызывается с помощью оболочки входа пользователя с опцией -c. Это применимо к выполнению оболочки, команды или подсистемы. Это наиболее полезно внутри блока Match.
Match Group programusers
ForceCommand /usr/local/bin/program