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, zamiast na roota. 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. --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, --pipe Zada alokacji pseudo TTY dla sesji run0 (przy opcji --pty), lub zada bezposredniego przekazywania deskryptorow plikow STDIO wywolujacego (przy opcji --pipe). Jesli nie poda sie zadnego z tych przelacznikow, albo poda oba, tryb zostanie wybrany automatycznie: jesli standardowe wejscie, standardowe wyjscie i standardowe wyjscie bledow sa polaczone z terminalem, to alokowany jest pseudoterminal; w innym przypadku odpowiednie deskryptory plikow sa przekazywane bezposrednio. Dodane w wersji 257. --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. --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 --setenv=POWLOKA=... i obecnie domyslnie jest to powloka uzytkownika pierwotnego (a nie uzytkownika docelowego) przy wywolaniu lokalnym, albo /bin/sh, jesli korzysta sie z --machine=. 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) 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 257.8 RUN0(1)