| SU(1) | Användarkommandon | SU(1) |
NAMN
su - kör ett kommando med ersättande användar- och grupp-ID
SYNOPSIS
su [options] [-] [user|UID [argument...]]
BESKRIVNING
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.
FLAGGOR
-c, --command kommando
-f, --fast
-g, --group grupp
-G, --supp-group grupp
-, -l, --login
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:
-m, -p, --preserve-environment
-P, --pty
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
Det skal som ska köras väljs enligt följande regler, i tur och ordning:
--session-command=kommando
-T, --no-pty
-w, --whitelist-environment lista
-h, --help
-V, --version
SIGNALER
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.
KONFIGURATIONSFILER
su läser konfigurationsfilerna /etc/default/su och /etc/login.defs. Följande konfigurationsobjekt är relevanta för su:
FAIL_DELAY (nummer)
ENV_PATH (sträng)
ENV_ROOTPATH (sträng), ENV_SUPATH (sträng)
ALWAYS_SET_PATH (boolean)
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
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
126
127
FILER
/etc/pam.d/su
/etc/pam.d/su-l
/etc/default/su
/etc/login.defs _/etc/login.defs
SECURITY NOTES
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
HISTORIK
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.
SE ÄVEN
FELRAPPORTERING
För felrapporter, använd felhanteraren https://github.com/util-linux/util-linux/issues.
TILLGÄNGLIGHET
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 |