Articles

Linux – Tymczasowe przejście na innego użytkownika Linuksa (za pomocą su)

Posted on

Jak zmienić użytkownika lub tymczasowo zostać rootem

Ogłoszenie

Wszystkie moje najnowsze wpisy znajdziesz na medium.

## Polecenia uwzględnione w tym artykule
id # Wyświetla nazwę użytkownika aktualnie zalogowanego. Wyświetla również, do jakich grup należy użytkownik.
su # Pozwala (s)witać się z innym (u)serem, będąc zalogowanym jako ktoś inny.
sudo # xxxxxxxxxxxxxxx

## Zostań użytkownikiem root używając „su”
W linuxie zawsze zaleca się, aby unikać logowania się bezpośrednio jako użytkownik root. To dlatego, że może to spowodować problemy z bezpieczeństwem i zwiększa szanse na uszkodzenie czegoś. W rzeczywistości Centos wyświetli komunikat ostrzegawczy, gdy będziesz próbował zalogować się bezpośrednio jako root.

Dlatego najlepszą praktyką jest logowanie się jako zwykły użytkownik. Istnieje jednak wiele poleceń, które można uruchomić tylko jako użytkownik root i w tych przypadkach zalecanym sposobem jest użycie narzędzia (s)witch (u)ser, które pozwala na przełączenie się z jednego użytkownika na drugiego:

su – root # To pozwala na przełączenie się na użytkownika root. Argument „-” omówię później.
password # Polecenie su prosi o podanie hasła użytkownika, na którego się przełączamy. W tym przypadku jest to hasło użytkownika root.
id # Polecenie id po prostu wyświetla, pod jakim użytkownikiem aktualnie działa twoja sesja.

Uwaga, możesz użyć polecenia su tylko wtedy, gdy znasz hasło użytkownika, na którego się przełączasz. Jedynym wyjątkiem od tej reguły jest sytuacja, gdy jesteś zalogowany jako użytkownik root, w którym to przypadku możesz przejść na dowolnego użytkownika bez pytania o hasło.

login:
hasło:
id
su – # Jeśli pominiesz nazwę użytkownika, tak jak tutaj, to domyślnie su założy, że masz na myśli root.
password
id
su – Tom
id # Zauważ, że nie musieliśmy wpisywać hasła Toma.

## Powrót do poprzedniego użytkownika
W powyższym przykładzie zmieniliśmy użytkownika z John-=>root-=>Tom. Oznaczało to, że nasza obecna powłoka jest głęboka na 2 sesje. Więc jeśli chcesz wrócić do Johna, możesz użyć polecenia exit:

id
exit # To zabierze Cię z powrotem o jeden krok, który w tym przypadku jest użytkownikiem root.
id
exit # Teraz jesteś z powrotem do Johna, i nie możesz wyjść dalej. Jeśli spróbujesz wyjść ponownie, terminal sam się zamknie.

Zamiast powyższego, mogłeś po prostu zrobić:

su – John # w tym przypadku, będziesz miał 3 sesje głęboko, tj.John-=>root-=>Tom-=>John
# Dobrą praktyką jest, jeśli to możliwe, aby nigdy nie schodzić głębiej niż 3 poziomy. W przeciwnym razie możesz zacząć doświadczać dziwnych zachowań.

# Co oznacza „-” w 'su -'?

Pierwszy parametr, „-„, mówi su, aby udawał, że użytkownik zalogował się bezpośrednio. W przeciwnym razie, środowisko jest przekazywane dalej, z wyjątkiem $PATH, które jest kontrolowane przez PATH i SUPATH w /etc/default/su.

To „-” w zasadzie oznacza rozpoczęcie nowej sesji od nowa, i nie przenoszenie żadnego 'bagażu' z poprzedniej sesji. Na przykład, jeśli utworzysz zmienną i ją wyeksportujesz, to ta zmienna będzie dostępna tylko wtedy, gdy nie rozpoczniesz nowej sesji:

testvar=12345 # Tutaj utworzyłem nową zmienną.
export testvar # To ustawia zmienną, aby była dostępna we wszystkich sesjach.
su Tom # Ponieważ „-” jest pominięte, przeniesienie jest dozwolone. Więc zmienna powinna być dostępna w nowej sesji.
password
echo testvar # zmienna istnieje w nowej sesji.
exit
su – Tom # Ponieważ „-” jest określone, blokuje to wszelkie przeniesienia, aby naśladować bezpośrednie logowanie, jak to tylko możliwe.
echo testvar # Zwraca pustkę, ponieważ ta zmienna nie istnieje w „świeżej” sesji.

## Uruchom pojedynczą komendę jako inny użytkownik.
Możesz użyć su, aby zmienić użytkownika na tyle długo, aby uruchomić pojedyncze polecenie przed ponownym wycofaniem się:

su – Tom -c 'echo „Hello and Goodbye Tom'

Albo możesz połączyć wiele poleceń w jedną linię używając średnika:

su – Tom -c 'id ; echo „Hello and Goodbye Tom'

## Daj nie-adminom dostęp do jakiegoś poziomu root’a używając sudo
W Linuksie wszystkie polecenia/zadania poziomu admin, które mogą być wykonywane tylko przez użytkownika root. Więc jeśli jest jakaś konkretna czynność na poziomie administratora, którą chcesz, aby kolega wykonał, to jednym ze sposobów na zrobienie tego jest podanie mu hasła roota. Jednak to nie jest dobry pomysł, ponieważ:
1. ze względów bezpieczeństwa, jest to najlepsza praktyka, aby ograniczyć w miarę możliwości, kto ma dostęp do roota.
2. jesteś nieumyślnie dając im pełną kontrolę nad wszystkim innym.

Sposób obejść ten dylemat jest użycie sudo narzędzie. Sudo pozwala użytkownikowi root dać użytkownikowi możliwość uruchamiania jednego lub więcej poleceń na poziomie administratora (tak jakby był zalogowany jako użytkownik root, ale bez faktycznego logowania się jako użytkownik root).

Na przykład, tylko root może wyłączyć maszynę:

shutdown # To wyłącza maszynę. Aby ją ponownie włączyć, należy nacisnąć przycisk zasilania na maszynie.

Jeśli użytkownik Tom spróbuje użyć polecenia shutdown, otrzyma komunikat z odmową pozwolenia:

<code=>

Jeśli użytkownik root da Tomowi, sudo, pozwolenie na użycie polecenia „shutdown”. Następnie Tomek powinien być teraz w stanie uruchomić polecenie na poziomie administratora, poprzedzając je słowem sudo:

sudo {command}

Jak wskazano powyżej, składnia inicjowania sudo to słowo sudo następujące po poleceniu, które ma zostać uruchomione:

Więc Tomek może powołać się na swoje uprawnienie sudo w następujący sposób:

shutdown # this wont work because sudo has not been invoked.
sudo shutdown # to zadziałało, a maszyna się wyłącza.
<password=> # Podobnie jak su, musisz podać hasło. Ale w przeciwieństwie do su, tak naprawdę wpisujesz hasło bieżącego użytkownika.
# Jest to trochę przesadne, ponieważ użytkownik jest już zalogowany jako ten użytkownik. Na szczęście ta <l-anchor=>sudo password<l=> zachęta może być wyłączona.

Z powodów bezpieczeństwa przechowywany jest dziennik wszystkich działań związanych z sudo, na wypadek gdyby użytkownik nadużył swoich uprawnień sudo.

Użytkownik root musi <l=> skonfigurować i przypisać uprawnienia sudo<l=> w celu przypisania uprawnień.

Główne różnice między używaniem su i sudo (do uruchamiania poleceń administratora)
Podsumowując, główne różnice w uruchamianiu poleceń na poziomie administratora jako główny użytkownik są następujące:

1. Aby użyć su, trzeba znać hasło roota, podczas gdy dla sudo, nie
2. Z sudo, trzeba poprzedzić każde polecenie słowem „sudo”, ale nie ma prefiksowania jest konieczne z su.
3. Z su, można uruchomić każdy admin-command, ale z sudo, można tylko uruchomić admin-commands jak upoważniony w pliku konfiguracyjnym sudo.

Kilka przydatnych faktów
Użytkownik root jest czasem określany jako „superużytkownik”.
Alternatywą dla „id” jest komenda „whoami” (ale nie jest tak pouczająca).
Istnieje konwencja, że dla użytkownika root, prompt user kończy się na „#”, podczas gdy dla każdego innego kończy się na „$”. Mówiąc o tym, jest kilka sposobów, aby <l=> dostosować znak zachęty<l=>.

Komenda id pokazuje więcej niż tylko nazwy użytkowników i grup. Pokazuje również odpowiadające im numery id dla użytkowników i grup. Można również użyć polecenia id, aby wyświetlić szczegóły innych użytkowników poza aktualnie zalogowanym użytkownikiem:

id {username}

Polecenie id pobiera informacje z /etc/passwd i /etc/group

Powiązane tematy
Ustawianie i przydzielanie uprawnień sudo.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *