RUN0(1) run0 RUN0(1) NAZWA run0 - podnosi uprawnienia SKLADNIA run0 [OPCJE...] [POLECENIE...] OPIS run0 moze posluzyc do tymczasowego i interaktywnego nabycie wyzszych lub odmiennych uprawnien. Ma zblizony skutek do sudo(8), lecz dziala odmienne w kilku istotnych obszarach: o Od wywolujacego do wywolanych polecen nie sa dziedziczone poswiadczone kontekstu bezpieczenstwa lub wykonania, poniewaz polecenia sa przywolywane z nowej, izolowanej uslugi, rozwidlonej przez menedzera uslug. o Uwierzytelnianie zachodzi za pomoca polkit[1], dzieki czemu wprowadzanie danych uwierzytelniajacych jest oddzielone od terminala (jesli to tylko mozliwe). o Ze wzgledow bezpieczenstwa, dla wywolanego polecenia jest przydzielany odrebny, izolowany pseudoterminal, co oddziela rowniez jego czas istnienia. o W implementacji nie jest wykorzystywana funkcja bitow dostepu do plikow SetUID/SetGID. Wszystko to powinno dac bezpieczniejsza i solidniejsza alternatywe dla mechanizmu sudo, w szczegolnosci w srodowiskach systemu operacyjnego, w ktorym nie jest dostepna obsluga SetUID/SetGID (np. po ustawieniu zmiennej NoNewPrivileges= w systemd-system.conf(5)). Sesje wywolane za pomoca run0 beda dzialaly poprzez stos PAM ,,systemd-run0". Prosze zauwazyc, ze run0 zaimplementowano jako alternatywne, wielowywolaniowe przywolanie systemd-run(1). Oznacza to, ze run0 jest dowiazaniem symbolicznym do pliku wykonywalnego systemd-run i dziala jak run0, gdy zostanie wywolane przez dowiazanie symboliczne; w innych sytuacjach dziala jak systemd-run. OPCJE Obslugiwane sa nastepujace opcje: --unit= Uzywa danej nazwy jednostki, zamiast wygenerowanej automatycznie. Dodane w wersji 256. --property= Ustawia wlasciwosc tworzonej jednostki uslugi. Opcja ta przyjmuje przypisania w tej samej postaci, co polecenie set-property systemctl(1). Dodane w wersji 256. --description= Zapewnia opis przywolywanej jednostki uslugi. Jesli sie go nie poda, za opis posluzy samo polecenie. Zob. Description= w systemd.unit(5). Dodane w wersji 256. --slice= Tworzy nowa czesc jednostki .service podanego wycinka (slice), zamiast korzystac z user.slice. Dodane w wersji 256. --slice-inherit Tworzy nowa czesc jednostki .service wycinka (slice), w ktorym zostal wywolany sam run0. Opcje te mozna polaczyc z --slice=, wowczas wycinek podany poprzez --slice= jest umieszczany wewnatrz wycinka w ktorym wywolano polecenie run0. Przyklad: run0 zostanie wywolany w wycinku foo.slice, a argumentem opcji --slice= bedzie bar. Wowczas jednostka zostanie umieszczona pod foo-bar.slice. Dodane w wersji 256. --user=, -u, --group=, -g Przelacza na podanego uzytkownika/grupe. Bez argumentow przyjmuje wartosc domyslna ,,root", chyba ze podano tez --area= lub --empower (zob. nizej), wtedy domyslnie przyjmuje wartosc uzytkownika wywolujacego. Dodane w wersji 256. --nice= Uruchamia wywolywana sesje z podanym poziomem priorytetu nice. Dodane w wersji 256. --chdir=, -D Uruchamia wywolywana sesje z podanym katalogiem roboczym. Jesli nie poda sie katalogu, domyslnie bedzie to biezacy katalog roboczy -- przy przelaczaniu na uzytkownika root albo katalog domowy uzytkownika docelowego -- w pozostalych przypadkach. Dodane w wersji 256. --via-shell Przywoluje powloke zgloszeniowa uzytkownika docelowego i wykonuje podane polecenie (jesli je podano) za jej pomoca. Dodane w wersji 258. -i Skrotowa forma opcji --via-shell --chdir='~'. Dodane w wersji 258. --setenv=NAZWA[=WARTOSC] Uruchamia wywolywana sesje z ustawiona podana zmienna srodowiskowa. Parametr ten mozna podac wielokrotnie, aby ustawic wiele zmiennych. Jesli pominie sie ,,=" i WARTOSC, uzyta bedzie wartosc zmiennej o takiej samej nazwie ze srodowiska wywolujacego. Dodane w wersji 256. --background=KOLOR Zmienia kolor tla na podany kolor ANSI, na czas trwania sesji. Jesli nie poda sie koloru, tlo bedzie zabarwione czerwonawo przy dzialaniu jako root i zoltawo, przy dzialaniu pod innym identyfikatorem uzytkownika, jako przypomnienie dzialania ze zmienionymi uprawnieniami. Kolor nalezy podac jako kolor tla ANSI X3.64 SGR, tj. lancuch, taki jak: ,,40", ,,41", ..., ,,47", ,,48;2;...", ,,48;5;...". Wiecej na ten temat w artykule Sekwencje specjalne ANSI (angielska Wikipedia)[2]. Aby wylaczyc, nalezy podac lancuch pusty. Przyklad: ,,--background=44" ustawi niebieskie tlo. Dodane w wersji 256. --pty, --pty-late, --pipe Zada alokacji pseudo TTY dla sesji run0 (przy opcji --pty lub --pty-late), lub zada bezposredniego przekazywania deskryptorow plikow STDIO wywolujacego (przy opcji --pipe). --pty-late jest bardzo podobne do --pty, lecz zaczyna przetwarzanie TTY dopiero po ukonczeniu inicjowania jednostki, pozostawiajac do tego czasu wejscie do dyspozycji agentow polkit/hasel. Jesli nie poda sie zadnego z tych przelacznikow, albo poda --pipe wraz z jednym z --pty/--pty-late, tryb zostanie wybrany automatycznie: jesli standardowe wejscie, standardowe wyjscie i standardowe wyjscie bledow sa polaczone z terminalem, to alokowany jest pseudoterminal (w trybie --pty-late dzieje sie tak, o ile nie podano --no-ask-password, bowiem wowczas wybierany jest --pty); w innym przypadku odpowiednie deskryptory plikow sa przekazywane bezposrednio. --pty oraz --pipe dodano w wersji 257. --pty-late dodano w wersji 258. --shell-prompt-prefix=LANCUCH Ustawia lancuch przedrostka zachety powloki. W ten sposob ostatecznie wplywa sie na zmienna srodowiskowa $SHELL_PROMPT_PREFIX wywolywanego programu, ktora jest zwykle importowana do zachety powloki. Domyslnie - jesli obslugiwane sa emoji - pokazywane jest emoji superbohatera (). To domyslne ustawienie mozna zmienic (lub wylaczyc) przekazujac zmienna srodowiskowa $SYSTEMD_RUN_SHELL_PROMPT_PREFIX do run0, zob. nizej. Ustawienie lancucha pustego wylaczy stosowania przedrostka zachety powloki. Dodane w wersji 257. --lightweight=WARTOSC-LOGICZNA Reguluje, czy aktywowac menedzer uslug dla poszczegolnych uzytkownikow wobec uzytkownika docelowego. Domyslnie (gdy nieustawione lub ustawione na auto), jesli uzytkownikiem docelowym jest ,,root" lub uzytkownik systemowy, w wyniku wywolania run0 menedzer uslug dla poszczegolnych uzytkownikow nie jest aktywowany; w innych przypadkach jest. Ostatecznie, w ten sposob kontroluje sie zmienna srodowiskowa $XDG_SESSION_CLASS, ktora oddzialuje na pam_systemd(8). Dodane w wersji 258. --area=OBSZAR Reguluje ,,obszar" konta docelowego, do ktorego nastepuje logowanie. Obszary to drugorzedne katalogi domowe wewnatrz podstawowego katalogu domowego uzytkownika docelowego tj. logowanie do obszaru ,,foobar" konta skutkuje ustawienie $HOME na ~/Areas/foobar przy zalogowaniu. Przy stosowaniu tej opcji, domyslny uzytkownik do ktorego nastepuje przejscie zmienia sie z roota na uzytkownika wywolujacego (lecz pierwszenstwo ma --user=, zob. wyzej). Innymi slowy, podanie jedynie obszaru, bez uzytkownika, jest mechanizmem tworzacym nowa sesje uzytkownika wywolujacego, jedynie ze zmienionym obszarem. Ostatecznie, w ten sposob kontroluje sie zmienna srodowiskowa $XDG_AREA, ktora oddzialuje na pam_systemd(8). Wiecej informacji o pojeciu obszaru opisano w podreczniku pam_systemd_home(8). Dodane w wersji 258. --empower Po podaniu, run0 podniesie przywileje wybranego uzytkownika (opcja --user=) lub biezacego uzytkownika, jesli nie wybrano uzytkownika. Obecnie oznacza to, ze wywolywany proces otrzymuje wszystkie dostepne przywileje oraz dodaje, jako grupe dodatkowa, grupe ,,empower" (dla ktorej domyslnie dozwolone sa wszystkie akcje polkit), natomiast w przyszlosci, zastosowanie tej opcji moze zapewnic dodatkowe przywileje. Prosze zauwazyc, ze inne (nieuprzywilejowane) procesy wybranego uzytkownika beda mialy przywileje wobec wywolywanego procesu. Nie powinno stosowac sie tej opcji w srodowiskach, gdzie jako wybrany uzytkownik moga dzialac zlosliwe procesy. Dodane w wersji 259. --same-root-dir Wykonuje sesje run0 w tym samym katalogu glownym, w jakim wykonywane jest polecenie run0. Dodane w wersji 259. --machine= Dokonuje operacji w lokalnym kontenerze. Okresla nazwe kontenera, z ktorym ma sie polaczyc. Dodane w wersji 256. --no-ask-password Nie odpytuje uzytkownika o uwierzytelnienie, do operacji wymagajacych dodatkowych uprawnien. -h, --help Wyswietla krotki komunikat pomocy i wychodzi. --version Wyswietla krotka informacje o wersji i wychodzi. Wszelkie argumenty wiersza polecenia wystepujace po pierwszym argumencie niebedacym opcja, staja sie czescia wiersza polecenia dla wywolywanego procesu. Jesli nie poda sie wiersza polecenia, wywolywana jest powloka interaktywna. Powloke, ktora ma byc wywolana, ustawia sie za pomoca --via-shell - wowczas uzywa sie powloki uzytkownika docelowego - lub poprzez --setenv=POWLOKA=.... Domyslnie wykonywana jest powloka uzytkownika pierwotnego przy wywolaniu lokalnym, albo /bin/sh, jesli korzysta sie z --machine=. Prosze zauwazyc, ze w odroznieniu od sudo, run0 zawsze tworzy powloki korzystajac z zachowania powloki zgloszeniowej, niezaleznie od podania opcji -i. STATUS ZAKONCZENIA W przypadku powodzenia zwracane jest 0. Jesli run0 nie uda sie uruchomic sesji lub podane polecenie zawiedzie, zwrocona zostanie wartosc niezerowa. ZMIENNE SRODOWISKOWE Podobnie jak w przypadku systemd-run, sesja odziedziczy srodowisko systemu od menedzera uslug. Dodatkowo ustawione zostana nastepujace zmienne srodowiskowe: $TERM Skopiowana z $TERM wywolujacego. Moze byc przeslonieta za pomoca opcji --setenv= Dodane w wersji 256. $SUDO_USER Ustawiana na nazwe pierwotnego uzytkownika. Dodane w wersji 256. $SUDO_UID Ustawiana na numeryczny, uniksowy identyfikator pierwotnego uzytkownika. Dodane w wersji 256. $SUDO_GID Ustawiana na glowny, numeryczny, uniksowy identyfikator grupy pierwotnego uzytkownika. Dodane w wersji 256. $SHELL_PROMPT_PREFIX Domyslnie ustawiana na emoji superbohatera (jesli jest to obslugiwane), lecz moze byc przeslonieta przez zmienna srodowiskowa $SYSTEMD_RUN_SHELL_PROMPT_PREFIX (zob. nizej) lub przelacznik --shell-prompt-prefix= (zob. wyzej). Dodane w wersji 257. Do run0 mozna przekazac nastepujace zmienne: $SYSTEMD_RUN_SHELL_PROMPT_PREFIX Jesli ustawiona, przeslania domyslny przedrostek zachety powloki, ktory run0 ustawia dla przywolanej powloki (emoji superbohatera). Ustawienie lancucha pustego wylaczy stosowania przedrostka zachety powloki. Dodane w wersji 257. ZOBACZ TAKZE systemd(1), systemd-run(1), sudo(8), machinectl(1), pam_systemd(8) UWAGI 1. polkit https://www.freedesktop.org/wiki/Software/polkit 2. Sekwencje specjalne ANSI (angielska Wikipedia) https://en.wikipedia.org/wiki/ANSI_escape_code#SGR_(Select_Graphic_Rendition)_parameters TLUMACZENIE Tlumaczenie niniejszej strony podrecznika: Michal Kulach Niniejsze tlumaczenie jest wolna dokumentacja. Blizsze informacje o warunkach licencji mozna uzyskac zapoznajac sie z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje sie ZADNEJ ODPOWIEDZIALNOSCI. Bledy w tlumaczeniu strony podrecznika prosimy zglaszac na adres listy dyskusyjnej . systemd 260.1 RUN0(1)