Сценарий оболочки: используйте sudo Внутри его VS запустить его с sudo?

попробуйте

 NAT interfaces: VM1: 10.0.2.15/24 - VM2: 10.0.2.16/24 
 Internal Network interfaces: VM1: 10.0.3.1/24 VM2 10.0.3.2/24

У вас возникнут проблемы с использованием одной и той же сети на разных интерфейсах.

12
01.11.2018, 14:58
2 ответа

Чтобы решить вашу первую проблему:

how can I write "script would detect if it was running with the right permissions and not call sudo at all"?

Существует простая проверка POSIX для root:

#!/bin/sh
is_user_root ()
{
    [ "$(id -u)" -eq 0 ]
}

Кроме того, в Bash кодеры, ориентированные на -производительность, могут захотеть использовать:

#!/bin/bash
is_user_root ()
{
    [ "${EUID:-$(id -u)}" -eq 0 ]
}

Обратите внимание, что я намеренно завернул код в функции для повторного -использования.

Чтобы решить вашу вторую проблему:

how can I improve its security to avoid the problem of giving superuser privileges to commands which don't need them when running the script with sudo?

С этим ничего не поделаешь. По крайней мере мне ничего не приходит в голову. Если бы я увидел сценарий, у меня могли бы быть предложения. Но поскольку вы не включили это в свой вопрос... Если вы запустите весь скрипт с sudoили как root, я не вижу возможности это контролировать.

Чтобы ответить на комментарий:

What do you think of "use sudo inside it vs run it with sudo"

В своих сценариях я обычно придерживаюсь второго подхода, но это не обязательно означает, что я рекомендую его вам. Потому что это зависит от того, для кого предназначен скрипт -только для root; для пользователя в основном, за исключением некоторых пользователей с правами sudo; вам придется буквально включить свой сценарий в вопрос, чтобы я мог ответить с любой ценностью.

16
27.01.2020, 19:56

Думаю, я могу ответить на этот вопрос.

So should I use the second way?

Нет причин, по которым у вас должны быть проблемы, вот почему:

Если есть только одна команда, которую нужно запустить от имени root, тогда runваша программа как rootили sudo, потому что sudoвнутри вашего скрипта — более длинный путь. Вы забыли, что программисты ленивы?

Если вам нужно много команд runкак root, запустите их как rootили sudo.

how can I improve its security to avoid the problem of giving superuser privileges to commands which don't need them when running the script with sudo?

Если другим пользователям нужно runвашу программу, настройте sudoдля них, потому что sudoимеет широкие возможности настройки и удовлетворит ваши потребности.

Вот пример сsudo:

Всегда используйте visudoпри редактировании файла sudoers.....

kate ALL=(ALL) NOPASSWD: /usr/local/bin/script ARG1 ARG2

sudoтакже отлично подходит для смены пользователей внутри вашей программы/скрипта вот строчка из одного из моих скриптов:

sudo -i -u "$user" user="$user" CURRENTDIR="$CURRENTDIR" BASHRC="$BASHRC" bash <<'EOF'

how can I write "script would detect if it was running with the right permissions and not call sudo at all"?

https://www.cyberciti.biz/tips/shell-root-user-check-script.html
как -сделать -я -определить -если --оболочка -скрипт --работает -с -root -разрешения

bash/sh:

#!/bin/bash
# (Use #!/bin/sh for sh)
if [ `id -u` = 0 ] 
then
        echo "I AM ROOT, HEAR ME ROAR"
fi

csh:

#!/bin/csh
if ( `id -u` == "0" ) 
then
        echo "I AM ROOT, HEAR ME ROAR"
endif

#!/bin/bash
if [[ $EUID -ne 0 ]]; then
  echo "You must be a root user" 2>&1
  exit 1
else
  mount /dev/sdb1 /mnt/disk2
fi

РЕДАКТИРОВАТЬ по просьбе джентльмена @terdon:

Подумайте о своем сценарии так...

Это общедоступный скрипт (его будут использовать другие люди, кроме вас )Что делает скрипт? Это говорит вам время? Или он обновляет iptables на 200 системах? Если вы используете его только вы, это связано с работой/профессионалом или для личного использования?

Просто нужно заранее знать, из чего состоит ваша пользовательская -группа, вот и все.

Если это writtenдля передачи или продажи администраторам, даже в этом случае, почему scriptнельзя разрешить работать как root?? Какой вред это может причинить?

Настоящие скрипты/программы часто запускаются от имени привилегированного пользователя, и никто не упоминает, что это не проблема, но когда программисты, в основном новички вроде меня, говорят об этих вещах, тогда это реальная угроза безопасности… ваш пост, на который вы ссылаетесь, пытается сказать, хотя и не элегантно, что некоторые люди смотрят на элемент управления , который у вас есть для system, и ваш код.... вы устанавливаете для файлов больше разрешений, чем вы собираетесь использовать, у вас есть все проверки в вашей логике или талантливый программист увидит опасность в вашем коде, просто взглянув на него?

Если у вас code needs root, используйте sudo, а если их много, просто запустите его как root....... мой ответ заканчивается здесь уф

-4
27.01.2020, 19:56

Теги

Похожие вопросы