RUNUSER(1) Användarkommandon RUNUSER(1)

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

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

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

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.

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

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

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

/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

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.

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

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

För felrapporter, använd felhanteraren https://github.com/util-linux/util-linux/issues.

Kommandot runuser ingår i paketet util-linux som kan hämtas från Linux Kernel Archive https://www.kernel.org/pub/linux/utils/util-linux/.

2026-05-18 util-linux 2.42.1