Scroll to navigation

RUN0(1) run0 RUN0(1)

NAZWA

run0 - podnosi uprawnienia

SKŁADNIA

run0 [OPCJE...] [POLECENIE...]

OPIS

run0 może posłużyć do tymczasowego i interaktywnego nabycie wyższych lub odmiennych uprawnień. Ma zbliżony skutek do sudo(8), lecz działa odmienne w kilku istotnych obszarach:

•Od wywołującego do wywołanych poleceń nie są dziedziczone poświadczone kontekstu bezpieczeństwa lub wykonania, ponieważ polecenia są przywoływane z nowej, izolowanej usługi, rozwidlonej przez menedżera usług.

•Uwierzytelnianie zachodzi za pomocą polkit[1], dzięki czemu wprowadzanie danych uwierzytelniających jest oddzielone od terminala (jeśli to tylko możliwe).

•Ze względów bezpieczeństwa, dla wywołanego polecenia jest przydzielany odrębny, izolowany pseudoterminal, co oddziela również jego czas istnienia.

•W implementacji nie jest wykorzystywana funkcja bitów dostępu do plików SetUID/SetGID.

Wszystko to powinno dać bezpieczniejszą i solidniejszą alternatywę dla mechanizmu sudo, w szczególności w środowiskach systemu operacyjnego, w którym nie jest dostępna obsługa SetUID/SetGID (np. po ustawieniu zmiennej NoNewPrivileges= w systemd-system.conf(5)).

Sesje wywołane za pomocą run0 będą działały poprzez stos PAM „systemd-run0”.

Proszę zauważyć, że run0 zaimplementowano jako alternatywne, wielowywołaniowe przywołanie systemd-run(1). Oznacza to, że run0 jest dowiązaniem symbolicznym do pliku wykonywalnego systemd-run i działa jak run0, gdy zostanie wywołane przez dowiązanie symboliczne; w innych sytuacjach działa jak systemd-run.

OPCJE

Obsługiwane są następujące opcje:

--unit=

Używa danej nazwy jednostki, zamiast wygenerowanej automatycznie.

Dodane w wersji 256.

--property=

Ustawia właściwość tworzonej jednostki usługi. Opcja ta przyjmuje przypisania w tej samej postaci, co polecenie set-property systemctl(1).

Dodane w wersji 256.

--description=

Zapewnia opis przywoływanej jednostki usługi. Jeśli się go nie poda, za opis posłuży samo polecenie. Zob. Description= w systemd.unit(5).

Dodane w wersji 256.

--slice=

Tworzy nową część jednostki .service podanego wycinka (slice), zamiast korzystać z user.slice.

Dodane w wersji 256.

--slice-inherit

Tworzy nową część jednostki .service wycinka (slice), w którym został wywołany sam run0. Opcję tę można połączyć z --slice=, wówczas wycinek podany poprzez --slice= jest umieszczany wewnątrz wycinka w którym wywołano polecenie run0.

Przykład: run0 zostanie wywołany w wycinku foo.slice, a argumentem opcji --slice= będzie bar. Wówczas jednostka zostanie umieszczona pod foo-bar.slice.

Dodane w wersji 256.

--user=, -u, --group=, -g

Switches to the specified user/group. If not specified defaults to "root", unless --area= or --empower are used (see below), in which case this defaults to the invoking user.

Dodane w wersji 256.

--nice=

Uruchamia wywoływaną sesję z podanym poziomem priorytetu nice.

Dodane w wersji 256.

--chdir=, -D

Uruchamia wywoływaną sesję z podanym katalogiem roboczym. Jeśli nie poda się katalogu, domyślnie będzie to bieżący katalog roboczy — przy przełączaniu na użytkownika root albo katalog domowy użytkownika docelowego — w pozostałych przypadkach.

Dodane w wersji 256.

--via-shell

Przywołuje powłokę zgłoszeniową użytkownika docelowego i wykonuje podane polecenie (jeśli je podano) za jej pomocą.

Dodane w wersji 258.

-i

Skrótowa forma opcji --via-shell --chdir='~'.

Dodane w wersji 258.

--setenv=NAZWA[=WARTOŚĆ]

Uruchamia wywoływaną sesję z ustawioną podaną zmienną środowiskową. Parametr ten można podać wielokrotnie, aby ustawić wiele zmiennych. Jeśli pominie się „=” i WARTOŚĆ, użyta będzie wartość zmiennej o takiej samej nazwie ze środowiska wywołującego.

Dodane w wersji 256.

--background=KOLOR

Zmienia kolor tła na podany kolor ANSI, na czas trwania sesji. Jeśli nie poda się koloru, tło będzie zabarwione czerwonawo przy działaniu jako root i żółtawo, przy działaniu pod innym identyfikatorem użytkownika, jako przypomnienie działania ze zmienionymi uprawnieniami. Kolor należy podać jako kolor tła ANSI X3.64 SGR, tj. łańcuch, taki jak: „40”, „41”, ..., „47”, „48;2;...”, „48;5;...”. Więcej na ten temat w artykule Sekwencje specjalne ANSI (angielska Wikipedia)[2]. Aby wyłączyć, należy podać łańcuch pusty.

Przykład: „--background=44” ustawi niebieskie tło.

Dodane w wersji 256.

--pty, --pty-late, --pipe

Żąda alokacji pseudo TTY dla sesji run0 (przy opcji --pty lub --pty-late), lub żąda bezpośredniego przekazywania deskryptorów plików STDIO wywołującego (przy opcji --pipe). --pty-late jest bardzo podobne do --pty, lecz zaczyna przetwarzanie TTY dopiero po ukończeniu inicjowania jednostki, pozostawiając do tego czasu wejście do dyspozycji agentów polkit/haseł. Jeśli nie poda się żadnego z tych przełączników, albo poda --pipe wraz z jednym z --pty/--pty-late, tryb zostanie wybrany automatycznie: jeśli standardowe wejście, standardowe wyjście i standardowe wyjście błędów są połączone z terminalem, to alokowany jest pseudoterminal (w trybie --pty-late dzieje się tak, o ile nie podano --no-ask-password, bowiem wówczas wybierany jest --pty); w innym przypadku odpowiednie deskryptory plików są przekazywane bezpośrednio.

--pty oraz --pipe dodano w wersji 257.

--pty-late dodano w wersji 258.

--shell-prompt-prefix=ŁAŃCUCH

Ustawia łańcuch przedrostka zachęty powłoki. W ten sposób ostatecznie wpływa się na zmienną środowiskową $SHELL_PROMPT_PREFIX wywoływanego programu, która jest zwykle importowana do zachęty powłoki. Domyślnie – jeśli obsługiwane są emoji – pokazywane jest emoji superbohatera (🦸). To domyślne ustawienie można zmienić (lub wyłączyć) przekazując zmienną środowiskową $SYSTEMD_RUN_SHELL_PROMPT_PREFIX do run0, zob. niżej. Ustawienie łańcucha pustego wyłączy stosowania przedrostka zachęty powłoki.

Dodane w wersji 257.

--lightweight=WARTOŚĆ-LOGICZNA

Reguluje, czy aktywować menedżer usług dla poszczególnych użytkowników wobec użytkownika docelowego. Domyślnie, jeśli użytkownikiem docelowym jest „root” lub użytkownik systemowy, w wyniku wywołania run0 menedżer usług dla poszczególnych użytkowników nie jest aktywowany; w innych przypadkach jest.

Ostatecznie, w ten sposób kontroluje się zmienną środowiskową $XDG_SESSION_CLASS, która oddziałuje na pam_systemd(8).

Dodane w wersji 258.

--area=OBSZAR

Reguluje „obszar” konta docelowego, do którego następuje logowanie. Obszary to drugorzędne katalogi domowe wewnątrz podstawowego katalogu domowego użytkownika docelowego tj. logowanie do obszaru „foobar” konta skutkuje ustawienie $HOME na ~/Areas/foobar przy zalogowaniu.

Przy stosowaniu tej opcji, domyślny użytkownik do którego następuje przejście zmienia się z roota na użytkownika wywołującego (lecz pierwszeństwo ma --user=, zob. wyżej). Innymi słowy, podanie jedynie obszaru, bez użytkownika, jest mechanizmem tworzącym nową sesję użytkownika wywołującego, jedynie ze zmienionym obszarem.

Ostatecznie, w ten sposób kontroluje się zmienną środowiskową $XDG_AREA, która oddziałuje na pam_systemd(8).

Więcej informacji o pojęciu obszaru opisano w podręczniku pam_systemd_home(8).

Dodane w wersji 258.

--empower

If specified, run0 will elevate the privileges of the selected user (using --user=) or the current user if no user is explicitly selected. Currently this means we give the invoked process all available capabilities and add the the "empower" group as a supplemental group (for which all polkit actions are allowed by default), but other privileges may be granted in the future as well when using this option.

Note that other (unprivileged) processes of the selected user will have privileges over the invoked process. Consider not using this option in an environment where there might be malicious processes running as the selected user.

Dodane w wersji 259.

--same-root-dir

Execute the run0 session in the same root directory that the run0 command is executed in.

Dodane w wersji 259.

--machine=

Dokonuje operacji w lokalnym kontenerze. Określa nazwę kontenera, z którym ma się połączyć.

Dodane w wersji 256.

--no-ask-password

Nie odpytuje użytkownika o uwierzytelnienie, do operacji wymagających dodatkowych uprawnień.

-h, --help

Wyświetla krótki komunikat pomocy i wychodzi.

--version

Wyświetla krótką informację o wersji i wychodzi.

Wszelkie argumenty wiersza polecenia występujące po pierwszym argumencie niebędącym opcją, stają się częścią wiersza polecenia dla wywoływanego procesu. Jeśli nie poda się wiersza polecenia, wywoływana jest powłoka interaktywna. Powłokę, która ma być wywołana, ustawia się za pomocą --via-shell – wówczas używa się powłoki użytkownika docelowego – lub poprzez --setenv=POWŁOKA=.... Domyślnie wykonywana jest powłoka użytkownika pierwotnego przy wywołaniu lokalnym, albo /bin/sh, jeśli korzysta się z --machine=.

Proszę zauważyć, że w odróżnieniu od sudo, run0 zawsze tworzy powłoki korzystając z zachowania powłoki zgłoszeniowej, niezależnie od podania opcji -i.

STATUS ZAKOŃCZENIA

W przypadku powodzenia zwracane jest 0. Jeśli run0 nie uda się uruchomić sesji lub podane polecenie zawiedzie, zwrócona zostanie wartość niezerowa.

ZMIENNE ŚRODOWISKOWE

Podobnie jak w przypadku systemd-run, sesja odziedziczy środowisko systemu od menedżera usług. Dodatkowo ustawione zostaną następujące zmienne środowiskowe:

$TERM

Skopiowana z $TERM wywołującego. Może być przesłonięta za pomocą opcji --setenv=

Dodane w wersji 256.

$SUDO_USER

Ustawiana na nazwę pierwotnego użytkownika.

Dodane w wersji 256.

$SUDO_UID

Ustawiana na numeryczny, uniksowy identyfikator pierwotnego użytkownika.

Dodane w wersji 256.

$SUDO_GID

Ustawiana na główny, numeryczny, uniksowy identyfikator grupy pierwotnego użytkownika.

Dodane w wersji 256.

$SHELL_PROMPT_PREFIX

Domyślnie ustawiana na emoji superbohatera (jeśli jest to obsługiwane), lecz może być przesłonięta przez zmienną środowiskową $SYSTEMD_RUN_SHELL_PROMPT_PREFIX (zob. niżej) lub przełącznik --shell-prompt-prefix= (zob. wyżej).

Dodane w wersji 257.

Do run0 można przekazać następujące zmienne:

$SYSTEMD_RUN_SHELL_PROMPT_PREFIX

Jeśli ustawiona, przesłania domyślny przedrostek zachęty powłoki, który run0 ustawia dla przywołanej powłoki (emoji superbohatera). Ustawienie łańcucha pustego wyłączy stosowania przedrostka zachęty powłoki.

Dodane w wersji 257.

ZOBACZ TAKŻE

systemd(1), systemd-run(1), sudo(8), machinectl(1), pam_systemd(8)

UWAGI

1.
polkit
2.
Sekwencje specjalne ANSI (angielska Wikipedia)

TŁUMACZENIE

Tłumaczenie niniejszej strony podręcznika: Michał Kułach <michal.kulach@gmail.com>

Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.

Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej manpages-pl-list@lists.sourceforge.net.

systemd 259~rc2