Мне в основном нужно сделать это:
DUMMY=dummy
sudo su - ec2-user -c 'echo $DUMMY'
Это не работает Как я могу передать переменную env $ DUMMY в su? -p не работает с -l.
linux
sudo
environment-variables
su
Umang
источник
источник
sudo -iu ec2-user echo $DUMMY
?Ответы:
Вы можете сделать это без вызова логина:
или:
-p
Вариантsu
команды сохранить переменные окружения.источник
-p
это вариантsu
, неsudo
в этом случае-m
сохраняет переменную, другие говорят,-c
в чем разница? И один из комментариев в этом ответе дней-E
stackoverflow.com/questions/10488758/…Совет для профессионалов: никогда не бывает веской причины для бега
sudo su
. Чтобы запустить команду от имени другого пользователя, используйтеsudo -u username command
. Если вам нужна корневая оболочка, запуститеsudo -i
илиsudo -l
. Если вы активировали учетную запись root, вы также можете запускать ееsu
самостоятельно, ноsudo su
это бесполезно. И да, я знаю, ты видишь это везде.Тем не менее,
sudo
имеет-E
переключатель, который будет сохранять среду сеанса пользователя:Итак, сначала вам нужно будет экспортировать вашу переменную, а затем запустить
sudo -E
:Это
bash -c
не нужно. Однако, если я запускаюsudo -Eu bob echo "$DUMMY"
, переменная раскрывается до запуска корневой оболочки, поэтому она не демонстрирует, что команда действительно работает:источник
env_keep
вsudoers
. Может быть , это нравится:Defaults env_keep += "DUMMY"
.sudo
. Это также более обременительно для одной переменной. Это полезно только для того, что всегда нужно экспортировать.LD_PRELOAD
и переносомLESSCHARDEF
. Я не думаю, что удобство должно быть выигрышным аргументом здесь ...-E делает всю работу за меня. От мужчины
sudo
-источник
Далее следует решение, которое не нужно для изменения политики безопасности.
Я буду игнорировать
su
часть, так как мы можем использовать--user
опциюsudo
.Мы хотим передать переменные окружения в
command
прогон черезsudo
. Однакоsudo
это не позволит передавать переменные среды в команду (для этого есть веская причина, некоторые переменные могут быть опасными). Оболочка может использоваться для установки переменных среды иsudo
может запускать оболочку с помощью переданного ей сценария. Поэтому попроситеsudo
запустить скрипт, который устанавливает переменные среды.источник