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= is 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

Invokes the target user's login shell and runs the specified command (if any) via it.

Dodane w wersji 258.

-i

Shortcut for --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

Request allocation of a pseudo TTY for the run0 session (in case of --pty or --pty-late), or request passing the caller's STDIO file descriptors directly through (in case of --pipe). --pty-late is very similar to --pty but begins the TTY processing only once unit startup is complete, leaving input to any passwords/polkit agents until that time. If neither switch is specified, or if both --pipe and one of --pty/--pty-late are specified, the mode will be picked automatically: if standard input, standard output, and standard error output are all connected to a TTY then a pseudo TTY is allocated (in --pty-late mode unless --no-ask-password is specified in which case --pty is selected), otherwise the relevant file descriptors are passed through directly.

--pty and --pipe were added in v257.

--pty-late was added in v258.

--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=BOOLEAN

Controls whether to activate the per-user service manager for the target user. By default if the target user is "root" or a system user the per-user service manager is not activated as effect of the run0 invocation, otherwise it is.

This ultimately controls the $XDG_SESSION_CLASS environment variable pam_systemd(8) respects.

Dodane w wersji 258.

--area=AREA

Controls the "area" of the target account to log into. Areas are secondary home directories within the primary home directory of the target user, i.e. logging into area "foobar" of an account translates to $HOME being set to ~/Areas/foobar on login.

If this option is used, the default user to transition to changes from root to the calling user's (but --user= takes precedence, see above). Or in other words, just specifying an area without a user is a mechanism to create a new session of the calling user, just with a different area.

This ultimately controls the $XDG_AREA environment variable pam_systemd(8) respects.

For details on the area concept see pam_systemd_home(8).

Dodane w wersji 258.

--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.

All command line arguments after the first non-option argument become part of the command line of the launched process. If no command line is specified an interactive shell is invoked. The shell to invoke may be controlled through --via-shell - when specified the target user's shell is used - or --setenv=SHELL=.... By default, the originating user's shell is executed if operating locally, or /bin/sh when operating with --machine=.

Note that unlike sudo, run0 always spawns shells with login shell semantics, regardless of -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 258~rc3