есть аналогичный вопрос. Как я могу определить, выполняется ли скрипт-сценарий от имени root или нет?
У меня такое же сомнение с другим результатом
Можно ли в скрипте BASH до того, как все будет запущено, проверить, выполняется ли скрипт как суперпользователь, и, если нет, напечатать сообщение о том, что вы должны быть суперпользователем, чтобы использовать этот скрипт, а затем
получить пропуск от пользователя, используя askpass или что-то в этом роде, и выполнить тот же сценарий, что и superuser?
Я просто называю sudo, если потребности программы корневые полномочия, но не имеет:
#!/bin/bash
if [ $(id -u) != 0 ]; then
echo "This script requires root permissions"
sudo "$0" "$@"
exit
fi
"$0"
содержит название сценария, "$@"
дополнительные аргументы. Это может быть опущено, если Ваша программа не принимает аргументы.
Примечание: этот сценарий оболочки, как ожидают, будет выполнен в оболочке, если этот сценарий должен работать как GUI, используйте что-то как gksu
или kdesudo
вместо sudo
.
это не работает, хотя Lekensteyn является правильным на точке.
необходимо установить переменную, равную выводу идентификатора-u
ID=$(id -u) if [ $ID != 0 ] then sudo "$0" "$@" exit fi
если Вы используете echo
производить this script requires root permissions
это обнаружится каждый раз, когда пользователь кроме корня (начиная с его id=0) запускает скрипт независимо от того, должен ли он базироваться полномочия, поэтому просто сохраните его простым.