Linux: выполнить определенную команду от имени другого пользователя?

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

У меня есть скрипт, который читает удаленный файл через ssh, чтобы получить статус, что-то вроде:

      #!/usr/bin/sh

state=$(ssh -q -i $HOME/.ssh/id_rsa" auto@remote-host "[ -f /path/to/state/file ] && cat /path/to/state/file 2>/dev/null")

printf "${state}"

У пользователя есть настройка ключа, позволяющая ему войти на удаленный компьютер без пароля. Я хочу, чтобы пользователи могли запускать этот скрипт, не беспокоясь о настройке собственного ключа, например:

bob@local-machine$ /path/to/state-check

Итакпользователь может запустить скрипт какпользователь без проблем. Я знаю, что ты можешь использовать что-то вроде

su auto -c "/path/to/state-check"

Но для этого все равно потребуется доступ к паролю автоматического пользователя или sudo. Есть ли способ настроить файл, который позволит Бобу автоматически запускать определенные команды без пароля? Или мне следует перепроектировать инструмент так, чтобы файлы состояния извлекались и сохранялись локально? Я не совсем уверен, что это хороший способ сделать это. Я запускаю это на машинах RHEL 9.

2 ответа

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

Да

Для этого и создана команда.

Хотя многие начинающие системные администраторы Linux знают и используют только для запуска команд/повышения или повышения привилегий до root и полных прав администратора, и многие примеры предоставляют только неограниченные и неограниченные привилегии.sudoявно предназначен для предоставления ограниченных привилегий , а также может использоваться для запуска одной и/или только некоторых конкретных команд под UID другого непривилегированного пользователя.

См. также /questions/123175/linux-ssh-razreshit-autentifikatsiyu-s-otkryityim-klyuchom-ne-predostavlyaya-pol/123190#123190

Кромеsudo, упомянутый @HBruijn, вы также можете использовать из pkexecPolkit< a i=4> (также известный как Policy Kit). См. также: справочную страницуpolkit(8).

Другие вопросы по тегам