Bakgrunn
Installasjon
Konfigurasjon
Bruk
Beste praksis
Tips og triks
Bakgrunn
OpenBSDs alternativ til sudoer doas, selv om det ikke fungerer på samme måte som sudo og krever noe konfigurasjon. Det er et akronym for "dedicated openbsd application subexecutor". OpenBSD 5.8, utgitt i 2015, var den første som inkluderte doas. Den ble laget av Ted Unangst etter at han var misfornøyd med kompleksiteten til sudo og hadde problemer med standard sudo-konfigurasjonen.
Den doaskommandoen er enkel ved design og ikke inneholder avanserte funksjoner som kreves for forseggjort sysadmin infrastrukturer. For de fleste er det mer enn nok. Hvis du trenger sudo, installer den med pkg_add sudosom root.
Installasjon
OpenBSD versjon 5.8 og nyere er doasforhåndsinstallert.
Konfigurasjon
For å gi brukere i hjulgruppen tilgang til doas, legg til følgende i /etc/doas.conf. Du trenger root-tilgang for å redigere denne filen.
permit :wheel
Dette vil gi alle brukere i hjulgruppen tillatelse til å utføre kommandoer som enhver bruker.
Hvis du vil at brukere skal kunne skrive inn passordet sitt én gang, og ikke trenger å angi det på en stund, bruk persistalternativet. Her er et eksempel som bare gir tillatelser til hjulgruppen:
permit persist :wheel
Du kan i stedet bruke nopassalternativet hvis du vil at de aldri skal måtte skrive inn passordet sitt:
permit nopass :wheel
Hvis du vil at brukeren "mynewuser" skal ha administratorrettigheter, kan du enten legge dem til hjulgruppen ved å kjøre usermod -G wheel mynewusersom root eller legge til en linje i din /etc/doas.confslik at den ser litt ut som følgende:
permit nopass :wheel
permit nopass mynewuser
Dette eksemplet forutsetter at du ikke trenger at brukerne dine oppgir et passord når du bruker doas. Hvis du vil sette det slik at mynewuser kun har tillatelse til å utføre kommandoer som www-bruker, vil konfigurasjonen være som følger:
permit nopass :wheel
permit nopass mynewuser as www
Hvis du vil at mynewuser bare skal kunne bruke "vim"-kommandoen med doas, bruk følgende konfigurasjon:
permit nopass :wheel
permit nopass mynewuser as www cmd vim
Det finnes andre konfigurasjonsalternativer, men de som dekkes her er de vanligste. Hvis du vil lese mer, kan du bruke kommandoen man doas.conftil å lese doas.conf(5) manpage.
Testing av konfigurasjonsfiler
For å teste en konfigurasjonsfil, bruk doas -C /etc/doas.confkommandoen. Hvis du oppgir en kommando etterpå, f.eks doas -C /etc/doas.conf vim. vil den fortelle deg om du har tillatelse til å kjøre en kommando eller ikke uten å prøve å utføre kommandoen.
Bruk
En bruker kan kjøre kommandoen echo "test"som root ved å bruke kommandoen:
doas echo "test"
En bruker som har tillatelser til å bruke doas for å heve seg til brukeren "www" kan kjøre kommandoen vim /var/www/http/index.htmlsom brukeren "www" ved å bruke kommandoen:
doas -u www vim index.html
Dette er nyttig for noen som administrerer webserveren, men som ikke har fulle superbrukertillatelser.
Beste praksis
Det anbefales sterkt at du bruker tillatelse i stedet for å nekte der det er mulig. Hvis du nekter en bruker å bruke en bestemt kommando, kan de kanskje slippe unna med å bruke en alternativ bane eller navn på den kommandoen hvis den eksisterer. De kan også kopiere kommandoens kjørbare til hjemmekatalogen deres og deretter kjøre den kjørbare filen, og dermed beseire tillatelsessystemet ditt.
Generelt sett er det en bedre idé å bruke doas enn å bruke su fordi ingen trenger å dele root-passordet. Det er ingen sjanse for at noen endrer det, glemmer det og låser alle ute av systemet hvis alle bruker sitt eget passord for root-tilgang. Logger oppbevares i /var/log/secure.
Tips og triks
Du kan beholde alle miljøvariablene dine med keepenv, noe som er nyttig hvis du har editoren satt til noe og ikke vil at den skal endres når du blir en annen bruker. Her er et eksempel med mynewuser:
permit nopass keepenv mynewuser
Noen ganger er det situasjoner der overskriving av hver miljøvariabel kan ødelegge ting, men med setenv kan du velge og vrake hvilke du vil overføre. Her er et eksempel som vil holde editoren innstilt på hva du vil for bruk med git og noen andre ting.
permit nopass setenv { VISUAL EDITOR } mynewuser
Du kan også bruke setenv til å fjerne miljøvariabler (ved å sette en bindestrek foran hver av dem du vil fjerne) eller sette dem til spesifikke ting med et likhetstegn. Hvis du for eksempel ville at den skulle fjerne miljøvariabelen VISUAL og sette EDITOR til vim, ville du bruke denne konfigurasjonslinjen:
permit nopass setenv { -VISUAL EDITOR=vim } mynewuser
Hvis du doashar husket passordet ditt, kan du gjøre for doas -Lå få det til å glemme passordet.