Я пытаюсь запустить сценарий от имени пользователя root, который добавляет каталоги и изменяет разрешения, но я не уверен, как запустить его от имени пользователя root, не запрашивая у пользователя пароль. Пользователь не обязательно является sudoer, поэтому выполнение какой-либо команды sudo -S или изменение настроек sudoer, чтобы не требовать пароль, здесь не сработает. Любые идеи?
Запуск скрипта от имени root, без root-доступа
Ответы (2)
Судо твой друг. Настройте /etc/sudoers, чтобы разрешить любому запускать скрипт в определенном месте, например:
ALL ALL = NOPASSWD: /path/to/my/root/script
#!/bin/bash
# Пример скрипта Linux, выполняющего инструкции (инструкции) от имени суперпользователя из графического пользовательского интерфейса (рабочий стол Ubuntu с графическим интерфейсом пользователя)
# Эти две инструкции только для этого примера, которые изменяют права root на данный файл
# Превратить этот скрипт в исполняемый, если это еще не сделано
echo $0 | chmod ugo+x
#Создайте файл для этого конкретного примера
echo "some text" > ./my_file
#
# Выполнение корневой инструкции, полезной, например, для пользовательских сценариев запуска, запускаемых при входе в Ubuntu
#Всплывающее окно для запроса пароля
PASSWD=
zenity --entry --text "Введите пароль root" --hide-text
#Выполнить действие как суперпользователь
sudo -S su root -c "chown root ./my_file" <<< "$PASSWD"
#
#Следующие действия только для этого конкретного примера
# Показать владельца файла, чтобы проверить, что файл принадлежит root
printf $'\n'; ls -al ./my_file; printf $'\n'
#Восстановить текущее право собственности пользователя, если это необходимо
sudo -S su root -c "chown `whoami` ./my_file" <<< "$PASSWD"
#Показать владельца файла еще раз, чтобы проверить, принадлежит ли он обратно текущему пользователю
printf $'\n'; ls -al ./my_file; printf $'\n'
# Очистить кеш для повторного запроса пароля, если этот терминальный сеанс не закрыт
sudo -k