Я хотел бы ограничить некоторых пользователей на моем сервере возможностью выполнять только определенные команды. Для этого наиболее распространенным подходом, который я смог найти, является использование рбаш.
Хотя я могу найти множество веб-сайтов, рассказывающих о rbash, у меня возникают проблемы с поиском какой-либо информации о том, как правильно его использовать. Наиболее распространенный подход, который я смог найти, заключался в создании символической ссылки из /бин/рбаш к /бин/баш, установите оболочку входа ограниченных пользователей в /бин/рбаш а затем установить пользовательский ДОРОЖКА в ~/.bash_profile в домашнем каталоге пользователя.
Однако я был весьма потрясен, узнав, что с этой настройкой пользователи по-прежнему могут копировать файлы на сервер, используя SCP и они могут даже открыть неограниченную оболочку, используя ssh пользователь@хост -t bash! Похоже, что происходит то, что сервер SSH передает команду в оболочку входа на сервер, используя -с, так ssh пользователь@хост -t bash заставляет сервер работать /bin/rbash -c баш, который работает, потому что .bash_profile еще не выполняется, чтобы ограничить путь. SCP аналогично заставляет сервер работать /bin/rbash -c scp.
Теперь я столкнулся с ForceCommand директива sshd. Эта директива в основном всегда приводит к тому, что сконфигурированная команда передается как -с в оболочку входа, игнорируя любую команду, указанную клиентом. Так что если ForceCommand установлен на рбаш, который всегда будет выполнять команду /bin/rbash -c rbash на сервере, независимо от того, был ли клиент вызван с -т баш или как SCP или что-то еще. К сожалению, /bin/rbash -c rbash вызывает .bash_profile не выполняться, поэтому мы получаем ограниченную оболочку, но нормальную ДОРОЖКА, так что мы можем просто позвонить бить там, чтобы избежать этого.
Чего я хотел бы достичь:
- Не должно быть никакого способа избежать ограниченной оболочки для пользователей, подключающихся через SSH.
- В идеале по-прежнему можно было бы выполнять команды, разрешенные в ограниченной оболочке, с помощью
ssh user@server разрешенная_команда
- Конфигурация не должна быть только SSH, поэтому пользователи, входящие в систему, например, через TTY, также должны быть ограничены.