programmera.net -> linux -> normal     för utskrift      info@programmera.net

Filsystemets säkerhet

1. Filens rättigheter
2. Ett exempel: games
3. Ett exempel: secret

1. Filens rättigheter

Alla filer och mappar har säkerhetsinställningar på tre nivåer:

  1. user (för ägaren)
  2. group (för gruppen)
  3. other (för alla användare)
Dessa rättigheter lagras i filens "inode" och är alltså en integrerad del av filsystemet. För att se rättigheterna på filer och mappar i en katalog kan du skriva:
[olle@dev1]$ ls -l /usr/local
totalt 32
drwxr-xr-x 2 root root 4096 2007-09-11 17:31 bin
drwxr-xr-x 2 root root 4096 2007-08-06 11:08 etc
drwxr-xr-x 2 root root 4096 2007-08-06 11:08 games
drwxr-xr-x 2 root root 4096 2007-08-06 11:08 include
drwxr-xr-x 3 root root 4096 2007-08-06 12:15 lib
lrwxrwxrwx 1 root root    9 2007-08-06 11:08 man -> share/man
drwxr-xr-x 2 root root 4096 2007-08-06 11:08 sbin
drwxr-xr-x 8 root root 4096 2007-08-06 11:21 share
drwxr-xr-x 2 root root 4096 2007-08-06 11:08 src
Om vi tittar på katalogen "games" ser vi att första raden börjar med "drwxr-xr-x".
  • Det första "d"-et betyder directory, alltså är "games" en mapp.
  • Nästa 3 tecken "rwx" beskriver rättigheterna för ägaren.
  • Nästa 3 tecken "r-x" är rättigheterna för gruppen.
  • Nästa 3 tecken "r-x" är rättigheterna för alla användare.
  • Nästa siffra "2" symboliserar hur många filer och mappar mappen innehåller. "2" betyder att mappen är tom, den innehåller bara filen "." (=länk till denna mapp) och ".." (=länk till underliggande mapp).
  • Nästa ord "root" visar ägaren av mappen.
  • Nästa ord "root" visar vilken grupp mappen tillhör. Vanligvis är detta användarens defaultgrupp.
Vad står positionerna för i Owner, Group och Other-rättigheterna?
  1. Om position 1 innehåller ett "r" kan man läsa filen/mappen. I fallet med mapp betyder det att man kan lista filer med "ls".
  2. Om position 2 innehåller ett "w" kan man skriva i filen/mappen. I fallet med mapp betyder detta att vi kan skapa filer i mappen.
  3. Om position 3 innehåller ett "x" kan man exekvera filen. För en mapp innebär detta att vi kan gå in i mappen med "cd".

2. Ett exempel: games

Vi går tillbaka till utskriften för mappen "games":
[olle@dev1]$  ls -l /usr/local
totalt 32
drwxr-xr-x 2 root root 4096 2007-09-11 17:31 bin
drwxr-xr-x 2 root root 4096 2007-08-06 11:08 etc
drwxr-xr-x 2 root root 4096 2007-08-06 11:08 games
drwxr-xr-x 2 root root 4096 2007-08-06 11:08 include
drwxr-xr-x 3 root root 4096 2007-08-06 12:15 lib
lrwxrwxrwx 1 root root    9 2007-08-06 11:08 man -> share/man
drwxr-xr-x 2 root root 4096 2007-08-06 11:08 sbin
drwxr-xr-x 8 root root 4096 2007-08-06 11:21 share
drwxr-xr-x 2 root root 4096 2007-08-06 11:08 src
Vilka rättigheter har användaren "olle" på mappen "games"?

  • Owner: "olle" är inte ägare av mappen, det är "root". Därför kan vi ignorera de 3 första flaggorna "rwx".
  • Group: "games"-mappen tillhör gruppen "root", och "olle" har inte den gruppen. Därför kan vi ignorera de 3 efterföljande flaggorna "r-x".
  • Other: "olle" kan som alla andra användare utnyttja mappen så vad som står i de 3 sista flaggorna är högst relevant. Vi har "r-x" vilket innebär att "olle" kan använda "cd" för att gå in i mappen och "ls" för att lista filer men inte skapa filer i mappen.
Ok, vi kollar:
[olle@dev1]$ cd /usr/local/games
[olle@dev1]$ ls -l
[olle@dev1]$ cat Hej alla > hej.txt
bash: /usr/local/games/hej.txt: Åtkomst nekas

3. Ett exempel: secret

Vi skapar en ny mapp med "sudo" (som root) och tar bort alla rättigheter för "Group" och "Other":
[olle@dev1]$ sudo mkdir secret
[olle@dev1]$ sudo chmod 700 secret
[olle@dev1]$ ls -l
totalt 4
drwx------ 2 root root 4096 2007-09-22 13:34 secret
Nu ska vi testa att gå in i den:
[olle@dev1]$ cd secret
bash: cd: secret: Åtkomst nekas
[olle@dev1]$ ls secret
ls: secret: Åtkomst nekas
Verkar funka.