Запустите Скрипт + Файл на рабочем столе как Корень w/out Подсказка

У меня есть два файла, один являющийся файлом на рабочем столе, при этом другой сценарий оболочки. Файл на рабочем столе предназначен, чтобы открыть сценарий оболочки и выполнить его в 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 окно. Как я могу выполнить этот сценарий оболочки от файла на рабочем столе, не вводя мой пароль?

0
задан 4 October 2016 в 00:30

1 ответ

Во-первых, удалите свою строку о файле на рабочем столе от /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 установка для файла сценария.

1
ответ дан 28 September 2019 в 11:38

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

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