Jaka jest różnica między sudo su - a sudo su -

22

Kiedy pracuję na naszych maszynach RHEL, używam, sudo su -aby przejść na rootowanie. Pewnego dnia literówka oznaczała, że sudo su --zamiast tego napisałem - wydaje mi się, że wszystko było tak samo, jak z jednym łącznikiem, z wyjątkiem tego, że znajdowałem się w tym samym folderze, co przed wydaniem polecenia (z jednym łącznikiem, w którym się znalazłem /root).

Czy są inne różnice? Czy bezpiecznie jest używać tego w scenariuszach, w których wiem, że chcę pracować w tym samym katalogu?

Bogaty
źródło

Odpowiedzi:

22

Gdy podasz podwójny łącznik, doświadczenie, które będziesz mieć, będzie identyczne, jak w przypadku wykonania go sudo subez żadnego łącznika.

Przekazywanie pojedynczego łącznika jest identyczne z przekazywaniem -llub --login. Strona supodręcznika dla opisuje zachowanie jako:

Zapewnij środowisko podobne do oczekiwań użytkownika, gdyby użytkownik zalogował się bezpośrednio.

Obejmuje to ustawienie katalogu na katalog domowy i ustawienie szeregu innych zmiennych środowiskowych.

Przekazywanie podwójnego myślnika do polecenia jest zwykle używane do oznaczenia końca flag wiersza poleceń i początku argumentów nie będących flagami. Na przykład, jeśli uruchomisz touch -R, pojawi się błąd informujący, że -R nie jest opcją touch, ale jeśli uruchomisz touch -- -R, utworzy plik o nazwie -R. Dotyczy to wielu narzędzi wiersza polecenia ( ls -Rwykona rekurencję, lspodczas gdy ls -- -Rwykona polecenie o lsnazwie pliku lub katalogu -R.

Podsumowując, kiedy przechodzisz tylko -- do suniego, w zasadzie ignorujesz --i zachowujesz się tak, jakbyś nie przeszedł żadnej opcji.

Mark Drago
źródło
Będę tworzyć pytanie od niego, ale sudo su -i sudo su -lróżni. Na rachunku gdzie ssh tylko do klucza, a nie mam prawa sudo aby przejść do konkretnego innego użytkownika, sudo su -zmienia użytkownikowi bez problemów, ale sudo su -lczy sudo su --loginbędzie prosić o hasło sudo, którego nie mam (choć badając sudo -lI mógł wykonać /bin/suz NOPASSWD)
karatedog
@ karatedog, wygląda na to, że nie utworzyłeś pytania ....
Wildcard,