Введение
Иногда сценарии оболочки необходимо запускать от имени пользователя root для выполнения некоторых задач с правами администратора. Как правило, эти задачи можно решить с помощью команд Sudo. Если в некоторых случаях вам все же нужно заставить пользователя запускать скрипт от имени root, вы можете добавить в скрипт код, чтобы проверить, выполняется ли скрипт под пользователем root или нет.
Проверьте, запущен ли сценарий оболочки от имени пользователя root
Добавьте следующий код в начало сценария оболочки, чтобы проверить, выполняется ли сценарий от имени пользователя root. Если скрипт запускается от имени учетной записи без полномочий root, он завершится с кодом состояния 1:
#!/usr/bin/env bash
if [ "$EUID" -ne 0 ];then
echo "Please run this script as root user"
exit 1
fi
Здесь EUID — это системная переменная, в которой хранится идентификатор пользователя (UID) текущего пользователя, вошедшего в систему. UID пользователя root всегда равен 0
в системах Linux.
Вместо использования UID вы также можете сопоставить имя пользователя, под которым вы вошли в систему. Команда whoami
предоставляет текущее зарегистрированное имя пользователя. Следующий скрипт проверит, запущен ли скрипт от имени root или нет:
date +%F #Output: 2022-07-25
date +%Y-%m-%d #Output: 2022-07-25
Проверьте, запущен ли сценарий оболочки от имени пользователя без полномочий root.
Иногда сценарии необходимо запускать от имени учетной записи без полномочий root. Если это так, вы можете добавить следующий фрагмент для проверки учетной записи пользователя и продолжить, только если скрипт работает от имени обычного пользователя:
date +%F #Output: 2022-07-25
date +%Y-%m-%d #Output: 2022-07-25
Вывод
В этом кратком руководстве вы узнали, как добавить ограничения в сценарий оболочки для запуска от имени пользователя root или обычного пользователя. Если запущен другой пользователь, сценарий немедленно завершится.