Endre filrettigheter rekursivt med chmod og find
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.