Jak przełączyć się na użytkownika root, ale pozostać w tym samym katalogu


10

Niedawno przełączyłem się na Ubuntu i zauważyłem jedną rzecz, kiedy używam następującego polecenia, aby przełączyć się na użytkownika root

sudo su - root

Zabiera mnie bezpośrednio do home's root ( /root), więc tracę miejsce w systemie plików (katalogu, w którym wykonałem to polecenie). Czy jest jakiś sposób na przejście na root bez utraty bieżącego katalogu?

Odpowiedzi:


16

Przede wszystkim nie używaj sudo su. To nie jest złe, niebezpieczne ani nic, jest po prostu nieeleganckie i bezcelowe . Uruchamiasz dwa osobne programy, aby wykonać zadanie, które może być z łatwością wykonane przez jeden. Jeśli chcesz uruchomić powłokę jako root, sudomożesz to zrobić za Ciebie.

Jeśli chcesz uruchomić powłokę logowania (właśnie to sudo su -), użyj sudo -i. To jednak, ponieważ uruchamia powłokę logowania, domyślnie zabierze Cię do katalogu głównego root.

Aby uruchomić zwykłą powłokę bez logowania, możesz użyć sudo -s. To uruchomi dla Ciebie powłokę root i utrzyma Cię w katalogu, z którego ją uruchomiłeś:

terdon@tpad ~ $ pwd
/home/terdon
terdon@tpad ~ $ sudo -i  ## changes directory
[root@tpad ~]# pwd
/root
[root@tpad ~]# logout
terdon@tpad ~ $ sudo -s  ## doesn't change directory
[root@tpad terdon]# pwd
/home/terdon

Tak więc sposobem na uruchomienie powłoki roota i pozostanie w tym samym katalogu jest sudo -s.


1
Problemem może być to, że sudo -snie uruchamia profilu użytkownika docelowego, ponieważ nie jest to powłoka logowania. Być może więc prawdziwe pytanie brzmi, czy istnieje sposób na uzyskanie powłoki logowania sudo, ale bez zmiany katalogu. Prawdopodobnie nie.
Barmar

@Barmar nie, ale sudo -irobi. Użyłem, -sponieważ OP nie chciał powłoki logowania (nie chciałem się przenosić $HOME). Jeśli chcesz powłoki logowania, użyj sudo -i. Mam napisali porównanie środowisk sudo -i, su -, sudo -sa suna moje pytanie tutaj , jeśli chcesz mieć wygląd.
terdon

Właśnie teraz miałem bardzo złe doświadczenia z tym poleceniem, sudo -s. Nawet to nie zmienia katalogu, ale nie dało mi pełnego dostępu do roota. Niektóre z moich plików były obecne w katalogu, ale nie mogłem ich zobaczyć jako zwykłego użytkownika i użytkownika root w ten sposób (sudo -s). Potem użyłem starego sposobu (sudo su - root) i poszedłem do katalogu, a moje pliki były teraz dla mnie widoczne. Dlaczego sudo-s dały mi ograniczony dostęp?
Hammad Hassan

@HammadHassan nie ma mowy, żeby to, co opisałeś, mogło się wydarzyć. Musi się dziać coś innego. Co masz na myśli mówiąc „nie widzę” plików? Czy masz na myśli „niemożność odczytania plików”? Czy może używasz szyfrowania?
terdon

„nie można zobaczyć” oznacza proste polecenie „ls”. Nie pokazało mi moich plików. Brak szyfrowania. Moje pliki są proste. I tak się naprawdę stało.
Hammad Hassan

8

To jest bardzo proste. Po prostu wpisz

sudo su

zamiast

sudo su - root

Dzięki temu będziesz w tym samym folderze co root.


9
To nie jest złe, to znaczy, że działa, ale używanie sudo sunie ma większego sensu. Po to sudo -sjest. Nigdy nie zrozumiałem, dlaczego tak wiele poradników dotyczących Ubuntu sugeruje sudo su.
terdon

@terdon Nigdy też tego nie rozumiałem, ale wydaje się, że jest rozpowszechniony wśród wszystkich użytkowników Linuksa. Może aliteracja czyni go bardziej niezapomnianym.
Barmar

@Barmar osobiście, widziałem to tylko w świecie Ubuntu. Ponieważ większość systemów Linux ma domyślnie normalne konto root, kiedy potrzebujesz powłoki, którą zrobiłbyś su(sam, nie sudo). Ponieważ jednak Ubuntu domyślnie wyłącza konto root, sudo supojawiło się całkiem naturalnie. jest również, najwyraźniej , w przypadku niektórych zakątkach świata UNIX, jak również, ale w Linuksie, widziałem go tylko w Ubuntu.
terdon

@terdon Widziałem to od dziesięcioleci, nie jestem nawet pewien, jakich dystrybucji używaliśmy. Używamy Debiana w mojej obecnej firmie i używają go moi współpracownicy.
Barmar
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.