Boken Om Linux/Kapittel 8
8: Passord og tilganger
redigerLinux-kommandoene jeg går igjennom i dette kapitlet har med passord og brukertilganger (tilgangsrettigheter) til fil og katalog å gjøre. Feil her kan gjøre at du mister tilgang til systemet.
Endre Linux-passord
redigerDu bør skifte passord med jevne mellomrom for å hindre at uvedkommende kan komme inn i systemet. De som er opptatt av å velge sikre passord finner mye informasjon om dette på Internett, f.eks. «How to pick a safe password» av Eric Wolfram:
http://wolfram.org/writing/howto/password.html
Kommandoen passwd | endre brukerpassord |
Kommando: | passwd [-u brukernavn] |
Funksjon: | Endrer ditt eller andres passord |
Opsjoner: | Se også Linux-man-sidene. |
-u bruker | Endring av passord til bruker; bare systemadministrator kan endre passord til andre brukere. |
Skriver du bare passwd, kan du endre ditt passord på systemet
Figur 8.1: Endre passord fra GNOME- eller KDE- brukergrensesnittet. Eksempel: Du ønsker å endre passordet til deg selv (david):
[david@nittedal david]$ passwd
Changing password for david
(current) UNIX password: dfhg657ui
New UNIX password: nmjklo9897
Retype new UNIX password: nmjklo9897
passwd: all authentication tokens updated successfully NB! Passordene vises ikke på skjermen. Husk å trykke Enter etter hver gang du har skrevet et passord. Av sikkerhetsgrunner blir passordene du skriver ikke synlige på skjermen. Klarer du å skrive det nye passordet riktig inn to ganger, får du et nytt passord. Det er viktig å huske passordet ditt. Uten passordet kommer du ikke inn i systemet. Hvis du har passordet til systemadministrator (root), kan du endre og fjerne alle andre passord. Har du ikke root-passordet, må du boote Linux-systemet fra diskett og montere root-filsystemet. Det er da relativt enkelt å endre nøkkelfilene /etc/passwd og /etc/group. Hvilke rettigheter(autorisering) du har i Linux, er avhengig av hva du valgte når du installerte Linux. Alternativene er SHA-256/512/MD5 password, Shadow password, LDAP-autentisering, Kerberos 5, SMB-autentisering og Windbind-autentisering . Informasjons om brukere kan lagres i en buffer eller man kan bruke Hesiod, LDAP, NIS eller Winbind. Både SMB- og Windbind autentisering brukes i forbindelse med integrasjon med Windows-miljø. Bruker du Windows share enheter eller Active Directory (AD) velges SMB- og Windbind autentisering. NIS velges hvis man ønsker integrasjon med et Unix-miljø. I alle valgene snakker vi om sentralstyring av brukerkonfigurasjonen (passord og gruppe). Snakk derfor med systemadministrator hvis du har spørsmål rundt autorisering på nettverket. Har du derimot valgt Shadow-passord, får du litt bedre sikkerhet på Linux-systemet ditt, da det krypterte passordet blir plassert i filen /etc/shadow i stedet for i /etc/password. Filen /etc/shadow-filen har du ikke muligheten til å lese som vanlig bruker. Derimot kan du lese /etc/password som vanlig bruker. Har du også valgt MD5-passord, kan passordet ditt bestå av opptil 256 tegn. Har du ikke valgt MD5, må passordet normalt bestå av minst 8 tegn. Det kan bestå av mer enn 14 tegn, men bare de 14 første tegnene (på noen Unix-dialekter er det 5 eller 8) er signifikante. Passordet kan aldri begynne med et tall eller et spesialtegn. Når du er root kan du bestemme antall dager før brukeren kan forandre passordet sitt. Du kan også tvinge brukerne til å skifte passord etter en vis tid. Passordet må bestå av minst ett spesialtegn (ikke kontrolltegn) eller tall. Du har ikke lov å velge et passord som er brukt tidligere. De forskjellige passordparameterne kan endres. Det finnes ingen begrensninger for root (systemadministrator). Root kan skifte passord for alle brukere. Root er den eneste brukeren som kan definere passord for både seg selv og andre brukere. Ønsker du å fjerne passordet til en bruker, kan u-opsjonen velges sammen med passwd-kommandoen:
[david@nittedal david]$ passwd -u nils Du trykker bare Enter når systemet spør etter det nye passordet. Det hemmelige (krypterte) passordet blir under Linux plassert i filen /etc/passwd. Er sikkerhetsnivået gradert til Shadow-password eller C2 eller B1, blir kodet passord plassert i en egen krypteringsfil /etc/shadow. Dette er også standard under Unix V.4. Passordparametere settes opp under Linux i filene /etc/passwd/etc/shadow/etc/pam.conf (Linux-PAM-fil) Se også: su, mask, chgrp, chown
Endre aktiv bruker-id – su
redigerMed kommandoen su kan du skifte bruker-id. Ønsker du å være en annen "bruker-id", med forskjellige brukerrettigheter, tilganger og en annen hjemmekatalog, forutsettes det at du kjenner navnet og passordet til den andre brukeren. su er en meget grei kommando å bruke når du trenger å være systemadministrator (root) i en kort periode.
Kommandoen su | endre aktiv bruker-id |
Kommando: | su [-] [-c kommando] [-l] [brukernavn] [argument] |
Funksjon: | Skifter bruker-id |
Opsjoner: | Se også Linux-man-sidene. |
- | Lager et nytt skall som fungerer som et login-skall; alle miljøparametere blir endret. Unntaket er variablene TERM, HOME og SHELL. Skallet leser inn brukerens login-filer (.profile, .bashrc) og utfører det som står der, for eksempel flytte bruker-id til hjemmekatalog. |
-c kommando | Utfører bare kommandoen som den spesifiserte bruker |
-l | Samme funksjon som - ; her kan du operere som annen bruker med bestemte skall-argumenter. |
bruker | Bruker-id du ønsker å skifte til. Sjekk bruker-id fra filen /etc/passwd. |
Argument: | Her kan du for eksempel sette skall-variabler. |
Eksempler:
[david@nittedal david]$ su vigdis Her endrer jeg bruker-id til vigdis uten å laste opp vigdis' skall-miljø.
[david@nittedal david]$ su - Her endrer jeg bruker-id til systemansvarlig (root). Jeg laster samtidig opp roots skall-miljø.
[david@nittedal david]$ su -c “init 2"
Her har jeg bruker-id til systemadministrator (root) mens kommandoen “init 2" kjøres (systemet kjører ned til kjørenivå 2). Passordparametre settes opp under Linux i filene /etc/passwd /etc/pam.conf (Linux-PAM-fil) Se også: passwd, mask, chgrp, chown
Linux-tilgangskoder
redigerLinux har tre typer tilganger (tilgangsrettigheter) til filer og kataloger:
tilgang til lesingtilgang til skrivingtilgang til kjøring av filen eller det som ligger i katalogen Tilgangskoder (tilgangsrettigheter) setter du for hver av de fire brukerkategoriene u, g, o og a. Brukerkategoriene er: u -eier (user) g -gruppe (group) o -andre (other) a -alle (all) Siste a (all) er bare en opsjon til chmod som betyr «ugo» - og ingen egen kategori. Eieren er som regel den som har opprettet filen. Gruppen er alle dem som tilhører samme gruppe som eieren av filen. Grupper blir definert av systemadministrator. Brukere som ikke tilhører eierens gruppe, blir definert som andre (other). En fil kan beskyttes på tre nivåer. Man har tilgangsrettigheter for eier, for medlemmer i gruppen og for alle de andre. Skal alle ha full tilgang, må du tildele lese- og skriverett til (u) eier, (g) gruppe, og (o) andre. Du ser hvilke tilgangskoder en fil eller katalog har med ls-kommandoen.
[david@nittedal david]$ ls -la tekst
total 20
-rw-r--r-- 1 david Support 544 Oct 22 23:21 tekst
Figur 8.2: Fra KDE Konqueror kan du se hvilke tilgangskoder som er satt
Utskriften forteller oss:
total 20 -totalt antall blokker som katalogen bruker
-rw-r--r-- -filtype og tilgangskoder 1 -antall linker filen har (dvs. en fysisk fil kan ha flere navn) david -navnet på eieren av filen Support -navnet på gruppen som filen er medlem av 544 -antall bytes (tegn) filen består av Oct 22 23:21 -tidspunktet for siste endring av filen tekst -filens navn Som nevnt i kapittel 6, angir første tegn filtypen. De 9 neste tegnene er tilgangskodene som beskrives nedenfor. Du kan gi følgende tilgangskoder:
r, lese (read), dvs. rettighet til å lese innholdet i en fil til skjerm eller skriver. Har du en katalog, kan du lese innholdet. w, skrive (write), dvs. rettighet til å endre på filens innhold. Har du en katalog, kan én eller flere av filene i katalogen slettes, eller det kan opprettes nye filer. x, utføre (execute), dvs. tillatelse til å kjøre eller åpne en fil, eller søke i katalogen. Du kan bruke alle mulige kombinasjoner av disse rettighetene. De tre første tegnene i tilgangskoden viser eierens rettigheter (u-user). De tre neste gjelder gruppen (g-group), og de tre siste viser rettighetene til alle andre (o-other). Vil du kjøre et program eller en kommandofil, kreves det at du har tilgangskode for å kjøre. Ønsker du å lese eller skrive en fil, må du ha tilgangskode til katalogen og lese- eller skrivetilgang til filen. Skal du forandre tilgangskoder til en fil, må du ha skrivetilgang til katalogen filen ligger på. Eksempel på tilgangsrettigheter:
-rwxrw-r--- Vanligvis er tilgangskodene:
rw for bruker
r for gruppe
r for andre Lager du en kommandofil (se kapittel 16) med vi eller emacs (se kapittel 12), må du derfor sette på x for å kunne kjøre programmet. Du må forandre tilgangskoden med kommandoen chmod.
Endre tilgangskoder – chmod
redigerKommandoen for å endre tilgangskodene er chmod. Med denne kommandoen kan du endre de forskjellige tilgangskodene til én eller flere filer, eller til en katalog. Det er som regel bare eier av filen og systemadministrator som kan endre tilgangskodene.
Kommandoen chmod | endre tilgangskoder |
Kommando: | chmod [-R][modus] [argument] eller chmod [hvem]+ - =[tillatelse ...] fil/katalog ... |
Funksjon: | Endrer tilgangskoder til filer og kataloger; endrer lese-, skrive- og kjørerettighetene til filer og kataloger |
Argument: | Fil, katalog og/eller jokere |
Opsjoner: | Se også Linux-man-sidene. |
-R | Bruker du opsjonen -R, vil kommandoen utføres rekursivt, dvs. fra en spesifisert katalog og alle tilhørende underkataloger. Bruk denne opsjonen med forsiktighet! |
Modus: | Modus består av hvem tilgangen skal gjelde for, hvordan tilgangskoden skal endres, og hvilken tilgangskode som skal endres. Disse kodene kan angis oktalt eller i ASCII-kode. (Se også på kommandoen umask.) |
Tilgangen gjelder for:
u user eier g gruppe eierens gruppe o other alle utenom gruppe og eier a alle alle inkludert eier
Hvis ikke det blir spesifisert hvem tilgangen gjelder for, gjelder chmod-kommandoen for alle.
Hvordan tilgangen skal endres:
+ gir rettighet - fratar rettighet = setter rettighet
Tilgangskoder som kan endres:
r lese w skrive x utføre - ingen tilgang
Spesielle tilgangskoder:
s setter eier-id eller gruppe når filen blir utført t setter sticky bit (filen blir satt opp i RAM) l Lås ved tilgang; bare én bruker kan få tilgang til filen om gangen
Tilgangskode s gjør det mulig å definere en bestemt eier og gruppe når filen blir utført. chmod u+s setter brukernavn for filen, og chmod g+s setter gruppenavn på filen. Alle andre kombinasjoner har ingen effekt. Programmer som har satt sticky bit blir automatisk plassert i internminnet. Derfor kalles det sticky bit (Sticky = klebrig, dvs. programmet "klistrer" seg fast i internminnet). Bare chmod u+t setter sticky bit. Ingen andre kombinasjoner med t har effekt. Utføringen av disse programmene vil derfor gå meget raskt. Hvor lønnsomt det er å ha sticky bit satt på noen programmer, er avhengig av internminnet, diskstørrelse, programstørrelse og maskinarkitektur. Bare systemadministrator kan sette sticky bit på bestemte programmer. NB! Det er ikke noe poeng å sette sticky bit på tekstfiler. Tilgangskoden l gjør at filen blir låst for alle andre når en bruker får tilgang til den; det betyr at bare én bruker kan bruke filen om gangen. Tegnene som angir opsjoner, må oppgis i rekkefølgen
Hvem Hvordan Hvilken For eksempel: g-r Alternativet til tilgangskodene r, w, x og - er å bruke et 3-sifret oktalt tall:
Kode | Betyr | Tilsvarer |
7 | lese-, skrive- og kjøretilgang | rwx |
6 | lese- og skrivetilgang | rx |
5 | lese‑ og kjøretilgang | rx |
4 | lesetilgang | r |
3 | skrive- og kjøretilgang | wx |
2 | skrivetilgang | w |
1 | kjøretilgang | x |
0 | ingen tilgang | - |
Første siffer gjelder eier, andre siffer går på gruppe, mens det tredje sifferet går på andre brukere.
Figur 8.4: Fra KDE Konqueror eller GNOME Nautilus kan du også endre på tilganger Eksempler:
[david@nittedal david]$ chmod u+x program Eier gis rett (tilgang) til å utføre filen program.
[david@nittedal david]$ chmod o+xw program Andre brukere gis rett (tilgang) til å utføre og skrive til katalogen program.
[david@nittedal david]$ chmod a+rwx batch Alle gis rett til å lese, skrive og utføre filen batch.
[david@nittedal david]$ chmod g-r brev Alle i din gruppe mister retten til å lese innholdet av filen brev.
[david@nittedal david]$ chmod ug=rwx rapport Du og alle i din gruppe får alle rettighetene til filen rapport.
[david@nittedal david]$ chmod g+r, o+r tekst Alle i gruppen og alle andre får lesetilgang til filen tekst.
[david@nittedal david]$ chmod +x ikke.viktig Gir alle brukere muligheten til å utføre programmet ikke.viktig
[david@nittedal david]$ chmod 777 ikke.viktig Gir alle brukere retten til å lese, skrive og utføre filen ikke.viktig.
[david@nittedal david]$ chmod +l datafil Med en gang filen datafil er tatt i bruk, blir den låst for andre.
[david@nittedal david]$ chmod u+t calc Her setter systemadministrator sticky bit på programmet calc. Dette programmet vil dermed bli plassert i maskinens internminne. Se også: ls, chgrp, chown
Endre context koder – chcon
redigerKjører du SELinux modulen vil sikkerheten i ditt Linux system være mer omfattende. Kommandoen for å endre disse nye context kodene er chcon. Med denne kommandoen kan du endre de forskjellige context til én eller flere filer, eller til en katalog. Bruk kommandoene ls for å se innholdet i katalogen.
[david@nittedal david]$ ls -Z
[david@nittedal david]$ ls -scontext I eksemplet under endrer vi contexten til httpd_sys_content_t
[david@nittedal david]$ chcon -t httpd_sys_content_t * Mer help får du ved å skrive:
[david@nittedal david]$ chcon -- help
Endre på eier – chown
redigerMed kommandoen chown kan du endre eierforholdet til filer og kataloger. Når du skifter eierforhold til en fil eller katalog, blir filen eller katalogen ikke flyttet.
Kommandoen chown | endre eier |
Kommando: | chown [-R] [eier] [gruppe] [argument] ... |
Funksjon: | Endrer eierforhold til filer og kataloger |
Eier: | Eier kan være brukernummer eller brukernavn. |
Eier/gruppe: | Ny eier eller gruppe |
Argument: | Fil, katalog og/eller jokere |
Opsjoner: | Se også Linux-man-sidene. |
-R | Bruker du opsjonen -R, vil kommandoen utføres rekursivt, dvs. fra en spesifisert katalog og alle tilhørende underkataloger. |
Eier kan enten være brukernavn eller brukernummer. Vanligvis kan bare eier eller systemadministrator endre på eier eller gruppe til en fil eller katalog. Eksempler:
[david@nittedal david]$ chown erik * Her blir erik eier av alle filene i aktuell katalog (men ikke av systemfiler, for eksempel .profile).
[david@nittedal david]$ chown david /usr/david/* Her blir david eier av alle filene i katalogen /usr/david.
[david@nittedal david]$ chown 555 annes.fil Her endrer jeg eier av annes.fil til bruker-id nummer 555. Systemfiler: /etc/passwd, /etc/group Se også: chgrp og chown
Endre gruppe-id – chgrp
redigerEieren av en fil kan endre gruppetilhørighet til filer og kataloger. De som er medlemmer av den nye gruppen, har tilgang hvis gruppetilgangsrettighetene er satt.
Kommandoen chgrp | endre gruppe-id |
Kommando: | chgrp [-R][gruppe] [argument] ... |
Funksjon: | Endrer gruppemedlemskap til filer og kataloger |
Gruppe: | Gruppenavn eller gruppenummer (gruppe-id) |
Argument: | Fil, katalog og/eller jokere |
Opsjoner: | Se også Linux-man-sidene. |
-R | Bruker du opsjonen -R, vil kommandoen utføres rekursivt, dvs. fra en spesifisert katalog og alle tilhørende underkataloger. |
Gruppe kan enten være gruppenavn eller gruppenummer. Vanligvis kan bare eier eller systemadministrator endre gruppen til en fil eller katalog.
Figur 8.5: Fra GNOME Nautilus (Fedora) kan du også endre filgruppe Eksempler:
[david@nittedal david]$ chgrp teknisk * Skifter gruppetilhørigheten for alle filer i den aktuelle katalogen til gruppen teknisk.
[david@nittedal david]$ chgrp teknisk .* Skifter gruppetilhørighet til systemfilene.
[david@nittedal david]$ chgrp Support * Skifter gruppetilhørighet for alle filene i den aktuelle katalogen til gruppen Support.
[david@nittedal david]$ chgrp Support .* Skifter gruppetilhørighet til systemfilene.
[david@nittedal david]$ chgrp 540 tekstfil I det siste eksempelet bruker jeg gruppenummer 540. Ved å se på filen /etc/group finner du ut hvilken gruppe 540 er. Se også: chown, chmod, mask
Endre aktiv gruppe – newgrp
redigerEn bruker kan være medlem av flere grupper, men bare aktiv i en gruppe om gangen. Med newgrp-kommandoen kan du midlertidig skifte gruppetilhørighet til en annen gruppe som du er medlem av. Alle filer som du lager, får nå det nye gruppenavnet.
Kommandoen newgrp | endre aktiv gruppe |
Kommando: | newgrp [argument] |
Funksjon: | Skifter brukerens aktive gruppe |
Gruppe: | Gruppenavn eller gruppenummer |
Argument: | En gruppe du er medlem av, definert i /etc/group |
Opsjoner: | Se også Linux-man-sidene for bash og tcsh |
Ved gruppeskifte blir et nytt skall startet opp. For brukere som er satt opp i bash-skallet, vil forskjellige skall-parametere bli null når du skifter gruppe. Skifter du gruppe for eksempel i tcsh-skall, vil history-tabellen bli nullstilt, og du må trykke <Ctrl-d> for å logge deg ut. newgrp uten argumenter gjør at brukeren kommer tilbake til den gruppen som er definert i /etc/passwd. For å skifte over til en annen gruppe må du være definert i én eller flere grupper i filen /etc/group. Når du skifter gruppe, får du tilgang til filer og kataloger den nye gruppen har tilgang til. Eksempel:
[david@nittedal david]$ newgrp Support Når denne kommandoen utføres, får alle filene som denne brukeren lager gruppenavnet Support. Brukeren vil også ha muligheten til å få tilgang til filer og kataloger som er gruppen Support har tilgang til. Se også: chgrp, chown
Faste tilgangskoder – umask
redigerHver gang du oppretter en fil eller en katalog, brukes en fast verdi for tilgangsrettighetene til filen eller katalogen. Dette kombinasjonen av tilgangsrettigheter kalles brukerens umask-verdi. Verdien som settes, er som regel 022 (oktalt), som gir alle brukerne lesetilgang. Det første sifferet setter tilgangskoden for brukeren selv, det andre for gruppen og det tredje for alle andre brukere
Figur 8.6: Tilgangskoder på filer og kataloger fra Konqueror under SuSE Linux Kjører du bash-skallet, settes umask-kommandoen i filen .profile, som utføres av alle bash-brukere ved innlogging. Hvis du ikke finner umask-kommandoen i din lokale .profile er den med stor sannsynlighet satt opp globalt i /etc/profile. På min SuSE maskin finner jeg følgende i min lokale .profile.
elboth@suselap:~> more .profile
# Sample .profile for SuSE Linux
test -z "$PROFILEREAD" && . /etc/profile
... I test sjekkes det om variabelen $PROFILEREAD er satt til null. Som standard er denne satt til null i SuSE Linux og derfor vil den globale /etc/profile-filen kjøres. Den har blant annet følgende innhold:
elboth@suselap:~> more /etc/profile
#
# The user file-creation mask
#
umask 022
... Vi ser her at umask 022 er satt som standard for alle bash-skall brukere som ikke har definert umask i noen lokal konfigurasjonsfil. Du kan også lage en $HOME/.bash_profile for hver bruker. Denne filen blir utført når brukeren logger inn som bash-bruker. Det kan også være lurt å ha konfigurasjonsfilen $HOME/.bashrc. Denne filen blir utført av alle ikke-innloggingskopier av bash. Dersom .bash_profile mangler, blir .profile brukt i stedet. Hvis du er definert som tcsh-skall bruker i stedet for bash-bruker, benyttes den globale konfigurasjonsfilen/etc/csh. Lokalt kan umask-kommandoen utføres i enten $HOME/.tcshrc ved innlogging, eller i alle nye kopier av tcsh. Har du ingen .tcshrc-fil, blir .cshrc brukt i stedet, hvis denne filen finnes. Bruker du Korn-skall, kan umask-kommandoen settes opp i .profile eller .kshrc.
Kommandoen umask | faste tilgangskoder |
Kommando: | umask [argument] |
Funksjon: | Setter tilgangskoden som automatisk blir satt på filer og kataloger du lager |
Argument: | 3 tall; maksimalverdi for hvert tall er 7.1 oktalt tall med 3 sifre; maksimalverdi for hvert siffer er 7. |
Opsjoner: | Se også Linux-man-sidene |
Skriver du umask uten argument, får du vite umask-verdien som er satt. Man bruker oktalverdier. Sammenhengen mellom desimal-, oktal- og binær-verdier ser du i tabellen under:
Desimalverdi | Oktalverdi | Binærverdi |
0 | 0 | 000 |
1 | 1 | 001 |
2 | 2 | 010 |
3 | 3 | 011 |
4 | 4 | 100 |
5 | 5 | 101 |
6 | 6 | 110 |
7 | 7 | 111 |
0 = tilgangskoden er slått på (fra den binære tabellen gir 000=rwx) 1 = tilgangskoden er slått av (fra den binære tabellen gir 111=---) Eksempel:
Figur 8.7: Eksempel på bruk av umask-kommandoen Med umask-verdi på 073 vil alle filene som du lager, ha tilgangskodene rwx for deg, ingen rettigheter for dem som er medlem i din gruppe, mens alle andre får leserettigheter til dine filer. umask uten noen argumenter viser hva umaskverdien er satt til i øyeblikket. Eksempler:
[david@nittedal david]$ umask
022 Du har som filens eier lese- og skriverettighet. Gruppen og andre har bare lesetilgang.
[david@nittedal david]$ umask
042 Medlemmer av gruppen har skriverettigheter og alle andre leserettigheter. Som filens eier får du lese- og skriverettighet. Se også: chmod, csh, sh
Oppgaver til kapittel 8
redigerOppgave 8.1 Hvem eier filen /usr/bin/who? Beskriv hvordan du finner det ut.
Oppgave 8.2 Hva er filbeskyttelsen på filen /boot/vmlinux? Beskriv hvordan du finner det ut.
Oppgave 8.3 Sett filbeskyttelsen på filen test slik at ingen fra din gruppe kan endre den. Må du gjøre noe med katalogen?
Oppgave 8.4 Har noen andre enn deg selv lov til å redigere på noen av dine filer?
Oppgave 8.5 Hva er forskjellen mellom o (other) og a (all)?
Oppgave 8.6 Hva skjer hvis du fratar deg selv alle rettigheter?
Oppgave 8.7 Opprett følgende tekstfiler med tilgangskoder: Filnavn Tilgangskoder datafil1 rwx rwx rwx datafil2 r-- --- --- datafil3 rwx --x --x datafil4 rw- r-- ---