Bestandspermissies Het is belangrijk om je ervan te verzekeren dat je systeembestanden niet
open staan voor aanpassingen door gebruikers en groepen die zulk
systeemonderhoud niet zouden moeten doen. Unix scheidt toegangsbeheer op bestanden en directory's volgens drie
kenmerken: eigenaar, groep en anderen. Er is altijd exact één
eigenaar, een willekeurig aantal leden van de groep en alle anderen. Een korte uitleg van Unix permissies: Eigendom - Welke gebruiker(s) en groep(en) heeft/hebben het beheer over
de permissie-instellingen van de node en parent van de node. Permissies - Bits die kunnen worden ingesteld of opnieuw ingesteld kunnen
worden om bepaalde soorten toegang tot ze te kunnen verlenen. Permissies voor
directory's kunnen een andere betekenis hebben dan dezelfde set permissies
voor bestanden. Lezen:
De mogelijkheid hebben om de inhoud van een bestand te kunnen lezen De mogelijkheid hebben om een directory te kunnen lezenSchrijven:
De mogelijkheid hebben om een bestand te kunnen toevoegen of wijzigen De mogelijkheid hebben om bestanden in een directory te kunnen
verwijderen of verplaatsen Uitvoeren:
De mogelijkheid hebben om een binair programma of shell script uit te kunnen
voeren De mogelijkheid hebben om in een directory te kunnen zoeken, gecombineerd met
leestoegang Save Text attribuut: (Voor directory's)Het "sticky bit" heeft ook een andere betekenis als het toegepast wordt op
directory's dan wanneer het toegepast wordt op bestanden. Als het "sticky
bit" wordt ingesteld op een directory, mag een gebruiker alleen bestanden
verwijderen die zijn eigendom zijn of waarvoor hem expliciet
schrijfpermissie is verleend, zelfs wanneer hij schrijfpermissie heeft
voor de directory. Dit is ontworpen voor directory's als /tmp, die
schrijfpermissie voor iedereen hebben, maar waar het misschien niet
wenselijk is dat elke gebruiker naar wens bestanden kan verwijderen. Het
"sticky bit" is te zien als een t in een lange directory
opsomming. SUID attribuut: (Voor bestanden) Dit beschrijft set-uder-id permissies op het bestand. Als de set-user-ID
access mode is ingesteld in de eigendomsrechten en het bestand is executable,
zullen processen die het uitvoeren toegang verkrijgen tot systeembronnen,
gebaseerd op de gebruiker die eigenaar van het bestand is, in tegenstelling
tot de gebruiker die het proces heeft aangemaakt. Dit is de oorzaak van de
vele "buffer overflow" misbruiken. SGID attribuut: (Voor bestanden)Indien ingesteld in de groeppermissies, beheert deze bit de "set-group-ID"
status van een bestand. Dit gaat op dezelfde manier als SUID, behalve dat het
nu op de groep betrekking heeft. Het bestand moet executable zijn voordat dit
enig effect kan hebben. SGID attribuut: (Voor directory's)Als je het SGID bit op een directory instelt (met chmod g+s directory), hebben bestanden die in die directory aangemaakt
zijn hun groep ingesteld op de groep van de directory. Jij - De eigenaar van het bestand Groep - De groep waar je toe behoort Iedereen - Iedereen op het systeem die niet de eigenaar is en geen
deel uitmaakt van de groepBestandsvoorbeeld:
-rw-r--r-- 1 kevin users 114 Aug 28 1997 .zlogin
1e bit - directory? (nee)
2e bit - lezen door eigenaar? (ja, door kevin)
3e bit - schrijven door eigenaar? (ja, door kevin)
4e bit - uitvoeren door eigenaar? (nee)
5e bit - lezen door groep? (ja, door users)
6e bit - schrijven door groep? (nee)
7e bit - uitvoeren door groep? (nee)
8e bit - lezen door iedereen? (ja, door iedereen)
9e bit - schrijven door iedereen? (nee)
10e bit - uitvoeren door iedereen? (nee) De volgende regels zijn voorbeelden van de minimale set van permissies
die vereist zijn voor de beschreven toegang. Misschien wil je meer permissies
geven dan hetgeen hier opgesomd is, maar dit zou moeten beschrijven wat deze
minimale permissies op bestanden doen:
-r-------- Staat leestoegang op het bestand toe aan de eigenaar.
--w------- Staat het de eigenaar toe om het bestand aan te passen of te
verwijderen.(Merk op dat iedereen met schrijfpermissie op de
directory waar het bestand zich in bevindt, het kan overschrijven
en dus verwijderen.)
---x------ De eigenaar kan dit programma uitvoeren, maar geen shell scripts
waarvoor ook nog leestoegang nodig is.
---s------ Uitvoeren is mogelijk met een effectieve User-ID = naar eigenaar.
--------s- Uitvoeren is mogelijk met een effectieve Group-ID = naar groep.
-rw------T Geen update van "last modified time". Wordt meestal gebruikt voor
swap bestanden.
---t------ Geen effect.(voorheen sticky bit) Directoryvoorbeeld:
drwxr-xr-x 3 kevin users 512 Sep 19 13:47 .public_html/
1e bit - directory? (ja, het bevat veel bestanden)
2e bit - lezen door eigenaar? (ja, door kevin)
3e bit - schrijven door eigenaar? (ja, door kevin)
4e bit - uitvoeren door eigenaar? (ja, door kevin)
5e bit - lezen door groep? (ja, door users)
6e bit - schrijven door groep? (nee)
7e bit - uitvoeren door groep? (ja, door users)
8e bit - lezen door iedereen? (ja, door iedereen)
9e bit - schrijven door iedereen? (nee)
10e bit - uitvoeren door iedereen? (ja, door iedereeen) De volgende regels zijn voorbeelden van de minimale set van permissies
die vereist zijn voor de beschreven toegang. Misschien wil je meer permissies
geven dat hetgeen hier opgesomd is, maar dit zou moeten beschrijven wat deze
minimale permissies op directory's doen:
dr-------- De inhoud kan opgesomd worden, maar bestandsattributen kunnen niet
gelezen worden.
d--x------ De directory is toegankelijk en kan in opdrachten worden verwerkt
waarin het directorypad wordt gebruikt.
dr-x------ Bestandsattributen kunnen gelezen worden door de eigenaar
d-wx------ Bestanden kunnen worden aangemaakt/verwijderd, zelfs als de
directory niet de huidige is.
d------x-t Voorkomt dat bestanden worden verwijderd door anderen met
schrijftoegang. Wordt gebruikt bij /tmp.
d---s--s-- Geen effect. Systeemconfiguratie bestanden (meestal in /etc) zijn meestal
modus 640 (-rw-r-----) en eigendom van root. Afhankelijk van
de beveiligingsvereisten van je site kun je dit aanpassen. Laat nooit enige
systeembestanden beschrijfbaar zijn voor een groep of iedereen. Sommige
configuratiebestanden, waaronder /etc/shadow, zouden alleen leesbaar
voor root moeten zijn en directory's in /etc zouden op z'n minst niet
toegankelijk voor anderen moeten zijn. SUID shell scriptsSUID shell scripts vormen een serieus beveiligingsrisico en om deze reden zal
de kernel ze niet toejuichen. Ongeacht hoe veilig je denkt dat een shell
script is, het kan worden misbruikt om een cracker een root shell te
geven.