nuttige links: |
inhoudstafel: snelkoppelingen |
Linux Files and File Permission: http://www.comptechdoc.org/os/linux/usersguide/linux_ugfilesp.htmlwikipedia filesystem permissions: http://en.wikipedia.org/wiki/Filesystem_permissions |
Elk bestand op je computer behoort tot een EIGENAAR en een GROEP. Heel dikwijls zijn eigenaar en groep aan mekaar gelijk. Je kan de eigenaar en groep van een bestand zichtbaar maken met het commando ls -l.
bert@phaedra:~$ ls -l
total 5392
-rwx------ 1 root root 1933 2006-04-20 10:32 archive.key
drwx------ 23 bert bert 4096 2008-09-08 16:20 cursus_2001
drwx------ 4 bert bert 4096 2008-09-08 15:32 cursus_services
drwx------ 3 bert bert 4096 2009-03-03 09:24 Desktop
drwx------ 2 bert bert 4096 2008-08-07 15:01 dns_config
drwx------ 2 bert bert 24576 2008-10-15 12:35 googledocsbackup
drwx------ 2 bert bert 4096 2008-09-08 15:29 homefiles
-rwx------ 1 bert bert 1123242 2008-08-18 15:08 Iceweasel_wallpaper.png
drwxrwxr-x 2 bert users 4096 2008-09-08 15:35 linux800
-rwx------ 1 bert bert 4185 2009-01-13 14:30 mbox
drwx------ 2 bert bert 4096 2008-09-08 15:24 Templates
-rwx------ 1 bert bert 2209 2008-11-14 15:44 terminal_firewall.dia
-rwx------ 1 bert bert 27163 2008-11-14 15:39 terminal-srv_firewall.png
drwx------ 2 bert bert 4096 2008-11-18 12:36 testdirectory
drwx------ 2 bert bert 4096 2008-09-08 15:36 testen_opdrachten_examens
-rwx------ 1 bert bert 1849 2008-11-14 14:12 VLAN-DHCP.dia
-rwx------ 1 bert bert 13158 2008-11-14 12:25 VLAN-DHCP.png
In het voorbeeld is het eerste bestand eigendom van root, alle andere bstanden zijn eigendom van bert; de directory linux800 is eigendom van bert, maar behoort tot de groep users.
De eigendom van een bestand of directory wordt automatisch ingesteld als de file wordt aangemaakt. De persoon die is ingelogd wordt eigenaar van de files en directories die hij/zij zelf maakt. Alleen de root gebruiker kan de eigenaar aanpassen.
Dat kan met commando chown.
De eenvoudigste syntax is als volgt:
chown <nieuwe eigenaar> <bestand/directory>
bert@phaedra:~$ chown roland VLAN-DHCP.dia
chown: changing ownership of `VLAN-DHCP.dia': Operation not permitted
Maar als root lukt het wel:
bert@phaedra:~$ su
Password: ########
phaedra:/home/bert# chown roland VLAN-DHCP.dia
phaedra:/home/bert# ls -l VLAN-DHCP.*
-rwx------ 1 roland bert 1849 2008-11-14 14:12 VLAN-DHCP.dia
-rwx------ 1 bert bert 13158 2008-11-14 12:25 VLAN-DHCP.png
Zoals je ziet is de groep gebleven wat ze was.
Je kan tegelijkertijd groep en eigenaar aanpassen door ze te scheiden met een . of een :
De syntax is dan:
chown <nieuwe eigenaar>:<nieuwe groep> <bestand/directory>
phaedra:/home/bert# chown roland:roland VLAN-DHCP.png
phaedra:/home/bert# ls -l VLAN-DHCP.*
-rwx------ 1 roland bert 1849 2008-11-14 14:12 VLAN-DHCP.dia
-rwx------ 1 roland roland 13158 2008-11-14 12:25 VLAN-DHCP.png
Als je een volledige directory met hierin alle subdirectories en alle files in een keer van eigenaar wil veranderen kan je gebruik maken van de optie -R
phaedra:/home/bert# chown -R roland.roland linux800
phaedra:/home/bert# ls -l linux800
total 960
-rwx------ 1 roland roland 9274 2008-09-08 15:35 linux800-logo-big.gif
-rwx------ 1 roland roland 70098 2008-09-08 15:35 linux800-logo-big.png
-rwx------ 1 roland roland 4503 2008-09-08 15:35 linux800-logo-big-t.gif
-rwx------ 1 roland roland 2610 2008-09-08 15:35 linux800-logo-small.gif
-rwx------ 1 roland roland 67278 2008-09-08 15:35 linux800-logo-small.png
-rwx------ 1 roland roland 1854 2008-09-08 15:35 linux800-logo-small-t.gif
-rwx------ 1 roland roland 427001 2008-09-08 15:35 linux_distro_timeline.jpg
Als we praten over permissions bedoelen we hiermee leesrechten, schrijfrechten en uitvoerrechten. In het engels READ, WRITE en EXECUTE.
De eigenaar van een bestand of directory stelt de permissions zelf in. Maar root kan het natuurlijk ook.
Als een file mag gelezen worden krijgt ze een R van readable
Als een file mag aangepast worden of gedelete krijgt ze een W van writable
Executable files hebben geen speciale extensie maar een permission X van executable.
We kijken even naar een voorbeeld:
$ ls -l
total 445604
-rw-r--r-- 1 bert bert 57834 2008-09-11 13:10 Smoked_Glass_v.09.5.tar.gz
-rw-r--r-- 1 bert bert 704197 2008-09-11 12:56 Shiki-Colors 1.1.tar.gz
drwxr-xr-x 2 root root 6 2008-11-19 12:43 cdvandale
drwxr-xr-x 2 bert bert 23 2009-03-02 11:12 Desktop
drwxr-xr-x 2 bert bert 6 2008-09-10 16:39 Documents
drwxr-xr-x 2 bert bert 6 2008-09-10 16:39 Downloads
drwxr-xr-x 2 bert bert 6 2008-09-10 16:39 Music
drwxr-xr-x 2 bert bert 6 2008-09-10 16:39 Pictures
drwxr-xr-x 2 bert bert 6 2008-09-10 16:39 Projects
drwxr-xr-x 2 bert bert 6 2008-10-03 08:54 Public
-rw-r--r-- 1 bert bert 391177 2008-09-11 13:22 dragonfly-IMG_0944S.JPG
-rw-r--r-- 1 bert bert 52802 2008-09-11 13:02 Dust-20080910.tar.gz
-rw-r--r-- 1 root root 445239296 2008-11-19 12:40 ecdl.iso
-rw-r--r-- 1 root root 43 2008-11-19 12:41 ecdl.iso.md5
-rw-r--r-- 1 bert bert 1138041 2008-09-11 13:24 GDM-Konwalia.tar.gz
-rw-r--r-- 1 bert bert 15 2009-02-03 12:25 gdocs.lang
-rw-r--r-- 1 bert bert 82 2009-02-03 12:39 index.html
-rwxr-x--- 1 bert users 7841 2008-11-24 10:54 dumpscript
-rw-r--r-- 1 bert bert 18 2009-01-27 14:18 test.php
-rw-r--r-- 1 bert bert 140038 2008-11-24 10:49 usrbincatalog.txt
lrwxrwxrwx 1 bert bert 4 2009-03-03 14:15 xdrive -> /home/ftp/xdrive
De eerste 10 karakters zijn de permissions van de bestanden of directories.
Het eerste van deze 10 karakters is een type veld.
Dit karakter is:
- voor bestanden,
d voor directories en
l voor symbolic links (shortcuts)
Hierna volgen 3 groepjes van telkens 3 karakters.
type |
eigenaar user |
groep group |
iedereen others |
d |
r w x |
r - x |
r - x |
- |
r w - |
r - - |
r - - |
Er zijn twee manieren om permissions aan te passen. Ze maken alle gebruik van het commando chmod.
methode 1:
Een veel gebruikte manier om scripts executable te maken is de volgende:
chmod +x <bestand>
voorbeeld:
$ pico script
$ ls -l script
-rw-r--r-- 1 bert bert 11 2009-03-03 15:08 script
$ chmod +x script
$ ls -l script
-rwxr-xr-x 1 bert bert 11 2009-03-03 15:08 script
Maar die methode werkt bijvoorbeeld niet altijd met +w:
$ ls -l testfile
-rw-r--r-- 1 bert bert 23 2008-11-24 11:00 testfile
$ chmod +w testfile
$ ls -l testfile
-rw-r--r-- 1 bert bert 23 2008-11-24 11:00 testfile
Omdat de eigenaar reeds schrijfrechten heeft en de groep en iedereen niet, kan er geen globaal commando gegeven worden. (dat heeft te maken met umask -> zie systeembeheer) Als we beter specifieren werkt het echter wel. Bekijk even de twee volgende voorbeelden:
$ chmod g+w,o+w testfile
$ ls -l testfile
-rw-rw-rw- 1 bert bert 23 2008-11-24 11:00 testfile
en:
$ chmod u-w testfile
$ ls -l testfile
-r--rw-rw- 1 bert bert 23 2008-11-24 11:00 testfile
De bewerking op de rechten van de eigenaar worden
voorafgegaan door de letter u (user)
gevolgd door de bewerking - (verwijderen) of + (toevoegen) en
afgesloten met de eigenschap (r w of x).
Verschillende permissions worden gescheiden met de komma.
Kunt u dit nog onthouden? Ik eigenlijk niet. Bovendien worden de commando's nogal lang, waardoor de kans op tikfouten aanzienlijk toeneemt.
methode 2:
De eerste methode (hierboven) werkt relatief. Je moet al weten hoe de permissions staan en dan nadenken wat er moet gewijzigd worden.
De tweede methode werkt absoluut. Je hoeft niet te weten hoe de permissions nu staan (al weet je dat waarschijnlijk wel, want anders moest je ze niet aanpassen).
Deze methode werkt met een 3-cijferige code:
Het eerste cijfer heeft betrekking op de eigenaar, het tweede cijfer op de groep en het derde cijfer geldt voor iedereen.
READ krijgt waarde 4
WRITE krijgt waarde 2
EXECUTE krijgt waarde 1
Als je dan de permission (zonder type veld) per 3 karakters groepeert, krijg je van 9 karakters 3 cijfers:
een voorbeeld:
- |
r w x |
r - x |
- - - |
4+2+1 |
4+0+1 |
0+0+0 |
|
7 |
5 |
0 |