You need to be root to run this script linux что делать
Как проверить, работает ли с правами root в bash script
Я пишу script, который требует прав на уровне корневого уровня, и я хочу сделать так, чтобы, если script не запущен как root, он просто перекликается с “Пожалуйста, запустите от имени пользователя root”. и выходы.
Здесь некоторый псевдокод для того, что я ищу:
Как я могу (чище и безопасно) справиться с этим? Спасибо!
А, просто для того, чтобы уточнить: часть (сделайте что-то) будет включать в себя запуск команд, которые сами по себе требуют root. Так что запуск его, как обычный пользователь, просто придумал бы ошибку. Это просто предназначено для чистого запуска script, для которого требуются корневые команды, без использования sudo внутри script, я просто ищу какой-то синтаксический сахар.
Было дано несколько ответов, но, по-видимому, лучшим способом является использование:
В bash script у вас есть несколько способов проверить, является ли текущий пользователь root.
Способ, которым я подхожу к этой проблеме, заключается в том, чтобы вставлять sudo в мои команды, когда он не запускается с правами root. Вот пример:
Таким образом моя команда запускается root при использовании суперпользователя или sudo при запуске обычного пользователя.
Если ваш script всегда должен быть запущен root, просто установите права соответственно ( 0500 ).
В зависимости от того, что делает script, другой может быть настройка записи sudo для любых специализированных команд, которые могут понадобиться script.
Существует простая проверка для пользователя, являющегося пользователем root.
Синтаксис [[ stuff ]] – это стандартный способ запуска проверки в bash.
Это также предполагает, что вы хотите выйти с 1, если вы терпите неудачу. Функция error – это некоторое чутье, которое устанавливает выходной текст в красный (не нужен, но довольно классный, если вы меня спрашиваете).
0- Прочитайте официальную документацию GNU Linux, есть много способов сделать это правильно.
1- убедитесь, что вы помещаете подпись оболочки, чтобы избежать ошибок в интерпретации:
Очень простой способ просто поставить:
Преимущество использования этого вместо id заключается в том, что вы можете проверить, не работает ли какой-либо пользователь, не являющийся пользователем root; например.
Я полагаю, что здесь мало что можно объяснить, потому что ответы с большим количеством голосов объясняют многое из этого.
Тем не менее, если есть что-то, чтобы объяснить дальше, не стесняйтесь комментировать, я сделаю все возможное, чтобы заполнить пробелы.
Оптимизированное bash решение для производительности и надежности
Объяснение
Почему я публикую это решение после стольких лет, когда ОП спросил
Что ж, если я правильно вижу, кажется, что выше отсутствует фрагмент кода.
Видите ли, есть много переменных, которые необходимо учитывать, и одна из них сочетает в себе производительность и надежность.
Портативное решение POSIX solution
Заключение
попробуйте следующий код:
Один простой способ сделать скрипт доступным только для пользователя root – запустить скрипт со строкой:
Насколько я знаю, правильный способ проверить это:
Смотрите раздел “Тестирование на корень” здесь:
Проверьте, являетесь ли вы пользователем root, и выйдите из системы, если вы не:
Или в этом примере попытайтесь создать каталог в корневом расположении, а затем попытайтесь после повышения прав.
Проверьте, являетесь ли вы пользователем root и, если возможно, не повышать его:
Примечание редактора: если вам не нужны двойные скобки, используйте одинарные для переносимости кода.
unixforum.org
Форум для пользователей UNIX-подобных систем
запуск скрипта от имени root
Модератор: Bizdelnick
запуск скрипта от имени root
Сообщение safronowmax » 13.12.2012 20:08
Re: запуск скрипта от имени root
Сообщение allez » 13.12.2012 20:35
Re: запуск скрипта от имени root
Сообщение safronowmax » 13.12.2012 22:05
allez, вы имеете в виду например так:
#!bin/bash
sudo mkdir test
Re: запуск скрипта от имени root
Сообщение allez » 13.12.2012 22:23
Re: запуск скрипта от имени root
Сообщение safronowmax » 13.12.2012 22:33
Проблема в том, что данный скрипт будет отдавать данные в zabbix, и такой вариант не подойдет, попробовал в /etc/sudoerc прописать пользователя с правами root: vbox ALL=(ALL) ALL, но что-то все равно не работает
Re: запуск скрипта от имени root
Сообщение Bizdelnick » 13.12.2012 23:43
в консол и вку́пе (с чем-либо) в общем в ообще | в течени е (часа) нович ок нюанс п о умолчанию | приемл емо пробле ма проб овать тра фик |
Re: запуск скрипта от имени root
Сообщение Vascom » 14.12.2012 09:06
Re: запуск скрипта от имени root
Сообщение allez » 14.12.2012 12:23
Re: запуск скрипта от имени root
Сообщение eddy » 14.12.2012 13:54
Re: запуск скрипта от имени root
Сообщение trendix » 14.12.2012 20:52
Re: запуск скрипта от имени root
Сообщение drBatty » 17.12.2012 11:42
Скоро придёт
Осень
Re: запуск скрипта от имени root
Сообщение liaonau » 17.12.2012 18:27
Re: запуск скрипта от имени root
Сообщение drBatty » 18.12.2012 11:23
Скоро придёт
Осень
Re: запуск скрипта от имени root
Сообщение Kopilov » 18.12.2012 18:52
Re: запуск скрипта от имени root
Сообщение drBatty » 19.12.2012 16:31
Скоро придёт
Осень
Re: запуск скрипта от имени root
Сообщение Poor Fred » 19.12.2012 16:39
Как будет отдавать? Может быть, наоборот, zabbix-agent будет сам забирать? Тогда и пользователь должен быть другой. zabbix, как ни странно.
Re: запуск скрипта от имени root
Сообщение Kopilov » 19.12.2012 17:43
Re: запуск скрипта от имени root
Сообщение liaonau » 19.12.2012 19:22
Re: запуск скрипта от имени root
Сообщение drBatty » 20.12.2012 11:37
Thread: «This script must be run as root»
Thread Tools
Display
«This script must be run as root»
I am trying to install a program, but when I enter «./install» in the terminal, I get the message:
«This script must be run as root»
Re: «This script must be run as root»
root is the privileged adiminstrator’s account in Linux. It’s usually needed for example to install software outside your home folder.
Be careful what you do and run as root. Only run programs and scripts from trustworthy sources that way as the can harm your system.
Re: «This script must be run as root»
I am trying to install Avira Antivir Personal for Linux, if that helps. I unzipped the gz package to the /tmp folder in the main drive, where Linux is installed. I renamed it to «antivir» since the original name was long and complicated.
Re: «This script must be run as root»
Re: «This script must be run as root»
I quote from the Terminal with translations in bold, since it is the German version:
Re: «This script must be run as root»
It’s quite annoying that such a simple task like installing a downloaded program is so complicated under Linux. I’m not a computer illiterate, i have been working with Windows computers extensively since 1996 and some would call me a power-user with some reason. But Linux beats me.
Re: «This script must be run as root»
Re: «This script must be run as root»
Please post back if you have any further questions or comments.