SU(1) Användarkommandon SU(1)

su - kör ett kommando med ersättande användar- och grupp-ID

su [options] [-] [user|UID [argument...]]

su gör att kommandon kan köras med ett ersättande användar- och grupp-ID.

När su anropas utan att användare har angetts körs ett interaktivt skal som standard som root. När användare har angetts kan ytterligare argument anges, och i så fall skickas de till skalet.

För bakåtkompatibilitet är su standardinställningen att inte ändra den aktuella katalogen och att endast ställa in miljövariablerna HOME och SHELL (plus USER och LOGNAME om målets användare inte är root). Det rekommenderas att alltid använda flaggan --login (i stället för dess genväg -) för att undvika biverkningar som orsakas av blandade miljöer.

Den här versionen av su använder PAM för autentisering, konto- och sessionshantering. Vissa konfigurationsflaggor som finns i andra su-implementationer, t.ex. stöd för en wheel-grupp, måste konfigureras via PAM.

su är främst avsett för icke-privilegierade användare, och den rekommenderade lösningen för privilegierade användare (t.ex. skript som körs av root) är att använda kommandot runuser(1), som inte kräver autentisering och ger separat PAM-konfiguration. Om PAM-sessionen inte krävs alls är den rekommenderade lösningen att använda kommandot setpriv(1).

Observera att su i samtliga fall använder PAM (pam_getenvlist(3)) för att göra den slutliga miljömodifieringen. Kommandoradsflaggor som --login och --preserve-environment påverkar miljön innan den modifieras av PAM.

Sedan version 2.38 återställer su 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

Ange den primära gruppen. Denna flagga är endast tillgängligt 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.

Note that on systemd(1)-based systems, a new session may be defined as a real entry point to the system. However, su does not create a real session (by PAM) from this point of view. You need to use tools like systemd-run(1) or machinectl(1) to initiate a complete, real session.

su gör det:

•clear all the environment variables except TERM, COLORTERM, NO_COLOR and variables specified by --whitelist-environment
•initialize the environment variables HOME, SHELL, USER, LOGNAME, and PATH
•change to the target user’s home directory
•set argv[0] of the shell to '-' in order to make the shell a login shell

-m, -p, --preserve-environment

Bevara hela miljön, d.v.s. ange inte HOME, SHELL, USER eller LOGNAME. Denna flagga 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., su --pty - user -c application &). If the pseudo-terminal is enabled, then su 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" | su --pty), inaktiveras flaggan ECHO för pseudoterminalen för att undvika röriga utdata.

-s, --shell skal

Kör det angivna skal i stället för standardinställningen. Om målanvändaren har ett begränsat skal (dvs. inte listat i /etc/shells) ignoreras flaggan --shell och miljövariablerna SHELL om inte den anropande användaren är root.

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

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

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

Efter att ha mottagit antingen SIGINT, SIGQUIT eller SIGTERM avslutar su sitt barn och avslutar därefter sig själv med den mottagna signalen. Barnet avslutas med SIGTERM, efter ett misslyckat försök och 2 sekunders fördröjning dödas barnet med SIGKILL.

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

FAIL_DELAY (nummer)

Fördröjning i sekunder om autentiseringen misslyckas. Talet måste vara ett icke-negativt heltal.

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

su returnerar normalt utgångsstatusen för det kommando som det utförde. Om kommandot stoppades av en signal returnerar su signalens nummer plus 128.

Exitstatus genereras av su 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/su

standardkonfigurationsfil för PAM

/etc/pam.d/su-l

PAM-konfigurationsfil om --login anges

/etc/default/su

kommandospecifik logindef-konfigurationsfil

/etc/login.defs _/etc/login.defs

global logindef konfigurationsfil

If su 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 su 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 su to use a pseudo terminal with the --pty or -P option.

Av säkerhetsskäl loggar su alltid misslyckade inloggningsförsök till filen btmp, men den skriver inte alls till filen lastlog. Den här lösningen kan användas för att kontrollera su beteende genom PAM-konfiguration. Om du vill använda modulen pam_lastlog(8) för att skriva ut varningsmeddelanden om misslyckade inloggningsförsök måste pam_lastlog(8) konfigureras så att den även uppdaterar filen lastlog. Till exempel genom att:

session krävs pam_lastlog.so nowtmp

Detta su-kommando härstammar från coreutils su, som baserades på en implementation av David MacKenzie. Util-linux-versionen har omarbetats av Karel Zak.

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

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

Kommandot su 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