Я пытаюсь написать скрипт bash (в Ubuntu), который будет создавать резервную копию каталога с помощью tar.
Как я могу выполнить проверку в сценарии, чтобы он мог запускаться только от имени пользователя root (или с помощью sudo)?
Например, если пользователь запускает сценарий, он должен сказать, что этот сценарий должен быть запущен с привилегиями sudo, а затем завершен. Если скрипт выполняется от имени пользователя root, он будет продолжен после проверки.
Я знаю, что должно быть простое решение, я просто не смог найти его, прибегая к помощи.
источник
Я предполагаю, что вы знаете, что путем изменения владельца на root
chown root:root file
и установка разрешений до 700
chmod 700 file
Вы достигнете того же самого - без предложения бежать как sudo.
Но я выложу этот ответ для полноты.
источник
sudo git add <file>
Какова ваша цель здесь, чтобы информировать пользователей о том, что они должны запускать сценарий от имени пользователя root или в качестве меры предосторожности?
Если вы просто хотите сообщить пользователю, что любые предложения uid хороши, но они так же полезны, как шины на лошади, как мера предосторожности - ничто не мешает пользователю скопировать сценарий, вынеся оператор if, и запустить его в любом случае.
Если это проблема безопасности, сценарий должен быть установлен на 700, принадлежащий root: root, чтобы он не мог быть прочитан или выполнен другим пользователем.
источник
Вы также можете использовать команду whoami.
источник
Переменная bash
$EUID
показывает эффективный UID, с которым работает скрипт, если вы хотите убедиться, что скрипт выполняется от имени пользователя root, проверьте,$EUID
содержит ли значение 0 значение или нет:Это лучше, чем решение
/usr/bin/id
для (для скриптов bash!), Потому что для него не требуется внешняя команда.источник
echo
строку наsudo "$0" "$@"
и заменивexit 2
наexit $?
.Один простой способ сделать скрипт доступным только для пользователя root - запустить скрипт со строкой:
#!/bin/su root
источник
«#! / bin / su root» позволяет пользователям в режиме суперпользователя запускать скрипт без использования пароля root. Если вы хотите, чтобы суперпользователи запускали скрипт с результатами, полученными от root, это будет сделано.
источник