Я хотел бы ограничить некоторых пользователей на моем сервере возможностью выполнять только определенные команды. Для этого наиболее распространенным подходом, который я смог найти, является использование рбаш
.
Хотя я могу найти множество веб-сайтов, рассказывающих о 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, также должны быть ограничены.