Endre filrettigheter rekursivt med chmod og find

Endre filrettigheter rekursivt med chmod og find

Fri 29 November 2013

Om du har en server med hjemmesider som vises offentlig er det viktig å passe på at filrettighetene er satt noenlunde fornuftig.

I denne sammenheng er fornuftig likestillt med sikkert. Det vil si at vi ønsker at filrettighetene skal være satt på en sikker måte.

Unix fil og katalog -rettigheter 101

I unix verdenen operer vi med tre forskjellige filmodus:

  • les / read
  • skriv / write
  • eksekver / execute

En fil kan ha en eller flere av disse modusene.

I tillegg til en filmodus har også en fil eier:

  • eier / owner
  • gruppe / group
  • andre / other

Vi bruker en triplet for å bestemme hvilke filmodus som gjelder for de tre forskjellige eierene:

---------- 0000 ingen rettigheter
---x--x--x 0111 eksekver
--w--w--w- 0222 skriv
--wx-wx-wx 0333 skriv og eksekver
-r--r--r-- 0444 les
-r-xr-xr-x 0555 les og eksekver
-rw-rw-rw- 0666 les og skriv
-rwxrwxrwx 0777 les, skriv og eksekver

I tabellen over har vi gitt alle tre eierene samme rettigheter. I praksis ønsker vi sjeldent det, og spesielt 777 er direkte uklokt dersom filene vises på en offentlig nettadresse.

Anbefalte rettigheter

  • 400 for filer med passord, kun eier kan lese, ellers ingen tilgang
  • 644 for filer, eier kan lese og skrive, ellers kun lesing
  • 755 for mapper, eier kan lese, skrive og eksekvere, ellers les og eksekever

For å sette anbefalte rettigheter rekursivt

# find . -type f -exec chmod 644 {} +

# find . -type d -exec chmod 755 {} +

Begge kommandoene over tar utgangspunkt i folderen du står i, og jobber seg rekursivt nedover hele filtreet. Så du ønsker ikke å stå i root /.

Dersom websiden din har filer som inneholder passord eller annen sensitiv informasjon så er ikke 644 riktig modus siden alle kan lese filer med 644. Filer du ikke vil skal være tilgjengelig for andre en selve brukeren må settes til 400.

Tagged as : server centos unix