Pobierz użytkownika do domu podczas wykonywania sudo w skrypcie uruchamianym przez root


2

Na stronie sudo znalazłem -Hopcję, ale nie rozumiem, jak to działa. Strona zawiera:

Opcja -H (HOME) ustawia zmienną środowiskową HOME na katalog główny użytkownika docelowego (domyślnie root), jak określono w passwd (5).

W moim rozumieniu nie powinno się zdarzyć:

root $ sudo -u sztomi -H echo $HOME
/root

Zamiast tego powinien /home/sztomiwypisać, który jest katalogiem domowym użytkownika sztomi.

Jak mogę to zrobić dobrze?

Odpowiedzi:


4

Nie cytowałeś $HOME, więc bieżąca wartość jest zastępowana przed wykonaniem polecenia sudo . Otocz go pojedynczymi cytatami (').


EDYTOWAĆ:

Jak zauważyliśmy (patrz komentarze), sudo nie wywołuje podpowłoki w celu uruchomienia podanego polecenia (dlatego nie ma rozszerzenia powłoki $HOME). Zmienione polecenie będzie:

 sudo -u sztomi -H bash -c 'echo $HOME'

Wyjaśnione: sudoprzełącza identyfikator użytkownika, a następnie wywołuje bashpowłokę, która z kolei przyjmuje echo $HOMEzmienną, zastępuje zmienną HOMEjej wartością i ostatecznie wykonuje echopolecenie.

Zauważ, że wywołanie podpowłoki jest konieczne tylko w tym przykładzie, aby zmienna została HOMEpodstawiona po zmianie przez sudo ID użytkownika. Nie jest konieczne, jeśli chcesz uruchomić pojedynczy program bez podstawiania zmiennych w środowisku docelowym.


Daje to wynik $ HOME (bez rozszerzenia)
Tamás Szelei,

1
hmm - brzmi jak brak pośredniego procesu powłoki. Spróbuj:sudo -u sztomi -H bash -c 'echo $HOME'
ktf,

Tak, to działa. Czy to możliwe, że to kreska z powłoki, a nie walnięcie? W każdym razie proszę dodać to do odpowiedzi, abym mógł zaakceptować :)
Tamás Szelei,

0

Powinieneś być w stanie użyć ~ sztomi, aby uzyskać zmienną środowiskową.

Na przykład spowoduje to wyświetlenie zawartości do domowego katalogu sztomi.

sudo -u sztomi ls ~sztomi

Gdyby tylko działało z ~$username...
grawity
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.