Я пытаюсь вернуть значение глобальной переменной среды внутри скрипта bash, который выполняется изнутри PHP (запускается как sudo).
Выполнение команды printenv
Из скрипта bash видно, что глобальная переменная не установлена. Я понимаю, что sudo сбрасывает окружающую среду.
Пожалуйста, рассмотрите следующую настройку;
Определить глобальную среду var
root@test:/# export HEY=hello
Проверить наличие вар
root@test:/# printenv | grep HEY
HEY=hello
Пожалуйста, рассмотрите эту функцию PHP
Функция PHP
function testAction() {
define('TEST_CMD', '/usr/bin/sudo /usr/local/test/bin/');
$command = 'bash_script';
$query = TEST_CMD.$command;
exec ($query, $output, $return_var);
var_dump( $output );
var_dump( $return_var );
echo exec('whoami');
}
Содержание /etc/sudoers.d/admin
admin ALL=(ALL) ALL
admin ALL=NOPASSWD:/usr/local/test/bin/*
Содержание /usr/local/test/bin/bash_script
#!/bin/bash
printenv
echo $HEY
exit
Я пытался положить Defaults env_keep +="HEY"
внутри /etc/sudoers.d/admin
тоже, но это тоже не работает.
ОС убунту 14.04
Есть идеи?
Задача ещё не решена.
Других решений пока нет …