У меня есть скрипт bash, который устанавливает какое-то программное обеспечение. Я хочу сбой как можно скорее, если он не запускается root. Как я могу это сделать?bash: fail, если скрипт не запускается root
ответ
#!/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
или, чтобы сохранить его короче, проверьте UID env: , если [[$ UID -ne 0]]; затем – zlack
@zlack $ UID предоставит исходный UID пользователя, если скрипт запускается через 'sudo', в то время как David's рассмотрит сценарий как выполняемый как root. В зависимости от того, что вы делаете, Дэвид, вероятно, лучше. – pr1001
Как говорит pr1001, UID не будет работать, если пользователь запускает скрипт с использованием sudo, но EUID будет работать нормально. – Tom
После покопаться на этом, консенсус, кажется, что нет необходимости использовать id -u
в Баш, как переменная (эффективный идентификатор пользователя) 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/questions/30148/how-can-i-determine-whether-a-shellscript-runs-as-root-or-not
это не работает в оболочке Bourne. есть ли у вас какие-либо строго совместимые с POSIX решения? –
- 1. Bash ловушка не работает, если скрипт запускается из другого sript
- 2. Cron не запускается из/root
- 3. Если не работает скрипт bash
- 4. Crontab, скрипт python не запускается
- 5. Xterm не запускается скрипт
- 6. Почему строка с жесткой кодировкой var изменяется, когда скрипт bash запускается с правами root?
- 7. Bash скрипт - Если условно с []
- 8. Команда Bash echo не запускается
- 9. Bash, splitting string fail
- 10. Bash-скрипт в raspbian работает вручную, не запускается в cron
- 11. CGI-скрипт не запускается
- 12. Простой скрипт не запускается
- 13. скрипт запускается дважды в raspbian
- 14. Завершить скрипт bash, если процесс уже запущен
- 15. Вызов сценария из корня setuid C программа - скрипт не запускается как root
- 16. Права доступа к файлам, скрипт root bash, редактировать пользователя
- 17. Ruby on Rails - как запустить скрипт bash как root?
- 18. Выполнить скрипт bash, которому требуется разрешение root из java (netbeans)
- 19. запустить скрипт bash как root с php-страницы
- 20. Python subprocess.call запускает скрипт bash, если он запускается с терминала, но не из меню debian
- 21. UPSTART скрипт не root не работает
- 22. lookup fail "Root exception is javax.naming.NameNotFoundException"
- 23. Bash скрипт не добавляя
- 24. монит не запускается скрипт Node
- 25. сценарий оболочки: мой скрипт crontab не запускается
- 26. Как написать скрипт bash, который автоматически запускается каждые 10 минут?
- 27. Перенаправление вывода в скрипт bash не работает
- 28. launchd: команда bash не запускается
- 29. BASH SSH Redirect on Fail
- 30. CRON не запускается мой питон скрипт при перезагрузке
Хотя я бы * вообще * рассмотреть это глупое поведение: * Пусть работать до тех пор, пока права не в состоянии *; система может быть настроена так, что операция может быть успешно выполнена как текущий пользователь и принудительно загнать эту опцию. [Мне пришлось исправить скрипты, которые ранее делали подобные предположения]. С другой стороны, я делаю гораздо больше, чтобы * предотвратить * доступ или отображение большого жира предупреждения, если они выполняются как root. – 2009-10-29 06:55:59
Вам следует попробовать использовать sudo. Под Linux, когда вы устанавливаете что-либо, вам нужно быть root, чтобы обычные пользователи не устанавливали ничего, что могло бы повредить систему. – masterLoki
Он хочет, чтобы его сценарий учитывал, что некоторые люди могут забыть или не знать о sudo (или других средствах повышения привилегий). Его хорошая практика - проверить работоспособность во время работы, прежде чем пытаться сделать что-нибудь еще. –