| SU(1) | Användarkommandon | SU(1) |
NAMN¶
su - kör ett kommando med ersättande användar- och grupp-ID
SYNOPSIS¶
su [flaggor] [-] [användare|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
Observera att på system baserade på systemd(1) kan en ny session definieras som en verklig ingångspunkt till systemet. Ur det perspektivet skapar su ingen riktig session (via PAM). Använd verktyg som systemd-run(1) eller machinectl(1) för att starta en fullständig, riktig session.
su gör det:
-m, -p, --preserve-environment
-P, --pty
Hela sessionen kan också flyttas till bakgrunden (t.ex. su --pty - användare -c program &). Om pseudoterminalen är aktiverad fungerar su 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" | 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
SÄKERHETSANMÄRKNINGAR¶
Om su 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 su 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 su använda en pseudoterminal med flaggan --pty eller -P.
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 required 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¶
setpriv(1), login.defs(5), shells(5), pam(8), runuser(1)
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-09-25 | util-linux 2.42.4 |