1

Как это обычно решается, когда есть сервер SSH, и когда пользователь входит в систему, есть приложение cli (например, простое меню), которое вы не можете закрыть / запустить новую оболочку bash.

Это так же просто, как изменить оболочку для данного пользователя?

1 ответ1

4

Существует ForceCommand вариант в sshd_config:

ForceCommand
Принудительно выполняет команду, указанную ForceCommand , игнорируя любую команду, предоставленную клиентом, и ~/.ssh/rc если присутствует. Команда вызывается с использованием оболочки входа пользователя с параметром -c . Это относится к выполнению оболочки, команды или подсистемы. Это наиболее полезно внутри блока Match. Команда, изначально предоставленная клиентом, доступна в переменной среды SSH_ORIGINAL_COMMAND . […] По умолчанию нет.

Он говорит , что «команда вызывается с помощью входа пользователя оболочки с опцией -c так что вам нужно exec еще один инструмент, а не просто запустить его:

ForceCommand exec top

Таким образом, оболочка входа пользователя будет сразу же заменена на top , оболочки больше не будет. Выход из инструмента разорвет соединение.

Заметки:

  • Это влияет на вход в систему только через SSH, пользователь все еще может войти в систему локально и получить оболочку (если этот метод не был намеренно отключен другими средствами). Вы говорите о доступе по SSH, а не о общем доступе, поэтому я предполагаю, что это то, что вам нужно.

  • Ваш вопрос начинается с «Как это обычно решается…». Я понятия не имею, если это, как это обычно решается, все, что я знаю, - это возможный путь.

  • Чтобы повлиять на одного пользователя, вам нужен условный блок, например:

    Match User spectator
      ForceCommand exec top
    
  • Некоторые инструменты позволяют пользователям запускать произвольные команды и в любом случае получать оболочку. (Я даже не уверен, что top в этом вопросе безопасен, рассмотрим это как пример).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .