Решения по умолчанию для очень ограниченных удаленных оболочек linux

. У меня есть пользователь, которому нужно подключиться к удаленной машинеM(через ssh)и запустить ее в фиксированный набор команд (скажем Nвсего ).

Эти команды основаны на python, его библиотеках и привилегированном доступе к сети (, которая есть у машины M).

Существуют ли стратегии по умолчанию, ограничивающие пользовательскую оболочку linux только выполнением этих Nкоманд, без какой-либо возможности:

  • дальнейшего доступа к файловой системе
  • чтения содержимого самих команд
  • получения привилегированный доступ к сети
  • и т.п.

Другими словами, каковы стратегии по умолчанию для запроса ограниченной консоли для пользователя после входа в систему, позволяя, например, только числа между 1и Nв качестве входных данных?

0
задан 18 September 2021 в 06:27
1 ответ

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

При достаточной автоматизации вход на хост может не потребоваться. Возможно, предоставить через какую-нибудь систему самообслуживания эти ограниченные возможности, что делает автоматика.

Чтобы позволить им делать то же самое на хосте, попробуйте то, что я бы назвал перехваченным текстовым меню. Какой сценарий вам может понадобиться написать.

Чтобы строго запретить человеку заниматься другими делами, требуется несколько уловок.

  • Войдите в систему как непривилегированный, в идеале уникальный для них пользователь. Расширяйте доступ к привилегированным вещам с помощью таких инструментов, как doas или sudo.
  • Mandate это меню работает с блоками OpenSSH ForceCommand.
  • Также выполнить его из профилей оболочки. exec, поэтому он заменяет процесс оболочки, а когда меню закрывается, то же самое происходит и с их сеансом.
  • Перехват сигналов в сценарии меню.
  • Остерегайтесь программ, которые могут запускать произвольные команды. Оболочка тривиальна в vim, команда :shell
  • Напишите и используйте в качестве сценариев-оболочек пунктов меню для более сложных операций или большего контроля над выводом.

Выберите язык сценариев для написания меню. Рассмотрите возможность использования существующей библиотеки текстового меню. Цикл ввода сам по себе не сложен, но сделать его надежным, легко модифицируемым и с хорошим UX — это то, что вам действительно нужно в производственной среде.

0
ответ дан 12 October 2021 в 22:52

Теги

Похожие вопросы