sudo(8): Skillnad mellan sidversioner
Admin (diskussion | bidrag) (Skapade sidan med '= sudo(8) = == NAMN == sudo, sudoedit — kör ett kommando som en annan användare == SYNOPSIS == <pre> sudo -h | -K | -k | -V sudo -v [-ABkNnS] [-g grupp] [-h värd] [-p prompt] [-u användare] sudo -l [-ABkNnS] [-g grupp] [-h värd] [-p prompt] [-U användare] [-u användare] [kommando [arg ...]] sudo [-ABbEHnPS] [-C num] [-D katalog] [-g grupp] [-h värd] [-p prompt] [-R katalog] [-T timeout] [-u användare] [VAR=värde] [-i | -s] [kommando [arg ...]] sudoedit [-AB...') |
(Ingen skillnad)
|
Versionen från 31 augusti 2025 kl. 16.03
sudo(8)
NAMN
sudo, sudoedit — kör ett kommando som en annan användare
SYNOPSIS
sudo -h | -K | -k | -V sudo -v [-ABkNnS] [-g grupp] [-h värd] [-p prompt] [-u användare] sudo -l [-ABkNnS] [-g grupp] [-h värd] [-p prompt] [-U användare] [-u användare] [kommando [arg ...]] sudo [-ABbEHnPS] [-C num] [-D katalog] [-g grupp] [-h värd] [-p prompt] [-R katalog] [-T timeout] [-u användare] [VAR=värde] [-i | -s] [kommando [arg ...]] sudoedit [-ABkNnS] [-C num] [-D katalog] [-g grupp] [-h värd] [-p prompt] [-R katalog] [-T timeout] [-u användare] fil ...
BESKRIVNING
sudo låter en behörig användare köra ett kommando som superuser (root) eller som en annan användare, enligt säkerhetspolicyn (vanligen sudoers). Sudo har en insticksarkitektur för policy, loggning och I/O-loggning. Standardpolicyn sudoers konfigureras via /etc/sudoers eller LDAP (se sudoers(5)).
Policyn avgör vilka privilegier användaren har, om autentisering krävs, hur länge inloggningsuppgifter cache:as (typiskt 5 minuter per terminal), och om I/O ska loggas. visudo(8) bör användas för att redigera /etc/sudoers för att undvika syntaxfel.
När sudo anropas som sudoedit är flaggan -e underförstådd: filer redigeras via temporära kopior med policykontroller som förhindrar t.ex. symboliska länkar.
Flaggor
Nedan följer alla relevanta flaggor. Om inte annat anges kan varje flagga anges högst en gång.
- -A, --askpass
- Läs lösenord via ett hjälpprogram (grafiskt eller text). Sökväg kan sättas i SUDO_ASKPASS eller i /etc/sudo.conf (Path askpass ...).
- -B, --bell
- Pinga terminalklockan som del av lösenordsprompten (ingen effekt med askpass).
- -b, --background
- Kör kommando i bakgrunden. Jobbkontroll i skalet fungerar inte för sådana processer.
- -C, --close-from=num
- Stäng alla fildeskriptorer ≥ num före exekvering (minst 3). Kan begränsas av policy (closefrom_override i sudoers).
- -D, --chdir=katalog
- Kör kommando i angiven arbetskatalog (policy kan neka).
- -E, --preserve-env
- Begär att miljövariabler behålls. Policyn kan neka.
- --preserve-env=lista
- Lägg till en kommaseparerad lista av variabler som ska bevaras. Kan upprepas. Policyn kan neka.
- -e, --edit
- Redigera en eller flera filer i stället för att köra ett kommando (motsvarar sudoedit). Sudo skapar temporära kopior, kör editor (från SUDO_EDITOR, VISUAL, EDITOR eller editor-inställningen i sudoers) och skriver sedan tillbaka. Begränsningar för att förhindra otillåten redigering, t.ex.:
- • Symboliska länkar får inte redigeras (>= 1.8.15)
- • Sökvägsled som är skrivbara av anroparen följs inte (>= 1.8.16)
- • Filer i skrivbara kataloger får inte redigeras (>= 1.8.16)
- Enhetsfiler kan aldrig redigeras. Om fil inte finns skapas den. Editorn körs med användarens miljö. Vid fel sparas temporärfilen.
- -g, --group=grupp
- Kör med primärgrupp grupp (namn eller #GID). Om -u inte anges körs som anroparen men med primärgruppen satt till grupp. Sudoers tillåter mål-användarens grupper här om inte -P används.
- -H, --set-home
- Sätt HOME till mål-användarens hemkatalog (kan vara standard beroende på policy).
- -h, --help
- Visa kort hjälputskrift.
- -h, --host=värd
- Kör kommando på angiven värd om policy-plugin stödjer detta. (Sudoers gör normalt inte det.) Kan kombineras med -l för listning av rättigheter på fjärrvärd.
- -i, --login
- Kör mål-användarens skal som inloggningsskal (läser t.ex. .profile, .bash_profile, .login). Med kommando skickas det som -c "kommando". Sudo försöker byta till mål-användarens hemkatalog. Påverkar miljön enligt sudoers(5) (Command environment).
- -K, --remove-timestamp
- Ta bort alla cache:ade autentiseringsuppgifter för användaren (alla terminaler). Kan inte kombineras med kommando. Kräver inget lösenord.
- -k, --reset-timestamp
- Utan kommando: ogiltigförklara aktuell sessions cache; nästa sudo kräver lösenord om policy kräver det. Med kommando: ignorera cache och begär lösenord; uppdaterar inte cache. Kräver inget lösenord för att endast nolla cachen.
- -l, --list
- Utan kommando: lista anroparens (eller den i -U angivna) rättigheter på aktuell värd; upprepas för mer detaljer om policy stödjer det. Med kommando: visa full sökväg och argument om tillåtet; annars avslutas med status 1.
- -N, --no-update
- Uppdatera inte cache:ade uppgifter även om autentisering lyckas. sudo -Nnv kan användas för att testa om autentisering krävs/cachen är giltig.
- -n, --non-interactive
- Fråga aldrig efter inmatning; om lösenord behövs ges fel och avslut.
- -P, --preserve-groups
- Behåll anroparens gruppvektor oförändrad. (Annars sätter sudoers gruppvektorn till mål-användarens grupper. Real/effective GID sätts ändå till mål-användaren.)
- -p, --prompt=prompt
- Anpassad lösenordsprompt. Följande %-ersättningar stöds av sudoers:
- %H = fullständigt värdnamn (FQDN)
- %h = kort värdnamn
- %p = namnet vars lösenord efterfrågas (respekterar rootpw/targetpw/runaspw)
- %U = mål-användare (default root om inte -u)
- %u = anroparens namn
- %% = ett bokstavligt %
- Överstyr SUDO_PROMPT och PAM-prompt om passprompt_override inte är avstängd.
- -R, --chroot=katalog
- Kör kommando i en chroot-miljö (se chroot(8)). Policy kan neka.
- -S, --stdin
- Skriv prompt till stderr och läs lösenord från stdin (i stället för terminal).
- -s, --shell
- Kör skalet i SHELL-miljövariabeln (eller anroparens skal). Med kommando skickas det som -c "kommando". Utan kommando: interaktivt skal.
- -U, --other-user=användare
- Med -l: lista rättigheter för given användare i stället för anroparen. Begränsas av policy; i sudoers får endast root eller användare med särskild ”list”-behörighet (eller rätt att köra vad som helst som root/den användaren) använda detta.
- -T, --command-timeout=sekunder
- Sätt timeout för kommando (avbryts om tiden löper ut). Policyn kan kräva explicit tillåtelse.
- -u, --user=användare
- Kör som annan användare än standard (vanligen root). användare kan vara namn eller #UID. Sudoers kan tillåta UID som saknas i passwd så länge targetpw inte används.
- -V, --version
- Visa version för sudo och laddade plugins; som root visas även byggkonfigurationsflaggor.
- -v, --validate
- Förläng giltighet för cache:ade uppgifter (typiskt 5 min) utan att köra kommando. Beror på policy.
- --
- Markerar slut på sudo-flaggor; efterföljande flaggor skickas till kommando.
Miljövariabler som argument
Miljövariabler kan anges som VAR=värde före kommandot (t.ex. LD_LIBRARY_PATH=/usr/local/lib). De underkastas samma begränsningar som befintliga miljövariabler enligt policy. Med sudoers och setenv/SETENV/ALL kan användaren tillåtas sätta annars förbjudna variabler (se sudoers(5)).
KOMMANDOKÖRNING
När sudo kör ett kommando anger säkerhetspolicyn vilken exekveringsmiljö som används. Vanligtvis sätts real och effektiv UID/GID till mål-användarens värden enligt lösenordsdatabasen, gruppvektorn initialiseras utifrån gruppdatabasen (om inte -P används), och miljö, umask, arbetskatalog m.m. sätts enligt policy.
Säkerhetspolicyn kan bestämma:
- real och effektiv UID
- real och effektiv GID
- kompletterande grupper
- miljövariabler
- arbetskatalog
- filrättighetsmask (umask)
- schemaläggningsprioritet (nice-värde)
Processmodell
Det finns två sätt som sudo kan köra ett kommando:
- **Med pty och monitor**:
Om I/O-loggning används eller policy kräver det skapas en pseudoterminal och en sekundär sudo-process (monitor). Monitorn skapar ny terminalsession, forkar ett barn och kör kommandot via execve(2). Monitorn förmedlar jobbsignaler (t.ex. Ctrl+C) så att kommandot kan pausas/återupptas normalt. När kommandot avslutas returnerar monitorn status till huvudprocessen som loggar och avslutas. (Standard från version 1.9.14 och uppåt när sudoers används.)
- **Utan pty**:
sudo forkar, sätter miljön och kör kommandot direkt via execve(2). Huvudprocessen väntar på status, loggar och avslutas. Om policyn inte har en close-funktion kan kommandot köras direkt utan fork. (Standard före 1.9.14.)
På system med PAM stänger policyns close-funktion PAM-sessionen och kan logga exitstatus.
Signalhantering
När kommandot körs som barnprocess vidarebefordrar sudo signaler (t.ex. SIGINT, SIGQUIT) till kommandot. Dessa reläas endast om kommandot körs i ny pty eller signalen kom från en användarprocess. Detta förhindrar dubbel SIGINT vid Ctrl+C. Signaler som SIGSTOP och SIGKILL kan inte fångas och vidarebefordras därför inte. sudo reläar inte heller signaler som skickats av kommandot självt (förhindrar självdöd).
Specialfall: reboot(8) skickar SIGTERM till alla processer före omstart. sudo undviker att reläa denna till reboot självt, annars kan systemet hamna i halvstängt läge. Skript som kör reboot/shutdown via system() kan dock skapa detta problem – använd exec()-familjen istället.
Insticksmoduler (Plugins)
Plugins anges i /etc/sudo.conf via Plugin-rader. De kan vara dynamiska bibliotek eller inbyggda. Om inga plugins anges används sudoers som policy-, logg- och I/O-plugin. Se sudo.conf(5) och sudo_plugin(5) för detaljer.
RETURVÄRDEN
- Om kommandot körs framgångsrikt returnerar sudo samma exitstatus som kommandot. Om kommandot avslutas med signal skickar sudo samma signal till sig självt.
- Med -l utan kommando: exit 0 om användaren får köra sudo och autentisering lyckas; annars fel.
- Med -l och kommando: exit 0 om kommandot tillåts, annars 1.
- Vid autentiseringsfel, policyfel eller om kommandot inte kan exekveras: exit 1. Felmeddelande skrivs till stderr. Om PATH innehåller ogiltiga kataloger kan stat(2) misslyckas → fel på stderr. (Vanligt vid otillgänglig automounter.)
SÄKERHETSNOTER
sudo försöker vara säkert vid körning av externa kommandon.
- För att undvika ”command spoofing” placeras . och "" (nuvarande katalog) sist i PATH. Policyn kan dessutom ändra eller ersätta PATH.
- Användare bör aldrig få köra kommandon via sudo som ligger i kataloger skrivbara för dem själva. Då kan de ersätta filen och få obegränsad åtkomst.
- Som standard loggas endast det kommando som sudo explicit kör. Om man kör sudo su eller sudo sh gäller inte sudoers-policy för efterföljande kommandon. (I/O-loggning kan dock fånga input/output, men inte som separata poster.) Därför bör man vara försiktig med att ge åtkomst till kommandon som kan ge skalutvägar.
- sudo stänger av core dumps under sin egen körning för att förhindra informationsläckor (de återställs för kommandot). Detta kan ändras med Set disable_coredump false i sudo.conf.
MILJÖVARIABLER
sudo använder följande variabler (faktiskt innehåll styrs av policy):
- EDITOR
- Standardeditor i -e-läge (sudoedit), om varken SUDO_EDITOR eller VISUAL är satta.
- Sätts till mål-användarens mailbox vid -i eller om env_reset gäller i sudoers.
- HOME
- Mål-användarens hem vid -i/-H/-s (om set_home), eller om always_set_home/env_reset används.
- LOGNAME
- Sätts till mål-användarens inloggningsnamn vid -i, om set_logname gäller, eller om env_reset används.
- PATH
- Kan ändras av policy.
- SHELL
- Skal att använda med -s.
- SUDO_ASKPASS
- Hjälpprogram för att läsa lösenord (om -A eller ingen terminal).
- SUDO_COMMAND
- Fullständigt kommando som kördes inkl. argument (trunkeras vid 4096 tecken).
- SUDO_EDITOR
- Standardeditor för sudoedit.
- SUDO_GID
- GID för anroparen.
- SUDO_HOME
- Hemkatalog för anroparen.
- SUDO_PROMPT
- Standardlösenordsprompt (överskrids av -p).
- SUDO_PS1
- Om satt, används som PS1 i det körda programmet.
- SUDO_UID
- UID för anroparen.
- SUDO_USER
- Inloggningsnamn för anroparen.
- USER
- Samma värde som LOGNAME.
- VISUAL
- Editor för sudoedit om SUDO_EDITOR inte är satt.
FILER
/etc/sudo.conf
- Konfigurationsfil för sudo-frontenden.
EXEMPEL
Följande exempel förutsätter en korrekt konfigurerad policy:
- Lista innehåll i en skyddad katalog:
$ sudo ls /usr/local/protected
- Lista hemkatalogen för användaren yaz (på system där ~yaz inte exporteras som root):
$ sudo -u yaz ls ~yaz
- Redigera filen index.html som användaren www:
$ sudoedit -u www ~www/htdocs/index.html
- Visa systemloggar som endast root/adm-grupp får läsa:
$ sudo -g adm more /var/log/syslog
- Kör en editor som jim men med primärgrupp audio:
$ sudoedit -u jim -g audio ~jim/sound.txt
- Stäng av en maskin:
$ sudo shutdown -r +15 "quick reboot"
- Skapa en användningslista för kataloger under /home (via subshell):
$ sudo sh -c "cd /home ; du -s * | sort -rn > USAGE"
DIAGNOSTIK
Felmeddelanden från sudo kan bl.a. vara:
- editing files in a writable directory is not permitted
- sudoedit vägrar redigera filer i kataloger skrivbara av anroparen (för att undvika race condition). Styrs av sudoedit_checkdir i sudoers(5).
- editing symbolic links is not permitted
- sudoedit följer inte symboliska länkar (styrs av sudoedit_follow i sudoers(5)).
- effective uid is not 0, is sudo installed setuid root?
- sudo kördes utan root-privilegier. Binären måste ägas av root och ha setuid-bit satt, och inte ligga på nosuid-monterat filsystem.
- effective uid is not 0, is sudo on a filesystem with the 'nosuid' option ...
- Binären har rätt ägare/behörighet men kördes ändå utan root-privilegier (vanligt på NFS eller nosuid-mount).
- fatal error, unable to load plugins
- Plugins i sudo.conf kunde inte laddas.
- invalid environment variable name
- Någon variabel angiven via -E innehöll '=' i namnet (inte tillåtet).
- no password was provided
- Inget lösenord lästes (t.ex. om stdin är /dev/null).
- a terminal is required to read the password
- Ingen terminal fanns tillgänglig. Lösning: ssh -t eller använd -S/askpass.
- no writable temporary directory found
- sudoedit hittade ingen skrivbar temporärkatalog.
- The "no new privileges" flag is set, which prevents sudo from running as root
- sudo kördes i en container med flaggan ”no new privileges”. Förhindrar setuid. Måste inaktiveras i containerkonfigurationen.
- sudo must be owned by uid 0 and have the setuid bit set
- Binären har fel ägare eller saknar setuid.
- sudoedit is not supported on this platform
- sudoedit stöds ej på systemet.
- timed out reading password
- Lösenordet matades inte in innan timeout (standard 5 minuter).
- you do not exist in the passwd database
- Användarens UID saknas i passwd-databasen.
- you may not specify environment variables in edit mode
- Endast tillåtet att ange miljövariabler när kommando körs, inte i editläge.
SE ÄVEN
su(1), stat(2), login_cap(3), passwd(5), sudo.conf(5), sudo_plugin(5), sudoers(5), sudoers_timestamp(5), sudoreplay(8), visudo(8)
HISTORIK
Se filen HISTORY.md i sudo-distributionen: https://www.sudo.ws/about/history/
FÖRFATTARE
Många personer har bidragit till sudo genom åren. Nuvarande version består huvudsakligen av kod skriven av:
Todd C. Miller
För en fullständig lista, se CONTRIBUTORS.md i distributionen: https://www.sudo.ws/about/contributors/
VARNINGAR (CAVEATS)
- Det finns inget enkelt sätt att hindra en användare från att få ett rootskal om de får köra godtyckliga kommandon via sudo.
- Många program (t.ex. textredigerare) tillåter att man kör kommandon via ”shell escapes”, vilket kringgår sudo:s kontroller. I sudoers kan detta begränsas med noexec.
- Att köra cd via sudo är meningslöst, eftersom skalet inte byter katalog efter att kommandot avslutats:
$ sudo cd /usr/local/protected
Använd istället -D för att byta katalog för det körda kommandot.
- Att köra skalskript via sudo kan exponera samma kärnbuggar som gör setuid-skript osäkra på vissa system (om systemet har /dev/fd/ är det dock oftast säkert).
BUGGAR
Om du hittar ett fel i sudo, rapportera via:
- https://bugzilla.sudo.ws/
- https://github.com/sudo-project/sudo/issues
- eller via e-post till sudo-workers-listan: https://www.sudo.ws/mailman/listinfo/sudo-workers
Säkerhetsproblem ska **inte** rapporteras på Bugzilla, GitHub eller publika listor. Skicka istället till: <sudo@sudo.ws> eller direkt till Todd C. Miller <Todd.Miller@sudo.ws> (PGP-nycklar: https://www.sudo.ws/dist/PGPKEYS).
SUPPORT
Begränsat gratisstöd finns via sudo-users-listan: https://www.sudo.ws/mailman/listinfo/sudo-users
ANSVARSFRISKRIVNING
sudo tillhandahålls ”I BEFINTLIGT SKICK”. Alla uttryckliga eller underförstådda garantier, inklusive men inte begränsade till garantier för säljbarhet eller lämplighet för visst ändamål, friskrivs. Se LICENSE.md i distributionen eller https://www.sudo.ws/about/license/.
COLOPHON
Denna manualsida är en del av sudo-projektet (”execute a command as another user”). Projektets webbplats: https://www.sudo.ws/
HTML-versionen av denna sida hämtades från projektets upstream-repository: https://github.com/sudo-project/sudo Senaste kända commit: 2025-01-21.
Problem med HTML-versionen eller förbättringsförslag för denna colophon (som inte är del av originalmanualen) kan rapporteras till: man-pages@man7.org
Sidslut
Orginalhemsidan på Engelska : https://man7.org/linux/man-pages/man8/sudo.8.html
Det här är en maskinöversättning av Linux man sidor till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på
https://www.linux.se/kontaka-linux-se/
Tack till Datorhjälp som har sponsrat Linux.se med webbhotell.