ForceCommand

ForceCommand

Я изучал этот вопрос некоторое время назад и нашел полезную информацию... но теперь, когда мне действительно нужно это сделать, я, конечно, больше не могу найти то руководство, которое видел.

В любом случае, вот ситуация. У меня есть программа, которая работает с использованием меню 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

Связанный контент