Вопрос или проблема
Я настроил ограниченный bash для пользователя (scriptsser) на Машине A и создал символические ссылки на нужные команды, как показано ниже
lrwxrwxrwx. 1 root root 10 Nov 28 08:09 touch -> /bin/touch
lrwxrwxrwx. 1 root root 8 Nov 28 08:09 ssh -> /bin/ssh
lrwxrwxrwx. 1 root root 7 Dec 18 07:44 mv -> /bin/mv
Все работает отлично, и я могу использовать эти команды, когда я вхожу в систему на Машине A с этим пользователем (scriptsser).
Проблема начинается, когда я пытаюсь выполнить команду с удаленной машины, например, Машины B.
ssh scriptsser@MachineA -i /home/scriptsser/.ssh/id_rsa "mv /file1 /file2" ;
Я получаю следующее сообщение об ошибке.
rbash: /bin/rbash: restricted: cannot specify `/’ in command names
Что я упускаю из виду?
Я понял, что установил ‘/bin/rbash’ в authorized_keys для пользователя “scriptsser”.
Ответ или решение
Ваша ситуация с ограниченным bash (rbash) на машине A в контексте удаленного выполнения команд действительно требует детального рассмотрения и понимания. Давайте разберем вашу задачу и возможные пути решения.
Теоретическая часть
Ограниченная оболочка (rbash):
rbash – это модифицированная версия bash, которая накладывает ограничения для повышения безопасности, предотвращая выполнение некоторых команд или перемещение в файловой системе. Обычно используется для создания изолированных сред для пользователей, которые должны выполнять только определенные команды.
Типичные ограничения rbash:
- Запрет на использование абсолютных путей: Это ограничение, с которым вы столкнулись судя по ошибке
rbash: /bin/rbash: restricted: cannot specify '/' in command names
. - Запрещена смена каталога (cd).
- Список разрешенных команд: Пользователь может выполнять только команды, на которые созданы символьные ссылки и которые находятся в их PATH.
Символьные ссылки и PATH:
Обычно для пользователей с ограниченным доступом создается специальный каталог (например, /home/scriptsser/bin
), где располагаются символьные ссылки на разрешенные программы. Это предотвращает использование других программ, путями к которым isх kasptorijhьhbsyhczigspytl.
Пример
Вы настроили несколько команд через символические ссылки (например, touch, ssh, mv). При локальной работе все работает корректно. Однако удаленный вызов через SSH ведет к ошибке из-за особенностей настройки удаленного доступа и интерпретации ограниченной оболочкой.
Применение и рекомендации
-
Изменение конфигурации SSH:
- При использовании SSH для удаленного выполнения команд с косты попробуйте убедиться, что в файл
authorized_keys
не задано жесткое использование/bin/rbash
. Вы можете также посмотреть на порядок выполнения и init команд, которые выполняются при использовании SSH. - Один из способов – использовать опцию
command
вauthorized_keys
, чтобы разрешить выполнение только определенного сценария или командного файла, который будет использовать относительные пути или исполняемые файлы внутри разрешенного директория.
- При использовании SSH для удаленного выполнения команд с косты попробуйте убедиться, что в файл
-
Настройка окружения PATH:
- Убедитесь, что PATH для пользователя
scriptsser
на машине A включает в себя только те директории, где созданы разрешенные символьные ссылки. Это может быть сделано в .bashrc или через системные конфигурации. - Например, добавьте в .bashrc:
export PATH=/home/scriptsser/bin
- Убедитесь, что PATH для пользователя
-
Отказ от абсолютных путей:
- Используйте относительные пути или скрипты, которые ссылаются на команды внутри установленных ограничений.
- Определите пути в скрипте, который можно прописать в разрешенном catalog, которому получит доступ на выполнение.
-
Альтернативные методы:
- Если у вас закрыта возможность перехода на использование полноценного bash, рассмотрите написание простого шелл-скрипта, который будет находиться в разрешённом PATH и выполнять mv, touch, и другие нужные вам команты, манипулируя параметрами и проверками.
Обращение к вопросу настройки и безопасной работы через SSH с ограниченными оболочками требует баланса между безопасностью и функциональностью. Использование best practices при настройке оболочки и работы с удаленным доступом помогут реши вашу проблему, не ослабляя безопасность на машине A.