У меня есть bash script, который устанавливает какое-то программное обеспечение. Я хочу сбой как можно скорее, если он не запускается root. Как я могу это сделать?
Bash: сбой, если script не запускается root
Ответ 1
#!/bin/bash
if [ "$(id -u)" != "0" ]; then
echo "This script must be run as root" 1>&2
exit 1
fi
Источник: http://www.cyberciti.biz/tips/shell-root-user-check-script.html
Ответ 2
После этого, похоже, консенсус состоит в том, что нет необходимости использовать id -u
в bash, поскольку будет установлена переменная EUID
(эффективный идентификатор пользователя). В отличие от UID
, EUID
будет 0
, когда пользователь root
или использует sudo
. По-видимому, это примерно в 100 раз быстрее, чем запуск id -u
:
#!/bin/bash
if (( EUID != 0 )); then
echo "You must be root to do this." 1>&2
exit 1
fi
Источник: https://askubuntu.com/info/30148/how-can-i-determine-whether-a-shellscript-runs-as-root-or-not