У меня есть два файла, один являющийся файлом на рабочем столе, при этом другой сценарий оболочки. Файл на рабочем столе предназначен, чтобы открыть сценарий оболочки и выполнить его в xTerm GUI как корень, не будучи нужен "sudo в пароле".
Мне сказали удалить sudo
полностью из сценария оболочки, оставляя это. Начиная с программы необходимый корневой доступ я отредактировал свой/etc/sudoers к следующему:
david ALL=(ALL) NOPASSWD:/home/david/upgrade.sh
david ALL=(ALL) NOPASSWD:/home/david/Desktop/Upgrade.desktop
Поскольку я был проинструктирован к, и оттуда, настроил файл на рабочем столе. Я запустил со следующего:
xterm -e sudo sh -p /home/david/upgrade.sh
Но когда я выполнил файл на рабочем столе, он все еще попросил мой пароль. Я думал что sudo
в файле на рабочем столе могла быть проблема, но после удаления его, больше не открывается xTerm окно. Как я могу выполнить этот сценарий оболочки от файла на рабочем столе, не вводя мой пароль?
Во-первых, удалите свою строку о файле на рабочем столе от /etc/sudoers
, это не нужно.
Во-вторых, Вы настроили точную команду /home/david/upgrade.sh
работать с NOPASSWD
, нет sh -p /home/david/upgrade.sh
который Вы пытаетесь выполнить в xterm
окно. Необходимо выполнить настроенную команду для получения прибыли от NOPASSWD
установка:
xterm -e sudo /home/david/upgrade.sh
Между прочим, хижина Вашего файла сценария указывает /bin/bash
как интерпретатор, но Вы попытались выполнить его с /bin/sh
. Результат совпадает с долго, поскольку Вы не используете Bash определенные функции, но необходимо избежать таких противоречий. Это не имеет никакого отношения sudo
и NOPASSWD
все же.
Как дополнительный леденец, могло бы быть хорошо, если можно назвать Ваш сценарий непосредственно без sudo
и это поднимает свои полномочия автоматически, не уже работая как корень. Я записал немного отрывка Bash для этого однажды, он может просто быть добавлен к верхней части любого сценария Bash, который должен работать как корень:
#!/bin/bash
if test "$(id -u)" -ne 0 ; then
sudo "$0" "$1"
exit $?
fi
Это тестирует, если эффективный идентификатор пользователя 0 (корень), и в противном случае он выполняет свой собственный файл сценария с sudo
и также передает его код выхода через при завершении. Это работает хорошо вместе с a NOPASSWD
установка для файла сценария.