Als je ls -l intikt, dan zul een regel als de volgende zien.
-rw-rw-r-- 1 jarkko jarkko 2786 Aug 8 20:19 navbar.htm
Van links naar rechts staan er de permissies, het aantal hard links naar het bestand, de eigenaar van het bestand, de groep waar hij toe behoort, de grootte in bytes, de datum, de tijd en tenslotte de bestandsnaam. Op de plaats van de datum zie je hier de tijd, omdat het bestand deze dag gemaakt is.
De permissie zit als volgt in elkaar. Helemaal links staat een letter die het type van het object aangeeft.
Letter | Omschrijving |
- | bestand |
b | block device, komt voor in /dev |
c | character device, komt voor in /dev |
d | directory |
l | symlink |
p | named pipe |
s | socket |
Daarachter staan 3 blokken van 3 tekens, waar dezelfde
letters in kunnen staan, variërend van ---
tot rwx. De r staat voor read,
de w voor write en de x door execute. Het eerste blok geldt voor de eigenaar
van het bestand, het tweede voor de groep en het derde voor de rest
van de wereld. Symlinks hebben altijd lrwxrwxrwx. Read, write en execute
spreken voor zich bij gewone bestanden, maar bij directories heeft
het een ander effect. Het volgende overzicht geeft aan wat je kunt met welke
permissies.
Permissie | Bestand | Directory |
--- |
niks | onbenaderbaar |
r-- |
inhoud bekijken | bestandsnamen bekijken |
rw- |
inhoud zien en wijzigen | inhoud zien en wijzigen |
rwx |
alles (incl. uitvoeren script/binary) | alles (incl. naar directory cd-en) |
r-x |
bekijken, script uitvoeren | kunt niks verwijderen of toevoegen, wel zien en cd-en |
--x |
binary uitvoeren | kunt een binary uitvoeren waarvan je de exacte locatie kent |
Merk op dat je voor het uitvoeren dan een binary alleen maar execute nodig hebt, terwijl voor het uitvoeren van een script zowel execute als read nodig is.
Om de permissies te veranderen is het commando chmod. Zet daar eerst achter voor wie de verandering geldt, dan of het aan of uit moet en tenslotte wat er moet veranderen. De u staat voor user, g voor group en o voor other (de rest van de wereld). De volgende twee voorbeelden maken het waarschijnlijk wel duidelijk.
chmod ugo-rwx file Haal voor User, Group en Others Read Write en eXecute weg. chmod u+x file Maak het voor User eXecutable
In plaats van letters kun je ook cijfers gebruiken. Bij andere Unices is dit vaak ook de enige manier. Om het getal te bepalen dat je moet hebben, moet je de 3 posities waar rwx kan staan zien als 3 bits (het zijn ook 3 bits, die zo letterlijk in het filesystem staan opgeslagen). Zet dit binaraire getal om in een octaal getal. In binair stelt de meest rechter bit voor, dus 1. De bit er links naast en die daarnaast . Als alle permissiebits aan staan, dus rwx, levert dit 4+2+1=7 op. Hier volgt weer een tweetal voorbeelden ter verduidelijking.
chmod 777 file Geef iedereen read write en execute permissie. chmod 750 file Geef de eigenaar alle rechten, de rest van de groep alleen lees en execute permissie en de rest niks.
Dit is niet alles wat er over permissies te vertellen is. Er bestaat ook nog een SUID-bit. Je kunt die aanzetten met chmod +s prognaam of door een extra 1 voor het permissienummer te zetten. Wie een programma waar de SUID-bit van aan staat ook uitvoert, het effect is hetzelfde als wanneer de eigenaar van het programma het uitvoerde. Is root de eigenaar, dan is het dus net alsof root het uitvoerde en het programma heeft daarmee dezelfde rechten als root. Op die manier kun je alle gebruikers programma's laten uitvoeren die normaal gesproken alleen door root uitgevoerd mogen worden. Een veiligere methode is echter sudo gebruiken. Zie paragraaf 11.8 voor meer informatie daarover.
Om de eigenaar en groep te veranderen is het commando chown. Zet daar eerst de nieuwe eigenaar, dan een punt en dan de nieuwe groep achter. Laat voor of achter de punt de eigenaar of groep gewoon leeg om de huidige eingnaar of groep te behouden. Zo verandert chown jarkko. file de eigenaar van file in jarkko.