Как запустить su root и ввести учетные данные в скрипт?

у меня есть скрипт, и его нужно запускать от имени пользователя root. Я просто хотел узнать, как запустить этот скрипт, используя suв скрипте. - Я использую CentOS7.

Команда, которую я пытался выполнить (ниже), не удалась:

su root учетные данные=/home/root/root.cred

а затем продолжить оставшуюся часть скрипта — к сожалению, это не сработало. Я включил файл .cred, потому что root запрашивает пароль root при переходе на root. Есть ли способ запустить su rootи перейти на root в скрипте.

Есть идеи?


Я могу запутаться, но я просто хочу объяснить дальше:

У меня есть скрипт, который я хочу запускать от обычного (не sudoer) пользователя, но эта команда является командой sudo, поэтому только исполняемый sudoer. Root — это sudoer, поэтому, когда скрипт запускается обычным пользователем, он будет запускаться в скрипте как root. Если я начну сценарий с su root, он не сможет пройти дальше этого, потому что для этого требуется пароль. Есть ли способ ввести пароль root, чтобы обойти команду suи запустить остальную часть скрипта, используя сам скрипт. Может эхоили что-то в этом роде? - Понятия не имею, поэтому и задаю этот вопрос.

Если у вас есть вопросы, задавайте их ниже :)

0
03.11.2020, 11:12
1 ответ

Не существует механизма безопасного «преобразования пользователя в root для остальной части этого скрипта». Все средства получения root-прав на уровне пользователя должны запускать отдельный экземпляр оболочки или программы с новыми учетными данными для повышения прав программы. Чтобы решить эту проблему для ввода пользователем команд в оболочке, мы должны использовать систему sudo.

Для вашей проблемы решение состоит в том, чтобы отделить раздел скрипта, который вы хотите повысить, в другой скрипт и запустить его с помощью sudo в конце первой части «обычного пользователя». Как показано в ответе Parsa Mousavi , вы будете использовать visudoдля редактирования файла sudoers и его настройки, а также можете предоставить обычному пользователю права на выполнение корневого сценария без ввода пароля, если тебе нравится.

ВАЖНО:Необходимо указать полный путь скрипта и аргументов (если таковые имеются )в определении sudoers, а также прописать точно такой же путь и аргументы в вызывающем скрипте. Скажем, если вы авторизуете /bin/mount /cdromв файле sudoers, в вызывающем скрипте должно быть указано sudo /bin/mount /cdrom, чтобы это работало. Если ваш скрипт не имеет аргументов в файле sudoers, например /root/my_script.sh, вы будете вызывать его с sudo /root/my_script.shбез аргументов. Кроме того, вы должны сделать скрипт владельцем root (и применить к нему chmod go-w), чтобы никто не мог изменить его и ненадлежащим образом выполнять неавторизованные команды.

0
18.03.2021, 23:30

Теги

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