Utrzymywanie sudo pomiędzy poleceniami i powłokami bez edytowania / etc / sudoers

0

Nie wierzę, że moje pytanie jest klasycznym pytaniem env_keep, które czasami pojawia się ponownie. zachowanie zmiennych środowiskowych między powłokami.

Chcę zachować wyeksportowaną funkcję i wyeksportowaną zmienną środowiskową w nie tylko sudo -s, ale także wtedy, gdy dana osoba działa sudo command. Nie mogę edytować pliku / etc / sudoers, który wygląda tak:

Defaults    env_reset
Defaults    mail_badpass
Defaults    secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL:ALL) ALL

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d

Jestem jednak w stanie edytować /etc/sudoers.d. Próbowałem Defaults! Env_reset, ale to nie pomaga. Próbowałem także env_keep, ale to też nie działa. W końcu próbowałem Defaults env_keep + = "mojafunkcja".

Kiedy mówię, to nie działa, to znaczy, że jeśli biegnę sudo -s, a potem envwidzę, jest ochrona, jednak zmienne i funkcje nie są zachowane, jeśli biegnę sudo somecommand. Celem jest zapewnienie, aby zmienna środowiskowa była zawsze przekazywana do pliku binarnego, niezależnie od tego, czy jest wywoływana jako zwykły użytkownik, czy jako root.

Krótko mówiąc, to działa:

test_var="hello world"
sudo -s
echo $test_var

Ale to nie działa i chciałbym

test_var="hello world"
sudo /bin/bash -c echo $test_var

Jeśli ktoś może doradzić, byłoby to bardzo wskazane. Nie jestem pewien, czy jest to możliwe, biorąc pod uwagę ograniczenia związane z niemożnością edycji / etc / sudoers, pomimo możliwości edycji /etc/sudoers.d.

Z góry dziękuję

użytkownik3526827
źródło
sudo -V jako root (przy pierwszym uruchomieniu sudo -s) pokazuje moją zmienną w polu Zmienne środowiskowe do zachowania, więc zaczynam myśleć, że osiągnąłem ograniczenie sudo.
user3526827,
Czy sudo -Erozwiązuje twój problem? Jeśli chcesz, nie musisz przepuszczać opcji za każdym razem, gdy możesz utworzyć alias sudo -E.
ojs
To nie rozwiązuje problemu. Niestety staramy się zachować zmienne, gdy użytkownicy uruchamiają sudo, i nie mamy szansy wyszkolić ich inaczej. Myślę, że może to być błąd lub ograniczenie sudo.
user3526827,
Hmm, dla mnie, jeśli zrobię twój drugi przykład, który działa dobrze, po prostu wydając, sudo -E echo $test_varwtedy otrzymam odpowiedź Hello world.
ojs
Zgadza się, ale nasi użytkownicy uruchamiają polecenie sudo, a jeśli moglibyśmy powiedzieć im, aby uruchomili sudo -E, nie musielibyśmy zachowywać zmiennych środowiskowych, ponieważ moglibyśmy po prostu powiedzieć im, co mają robić bezpośrednio.
user3526827