Укажите пароль SU в скрипте bash, внутри скрипта?

цель состоит в том, чтобы перезагрузить машину, если она не получает команду abort от пользователя. Проблема в том, что при настройке терминалов пользователь должен указать пароль SU для shutdown,init,reboot, etc. команды. Нам интересно, можно ли предоставить пароль в самом сценарии bash, возможно, используя stdin.
то есть:

#!/bin/bash
# (script)
echo "Terminal will restart in 60s, Ctrl+C to cancel."
sleep 60
su - root -c "init 6" < "password"

мы попробуем поместить пароль в файл и stdin, что.

Edit:sudo и expect вне как разрешения как их установка будет невозможна из-за огромного количества документов для получения разрешения и ограниченного периода времени. Также мы хотели бы использовать init 6 или shutdown -r, а не reboot.

8
задан Kendall
23.03.2023 17:12 Количество просмотров материала 3189
Распечатать страницу

3 ответа

Вы можете настроить sudo, чтобы позволить любому пользователю запускать определенные команды, указанные вами, как root, без необходимости вводить пароль. См.это ошибка сервера статья описание того, как настроить sudo.

затем в скрипте используйте sudo, а не su:

sudo перезагрузка

2
отвечен Mox 2023-03-25 01:00

AFAIK вы не можете делать то, что вы просите. При использовании stdin с <, пароль будет введен через stdin намного раньше, чем оболочка действительно запросит пароль. Вы должны попробовать использовать sudo. Если нет, то лучше всего chmod reboot и дайте себе права на выполнение.

1
отвечен darnir 2023-03-25 03:17

вы можете сделать это с помощью socat:

user@host$ (sleep 1; echo SuperSecr3t) | socat - EXEC:'su -c id',pty
Password: ### No input here, just wait 1sec
uid=0(root) gid=0(root) groups=0(root)
0
отвечен jrm 2023-03-25 05:34

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх