Jak używać Run0 w systemie Linux

Jak używać Run0 w systemie Linux
Zdjęcie przedstawiające zbliżenie ekranu laptopa.

Run0 to nowy i innowacyjny program eskalacji uprawnień dla dystrybucji Linuksa opartych na Systemd. Zapewnia lekką i „bezkonfiguracyjną” alternatywę dla tradycyjnych aplikacji eskalacji, takich jak sudo i doas. Tutaj pokazujemy podstawy korzystania z Run0 do eskalacji poleceń dla systemu Linux.

Zanim to zrobisz, możesz dowiedzieć się, czym jest Run0 i czym różni się od sudo.

Jak uruchamiać programy jako inny użytkownik

Jednym z najczęstszych zastosowań aplikacji eskalacji uprawnień jest uruchamianie poleceń jako użytkownik root. W tym względzie stuknięcie użytkownika root w Run0 wymaga dodania run0 przed poleceniem, które chcesz uruchomić. Na przykład poniższe tworzy nowy folder w katalogu, do którego dostęp ma tylko użytkownik root:

Spowoduje to wyświetlenie monitu CLI o podanie hasła lub małego okna GUI z prośbą o podanie hasła bieżącego użytkownika.

Zrzut ekranu przedstawiający monit o podanie hasła dla Run0.

Podobnie jak sudo i doas, Run0 może również przełączyć się na użytkownika innego niż root podczas uruchamiania poleceń. Aby to zrobić, dodaj flagę, --usera następnie nazwę użytkownika, jako którego chcesz uruchomić polecenie:

Podaj hasło użytkownika, na którego chcesz się przełączyć, a następnie naciśnij Enter.

Jak przełączyć się na powłokę innego użytkownika

Inną kluczową częścią aplikacji eskalacji uprawnień jest jej zdolność do przeniesienia użytkownika do powłoki roota. Daje to możliwość interakcji z systemem jako użytkownik root i uruchamiania bardziej złożonych poleceń z CLI.

W Run0 możesz to zrobić, uruchamiając program bez żadnych dodatkowych argumentów.

Terminal pokazujący powłokę główną z poziomu wiersza poleceń Run0.

Podobnie jak w przypadku uruchamiania programów jako root, możliwe jest także użycie Run0 z --userflagą, aby rozpocząć sesję powłoki jako określony użytkownik:

Terminal pokazujący monit Run0 dla użytkownika innego niż root.

Ponadto run0 pozwala tworzyć sesje powłoki z tymczasowymi uprawnieniami grupowymi dla użytkowników innych niż root. Jest to przydatne, jeśli chcesz uzyskać dostęp do folderów zablokowanych dla określonego użytkownika i grupy bez przechodzenia do roota.

Na przykład poniższe polecenie przyznaje użytkownikowi „alice” tymczasowy dostęp do grupy „www-data”:

Można również użyć tej --chdirflagi, aby wymusić zmianę katalogu podczas przechodzenia do nowej sesji powłoki:

Terminal pokazujący automatyczną zmianę katalogu po przejściu do powłoki innego użytkownika.

Jak dostosować bieżącą sesję Run0

Największą zaletą Run0 jest to, że nie używa setuid (SUID) do obsługi działań superużytkownika. Zamiast tego polega na systemd-run, który tworzy izolowane pseudo-TTY do uruchamiania poleceń jako root.

Jedną z konsekwencji tego podejścia jest to, że Systemd traktuje każdą powłokę Run0 jako odrębną jednostkę działającą pod menedżerem usług. Pozwala to dostosować proces powłoki roota, w przeciwieństwie do tradycyjnych aplikacji eskalacji uprawnień.

Aby dodać etykietę dla powłoki głównej, użyj flagi, --unita następnie nazwy, której chcesz użyć:

Możesz również dodać niestandardowy opis do powłoki głównej, dodając flagę --description:

Sprawdź, czy poprawnie zastosowałeś swoje dane, wpisując niestandardową nazwę powłoki głównej za pomocą systemctl:

Terminal pokazujący szczegóły niestandardowej jednostki Systemd.

Domyślnie Run0 zmienia kolor tła powłoki root na czerwony. Chociaż jest to pomocny wskaźnik wizualny, może rozpraszać, jeśli używasz jasnego motywu w systemie.

Aby to zmienić, należy użyć --backgroundflagi, a następnie wartości z przedziału 40-49:

Terminal pokazujący różne kolory tła w Run0.

Na koniec możesz również dostosować „poziom niceness” powłoki roota. Jest to wartość między -20 a 19, która określa, czy jądro będzie priorytetyzować Twój proces nad innymi.

Aby nadać powłoce głównej najwyższy priorytet, użyj --niceflagi z wartością „-20”:

Terminal podświetlający powłokę główną za pomocą zmodyfikowanego poziomu nice.

Jak grupować sesje Run0

Oprócz możliwości dostosowania każdej powłoki głównej Linux, możesz również użyć Run0, aby zgrupować je w wycinku Systemd. Jest to specjalna konstrukcja, która pozwala Twojej maszynie dostosować zapotrzebowanie na zasoby dla procesów bez wpływu na resztę systemu.

Aby utworzyć powłokę główną na innym wycinku, uruchom flagę, --slicea następnie nazwę wycinka, do którego chcesz się przenieść:

Potwierdź, że nowa sesja jest uruchamiana w ramach nowego wycinka, wypisując procesy w nim zawarte:

Terminal pokazujący szczegóły niestandardowego wycinka Systemd.

Możesz również użyć --slice-inheritflagi, aby zgrupować swój nowy fragment wraz z fragmentem, z którego pochodzi Run0. Jest to przydatne, jeśli już zgrupowałeś swoje powłoki do odpowiednich fragmentów i chcesz po prostu dodać nową powłokę:

Jak uruchamiać polecenia w kontenerach Systemd za pomocą Run0

Systemd-nspawn to specjalny program, który może tworzyć i zarządzać lekkimi kontenerami Linux podobnymi do Dockera. Będąc częścią pakietu Systemd, możesz również używać Run0 do wykonywania poleceń w kontenerach nspawn z komputera hosta.

Zacznij od wypisania dostępnych kontenerów Systemd-nspawn w swoim systemie:

Terminal wyświetlający listę dostępnych kontenerów Systemd-nspawn.

Uruchom następujące polecenie, aby utworzyć folder w katalogu głównym kontenera:

Można również przejść do powłoki głównej kontenera za pomocą Run0:

Terminal wyświetlający polecenie przełączenia wiersza poleceń kontenera.

Potwierdź, że teraz działasz w kontenerze, drukując nazwę hosta sesji terminala:

Terminal pokazujący proces przełączania z systemu lokalnego do kontenera Systemd-nspawn.

Nauka korzystania z Run0 do uruchamiania i zarządzania poleceniami root w systemie Linux to tylko wierzchołek góry lodowej, jeśli chodzi o aplikacje eskalacji uprawnień. Zanurz się głęboko w złożonym świecie, przyglądając się różnicom między su, sudo i sudo -s.

Źródło obrazu: Xavier Cee przez Unsplash . Wszystkie zmiany i zrzuty ekranu autorstwa Ramces Red.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *