Czy mogę uzyskać dostęp do źródłowej zmiennej $ USER z poziomu skryptu uruchamianego za pomocą `sudo`?


19

Dziwne pytanie, wiem. Oto skrypt:

echo $USER

Oto polecenie, którego używam do uruchomienia:

sudo ./myscript.sh

W tej chwili wypisuje „root”, ale chcę, żeby wydrukował jonmoją nazwę użytkownika. Czy można to zrobić, zmieniając skrypt, a nie polecenie?


Tak, są na to sposoby. Ale może najłatwiejszym sposobem jest obejście. Wywołaj ten skrypt z innego skryptu, w którym „zapisz” swój identyfikator użytkownika, aby „skrypt sudo” mógł uzyskać do niego dostęp.
sudodus

Odpowiedzi:


28

SUDO_USERZamiast tego użyj zmiennej środowiskowej USER.

sudoumieszcza nazwę użytkownika, który uruchomił ją w SUDO_USERzmiennej środowiskowej:

ek@Io:~$ sudo sh -c 'echo $USER'
[sudo] password for ek:
root
ek@Io:~$ sudo sh -c 'echo $SUDO_USER'
ek

Tak więc można po prostu wymienić $USERsię $SUDO_USERw skrypcie:

echo $SUDO_USER

Dalsza lektura

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.