2

У меня есть скрипт, который требует привилегий root. Я должен выполнить его либо через sudo, либо из учетной записи с uid 0 (например, root).

Если сценарий не выполняется с достаточными правами, я хочу, чтобы этот сценарий отображал "Run as Root" и выход 1.

Как мне этого добиться?

2 ответа2

7
#!/usr/bin/env bash
if [[ $EUID -ne 0 ]]; then
   echo "This script must be run as root" 
   exit 1
fi

// Rest of the script here

Источник

EUID - это эффективный UID, под которым выполняется скрипт.

[[ne]] - тест на не равных.

0 - это идентификатор пользователя root (или, скорее, тот, который вы хотите. Корень имени является наиболее часто используемым именем, но его можно изменить, и может быть несколько учетных записей с uid 0

2

Вы также можете сделать скрипт просто исполняемым пользователем root.

chmod 700 script ( скрипт может запустить только владелец файла)

chown root:wheel script (установить владельца файла на root)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .