Как выполнить скрипт как суперпользователь, сначала проверяя пользователя и получая пропуск от Askpass, если не суперпользователь

есть аналогичный вопрос. Как я могу определить, выполняется ли скрипт-сценарий от имени root или нет?

У меня такое же сомнение с другим результатом

Можно ли в скрипте BASH до того, как все будет запущено, проверить, выполняется ли скрипт как суперпользователь, и, если нет, напечатать сообщение о том, что вы должны быть суперпользователем, чтобы использовать этот скрипт, а затем

получить пропуск от пользователя, используя askpass или что-то в этом роде, и выполнить тот же сценарий, что и superuser?

6
задан 13 April 2017 в 15:23

2 ответа

Я просто называю sudo, если потребности программы корневые полномочия, но не имеет:

#!/bin/bash
if [ $(id -u) != 0 ]; then
   echo "This script requires root permissions"
   sudo "$0" "$@"
   exit
fi

"$0" содержит название сценария, "$@" дополнительные аргументы. Это может быть опущено, если Ваша программа не принимает аргументы.

Примечание: этот сценарий оболочки, как ожидают, будет выполнен в оболочке, если этот сценарий должен работать как GUI, используйте что-то как gksu или kdesudo вместо sudo.

12
ответ дан 13 April 2017 в 15:23

это не работает, хотя Lekensteyn является правильным на точке.

необходимо установить переменную, равную выводу идентификатора-u

ID=$(id -u) if [ $ID != 0 ] then sudo "$0" "$@" exit fi

если Вы используете echo производить this script requires root permissions это обнаружится каждый раз, когда пользователь кроме корня (начиная с его id=0) запускает скрипт независимо от того, должен ли он базироваться полномочия, поэтому просто сохраните его простым.

-1
ответ дан 13 April 2017 в 15:23

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

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