Scroll to navigation

RUNUSER(1) Användarkommandon 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.

Observera att runuser alltid använder PAM (pam_getenvlist(3)) för den slutliga ändringen av miljön. Kommandoradsflaggor som --login och --preserve-environment påverkar miljön innan den ändras av 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

Skicka kommando till skalet med flaggan -c. Skapar en ny session via setsid(2). Se --session-command för att behålla samma 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. Alternativet är bara tillgängligt för root-användaren.

-G, --supp-group=grupp

Ange en kompletterande grupp. Alternativet är bara 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:

•rensar alla miljövariabler utom TERM, COLORTERM, NO_COLOR och variabler som anges med --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

Skapa en pseudoterminal för sessionen. Den oberoende terminalen ger bättre säkerhet eftersom användaren inte delar terminal med den ursprungliga sessionen. Se säkerhetsråden om TIOCSTI-sårbarheten nedan.

Hela sessionen kan också flyttas till bakgrunden (t.ex. runuser --pty -u användare -- kommando &). Om pseudoterminalen är aktiverad fungerar runuser som en mellanhand mellan sessionerna (synkroniserar standard in och standard ut).

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

Samma som -c, men skapa inte en ny session. (Avråds.) Se säkerhetsråden om TIOCSTI-sårbarheten nedan.

-T, --no-pty

Skapa inte en pseudoterminal; motsatsen till --pty och -P. Se säkerhetsråden om TIOCSTI-sårbarheten nedan.

-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

global logindef konfigurationsfil

SÄKERHETSANMÄRKNINGAR

Om runuser delar terminal med den ursprungliga sessionen kan programmet vara sårbart för utökade privilegier genom kommandoinjektion via ioctl-anropen TIOCSTI/TIOCLINUX. Det finns två inbyggda sätt att förhindra detta: använd runuser med flaggan -c, som startar en ny session via setsid(2) utan styrande terminal. Om användningsfallet kräver en styrande terminal, exempelvis en interaktiv session, kan du i stället låta runuser använda en pseudoterminal med flaggan --pty eller -P.

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 felhanteraren <https://github.com/util-linux/util-linux/issues>.

TILLGÄNGLIGHET

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-09-25 util-linux 2.42.4