RUNUSER(1)

NAMN
runuser - kör ett kommando med ersättarens användar- och grupp-ID

SYNOPSIS

runuser [flaggor] -u användare [[--] kommando [argument...]]

runuser [flaggor] [-] [användare [argument...]]

BESKRIVNING

runuser kan användas för att köra kommandon med ett ersättande användar- och grupp-ID. Om flaggan -u inte anges, faller runuser tillbaka till su-kompatibel semantik och ett skal körs. Skillnaden mellan kommandona runuser och su är att runuser inte ber om något lösenord (eftersom det endast får köras av root-användaren) och att det använder en annan PAM-konfiguration. Kommandot runuser behöver inte installeras med set-user-ID-behörigheter.

Om PAM-sessionen inte behövs är den rekommenderade lösningen att använda kommandot setpriv(1).

När runuser anropas utan argument är standardinställningen att ett interaktivt skal körs som root.

Av bakåtkompatibilitetsskäl ändrar runuser som standard inte den aktuella katalogen och anger endast miljövariablerna HOME och SHELL (plus USER och LOGNAME om målets användare inte är root). Den här versionen av runuser använder PAM för sessionshantering.

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.

Sedan version 2.38 återställer runuser processresursgränserna RLIMIT_NICE, RLIMIT_RTPRIO, RLIMIT_FSIZE, RLIMIT_AS och RLIMIT_NOFILE.

FLAGGOR

-c, --command=kommando
    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
    Skicka -f till skalet, vilket kan vara användbart eller inte beroende på vilket skal det är.

-g, --group=grupp
    Den primära grupp som ska användas. Denna flagga är endast tillåtet för root-användaren.

-G, --supp-group=grupp
    Ange en kompletterande grupp. Denna flagga är endast tillgängligt för root-användaren. Den första angivna tilläggsgruppen används också som primärgrupp om flaggan --group inte anges.

-, -l, --login
    Starta skalet som ett inloggningsskal med en miljö som liknar en riktig inloggning:

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

        • initierar miljövariablerna HOME, SHELL, USER, LOGNAME och PATH

        • ändringar i målanvändarens hemkatalog

        • sätter argv[0] i skalet till '-' för att göra skalet till ett inloggningsskal

-m, -p, --preserve-environment
    Bevara hela miljön, d.v.s. ange inte HOME, SHELL, USER eller LOGNAME. Flaggan ignoreras om flaggan --login har angetts.

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

    Den här funktionen är främst avsedd för interaktiva sessioner. Om standardinmatningen inte är en terminal, utan t.ex. en pipe (t.ex. echo "date" | runuser --pty -u användare), inaktiveras flaggan ECHO för pseudoterminalen för att undvika rörig utmatning.

-s, --shell=skal
    Kör det angivna skal i stället för standardinställningen. Det skal som ska köras väljs enligt följande regler, i tur och ordning:

        • det skal som anges med --shell

        • det skal som anges i miljövariabeln SHELL om flaggan --preserve-environment används

        • det shell som anges i passwd-posten för målanvändaren

        • /bin/sh

        Om målanvändaren har ett begränsat skal (d.v.s. inte listat i /etc/shells) ignoreras flaggan --shell och miljövariablerna SHELL om inte den anropande användaren är root.

--session-command=kommando
    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=användare
    Kör kommando med det effektiva användar-ID:t och grupp-ID:t för användarnamnet användare.

-w, --whitelist-environment=lista
    Återställ inte de miljövariabler som anges i den kommaseparerade lista när du rensar miljön för --login. Vitlistan ignoreras för miljövariablerna HOME, SHELL, USER, LOGNAME och PATH.

-h, --help
    Visa hjälptext och avsluta.

-V, --version
    Visa version och avsluta.

KONFIGURATIONSFILER

runuser läser konfigurationsfilerna /etc/default/runuser och /etc/login.defs. Följande konfigurationsobjekt är relevanta för runuser:

ENV_PATH (sträng)
    Definierar miljövariabeln PATH för en vanlig användare. Standardvärdet är /usr/local/bin:/bin:/usr/bin.

ENV_ROOTPATH (sträng), ENV_SUPATH (sträng)
    Definierar miljövariabeln PATH för root. ENV_SUPATH har företräde. Standardvärdet är /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin.

ALWAYS_SET_PATH (boolean)
    Om värdet är yes och --login och --preserve-environment inte har angetts initierar runuser PATH.

Miljövariabeln PATH kan vara annorlunda på system där /bin och /sbin är sammanslagna till /usr; denna variabel påverkas också av kommandoradsflaggan --login och PAM-systeminställningen (t.ex. pam_env(8)).

AVSLUTSSTATUS

runuser returnerar normalt utgångsstatusen för det kommando som kördes. Om kommandot dödades av en signal returnerar runuser signalens nummer plus 128.

Avslutningsstatus genereras av runuser själv:

1
    Generiskt fel innan det begärda kommandot utfördes

126
    Det begärda kommandot kunde inte utföras

127
    Det begärda kommandot hittades inte

FILER

/etc/pam.d/runuser
    standardkonfigurationsfil för PAM

/etc/pam.d/runuser-l
    PAM-konfigurationsfil om --login anges

/etc/default/runuser
    runuser-specifik logindef-konfigurationsfil

/etc/login.defs _/etc/login.defs
    global logindef konfigurationsfil

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.

HISTORIK

Detta runuser-kommando härstammar från coreutils su, som baserades på en implementering av David MacKenzie, och Fedora runuser-kommandot av Dan Walsh.

SE ÄVEN

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

FELRAPPORTERING

För felrapporter, använd

TILLGÄNGLIGHET

Kommandot runuser ingår i paketet util-linux som kan hämtas från