На этот вопрос уже есть ответ здесь:
У меня есть сценарий bash, который работает только с привилегиями root, поэтому я хочу проверить, есть ли они у пользователя. Другие сообщения (см. Ниже) спрашивают и отвечают, как узнать, действительно ли пользователь работает как root
, но не имеет ли сценарий привилегии root. В этих сообщениях говорится, что нужно проверить, равен ли $ EUID
0.
Чтобы попробовать эту идею в контексте sudo
, я написал сценарий bash /tmp/a.sh
:
#!/bin/bash
echo $EUID
Следующие две команды были запущены от имени пользователя без полномочий root с правами sudo
в Ubuntu 16.04. Если бы предложение $ EUID
работало в контексте sudo
, вторая команда напечатала бы 0 вместо пустой строки.
$ /tmp/a.sh
1000
$ sudo /tmp/a.sh
$
К вашему сведению, пример связанных сообщений, на которые я ссылаюсь:
Как сценарий может проверить, запущен ли он от имени пользователя root?
Сценарий /tmp/a.sh
только работы с #!/bin/bash
на первой строке. На самом деле выполняя пример я дал, !
был случайно опущен и единственный пользователь сообщил, был некорневой пользователь как показано в вопросе.
Я использую следующее в некоторых моих сценариях:
#!/bin/bash
if [ "$(id -un)" != "root" ]; then
echo "Need root - sudoing..."
exec sudo "$0" "$@"
fi
# Now we are root