RUNUSER(1)

NAZWA
runuser - uruchamia polecenie z innymi identyfikatorami użytkownika i grupy

SKŁADNIA

runuser [opcje] -u użytkownik [[--] polecenie [argument...]]

runuser [opcje] [-] [użytkownik [argument...]]

OPIS

runuser może służyć do uruchomienia poleceń z podstawionym identyfikatorem użytkownika i grupy. Jeśli nie poda się opcji -u, runuser cofa się do zachowania kompatybilnego z su i uruchamia powłokę. Różnicą pomiędzy poleceniami runuser i su jest to, że runuser nie pyta o hasło (ponieważ może być wykonane jedynie przez roota) i korzysta z innej konfiguracji PAM. Polecenie runuser nie musi być instalowane z uprawieniami suid.

Jeśli sesja PAM nie jest wymagana, to zalecanym rozwiązaniem jest korzystanie z polecenia setpriv(1).

Przy wywołaniu bez argumentów, runuser domyślnie uruchomi powłokę interaktywną jako root.

Z powodu zachowania kompatybilności wstecznej, runuser domyślnie nie zmienia katalogu bieżącego oraz ustawia jedynie zmienne środowiskowe HOME i SHELL (oraz USER i LOGNAME, jeśli docelowym użytkownikiem nie jest root). Niniejsza wersja runuser do zarządzenia sesją korzysta z PAM.

Note that runuser in all cases use PAM (pam_getenvlist(3)) to do the final environment modification. Command-line options such as --login and --preserve-environment affect the environment before it is modified by PAM.

Od wersji 2.38 runuser resetuje limity zasobów procesów RLIMIT_NICE, RLIMIT_RTPRIO, RLIMIT_FSIZE, RLIMIT_AS i RLIMIT_NOFILE.

OPCJE

-c, --command=polecenie
    Pass command to the shell with the -c option. Creates a new session via setsid(2). Refer to --session-command to keep the same session.

-f, --fast
    Przekazuje -f powłoce, co może, ale nie musi być przydatne, w zależności od powłoki.

-g, --group=grupa
    Grupa podstawowa do zastosowania. Opcja ta jest dopuszczalna tylko dla roota.

-G, --supp-group=grupa
    Określa dodatkową grupę. Opcja jest dostępna tylko dla użytkownika root. Pierwsza podana grupa dodatkowa jest używana jako grupa podstawowa, jeśli nie podano jej opcją --group.

-, -l, --login
    Uruchamia powłokę jako powłokę zgłoszeniową (logowania) ze środowiskiem podobnym do prawdziwej powłoki zgłoszeniowej:

        • clears all the environment variables except for TERM, COLORTERM, NO_COLOR and variables specified by --whitelist-environment

        • inicjuje zmienne środowiskowe HOME, SHELL, USER, LOGNAME i PATH

        • zmienia katalog na katalog domowy docelowego użytkownika

        • ustawia argv[0] powłoki na "-", aby uczynić z powłoki powłokę logowania

-m, -p, --preserve-environment
    Zachowuje całe środowisko tj. nie ustawia HOME, SHELL, USER ani LOGNAME. Opcja jest ignorowana, jeśli podano też opcję --login.

-P, --pty
    Create a pseudo-terminal for the session. The independent terminal provides better security as the user does not share a terminal with the original session. Please note security advice about TIOCSTI vulnerability below.

    The entire session can also be moved to the background (e.g., runuser --pty -u user -- command &). If the pseudo-terminal is enabled, then runuser works as a proxy between the sessions (sync stdin and stdout).

    Funkcja ta jest zaprojektowana głównie z myślą o powłokach interaktywnych. Jeśli standardowym wejściem nie jest terminal, lecz na przykład potok (np. echo "date" | runuser --pty -u użytkownik)), to flaga ECHO pseudoterminala jest wyłączana, aby uniknąć zabałaganionego wyjścia.

-s, --shell=powłoka
    Uruchamia podaną powłokę zamiast domyślnej. Powłoka do uruchomienia jest wybierana wedle poniższych reguł, w kolejności:

        • powłoka podana opcją --shell

        • powłoka określona w zmiennej środowiskowej SHELL, jeśli podano opcję --preserve-environment

        • powłoka podana we wpisie passwd docelowego użytkownika

        • /bin/sh

        Jeśli docelowy użytkownik ma okrojoną powłokę (tj. nie wypisaną w /etc/shells), to opcja --shell oraz zmienne środowiskowe SHELL są ignorowane, chyba że wywołującym jest root.

--session-command=polecenie
    Same as -c, but do not create a new session. (Discouraged.) Please note security advice about TIOCSTI vulnerability below.

-T, --no-pty
    Do not create a pseudo-terminal, opposite of --pty and -P. Please note security advice about TIOCSTI vulnerability below.

-u, --user=użytkownik
    Uruchamia polecenie z efektywnym identyfikatorem użytkownika i identyfikatorem grupy użytkownika.

-w, --whitelist-environment=lista
    Nie resetuje zmiennych środowiskowych określonych w liście (używającej przecinka jako separatora) przy czyszczeniu środowiska do --login. Biała lista jest ignorowana w przypadku zmiennych środowiskowych HOME, SHELL, USER, LOGNAME i PATH.

-h, --help
    Wyświetla ten tekst i wychodzi.

-V, --version
    Wyświetla wersję i wychodzi.

PLIKI KONFIGURACYJNE

runuser odczytuje pliki konfiguracyjne /etc/default/runuser i /etc/login.defs. Istotne dla runuser są następujące pozycje konfiguracji:

ENV_PATH (łańcuch)
    Określa zmienną środowiskową PATH dla zwykłego użytkownika. Wartością domyślną jest /usr/local/bin:/bin:/usr/bin.

ENV_ROOTPATH (łańcuch), ENV_SUPATH (łańcuch)
    Określa zmienną środowiskową PATH dla roota. ENV_SUPATH ma pierwszeństwo. Wartością domyślną jest /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin.

ALWAYS_SET_PATH (wartość logiczna)
    Jeśli jest ustawiona na yes (tak) i nie podano --login i --preserve-environment, runuser zainicjuje PATH.

Zmienna środowiskowa PATH może być odmienna w systemach, w których /bin i /sbin połączono z /usr; na tę zmienną ma też wpływ opcja wiersza poleceń --login oraz ustawienia systemu PAM (np. pam_env(8)).

STATUS ZAKOŃCZENIA

runuser zwykle zwraca status zakończenia wykonywanego polecenia. Jeśli polecenie zostało zabite sygnałem, runuser zwraca numer sygnału plus 128.

Status zakończenia wygenerowany samodzielnie przez runuser:

1
    Ogólny błąd przed wykonaniem żądanego polecenia

126
    Żądane polecenie nie mogło być wykonane

127
    Nie znaleziono żądanego polecenia

PLIKI

/etc/pam.d/runuser
    domyślny plik konfiguracyjny PAM

/etc/pam.d/runuser-l
    plik konfiguracyjny PAM, jeśli podano --login

/etc/default/runuser
    plik konfiguracyjny logindef programu runuser

/etc/login.defs
    globalny plik konfiguracyjny logindef

SECURITY NOTES

If runuser shares a terminal with the original session, it is potentially vulnerable to privilege escalation through TIOCSTI/TIOCLINUX ioctl command injection. There are two built-in ways to prevent this: Either you can use runuser with the -c option, which starts a new session via setsid(2) without a controlling terminal. Or, if your use case requires a controlling terminal, for example an interactive session, you can instruct runuser to use a pseudo terminal with the --pty or -P option.

HISTORIA

Niniejsze polecenie runuser wywodzi się z su z coreutils, które powstało w oparciu o implementację Davida MacKenziego, i polecenia runuser Fedory, autorstwa Dana Walsha.

ZOBACZ TAKŻE

setpriv(1), su(1), login.defs(5), shells(5), pam(8)

ZGŁASZANIE BŁĘDÓW

Problemy należy zgłaszać w

DOSTĘPNOŚĆ

Polecenie runuser jest częścią pakietu util-linux, który można pobrać ze strony