Как определить, есть ли у сценария bash привилегии root [дубликат]

На этот вопрос уже есть ответ здесь:

У меня есть сценарий 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?

2
задан 30 January 2019 в 21:23

2 ответа

Сценарий /tmp/a.sh только работы с #!/bin/bash на первой строке. На самом деле выполняя пример я дал, ! был случайно опущен и единственный пользователь сообщил, был некорневой пользователь как показано в вопросе.

1
ответ дан 2 December 2019 в 04:39

Я использую следующее в некоторых моих сценариях:

#!/bin/bash

if [ "$(id -un)" != "root" ]; then
    echo "Need root - sudoing..."
    exec sudo "$0" "$@"
fi
# Now we are root

0
ответ дан 2 December 2019 в 04:39

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

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