попробуйте
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
У вас возникнут проблемы с использованием одной и той же сети на разных интерфейсах.
Чтобы решить вашу первую проблему:
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
; вам придется буквально включить свой сценарий в вопрос, чтобы я мог ответить с любой ценностью.
Думаю, я могу ответить на этот вопрос.
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.
...... мой ответ заканчивается здесь уф