LX-INL-INFO-permissions-ownership
Updated aug/7/2010 01:37

permissions ownership

nuttige links:
inhoudstafel: snelkoppelingen

Linux Files and File Permission:

http://www.comptechdoc.org/os/linux/usersguide/linux_ugfilesp.html
wikipedia filesystem permissions:
http://en.wikipedia.org/wiki/Filesystem_permissions

Het toegangsrechtenbeheer is in Linux en UNIX eenvoudig en uiterst functioneel.
  1. ownership

    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

  2. permissions begrijpen

    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 - -

    Bekijken we even de bovenste permission in deze tabel: d rwx r-x r-x

    Het type is d van directory.

    Een r in het eerste groepje betekent dat de eigenaar leesrechten heeft, een w staat voor schrijfrechten en een x staat voor uitvoerende rechten.

    Een r in het tweede groepje betekent dat de groep leesrechten heeft, een - staat voor GEEN schrijfrechten en een x staat voor uitvoerende rechten.

    Een r in het derde groepje betekent dat iedereen leesrechten heeft, een - staat voor GEEN schrijfrechten en een x staat voor uitvoerende rechten.

    Het tweede voorbeeld: - rw- r-- r--

    Het type is - van een gewoon bestand.

    Een r in het eerste groepje betekent dat de eigenaar leesrechten heeft, een w staat voor schrijfrechten en een - staat voor GEEN uitvoerende rechten.

    Een r in het tweede groepje betekent dat de groep leesrechten heeft, een - staat voor GEEN schrijfrechten en een volgende - staat voor GEEN uitvoerende rechten.

    Een r in het derde groepje betekent dat iedereen leesrechten heeft, een - staat voor GEEN schrijfrechten en een volgende - staat voor GEEN uitvoerende rechten.

    Nog 4 voorbeelden:

    -rw-r--r-- 1 bert bert    704197 2008-09-11 12:56 Shiki-Colors_1.1.tar.gz

    Bert kan lezen en schrijven op dit bestand als eigenaar. De groep bert kan alleen lezen, en dat geldt eveneens voor iedereen.

    drwxr-xr-x 2 bert bert        23 2009-03-02 11:12 Desktop

    Directories moeten altijd uitvoerbaar zijn, anders kan je er de inhoud niet van bekijken. In dit geval kan bert lezen, schrijven en kijken in de Desktop directory, de groep bert en iedereen kunnen alleen lezen en kijken.

    -rwxr-x--- 1 bert users     7841 2008-11-24 10:54 dumpscript

    Het script dumpscript is uitvoerbaar, maar niet voor iedereen; leden van de groep users kunnen het wel uitvoeren, bert kan het wijzigen.

    lrwxrwxrwx 1 bert bert         4 2009-03-03 14:15 xdrive -> /home/ftp/xdrive

    De symbolic link kan door iedereen gevolgd worden en uitgevoerd (directory /home/ftp/xdrive) en ook door iedereen worden veranderd. Echter, indien je dit bestand wil veranderen, moet je toch schrijfrechten hebben in de directory waar deze link zich bevindt, en dat is alleen voor de eigenaar het geval.

  3. permissions aanpassen

    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

    met andere woorden: de combinatie -rwxr-x--- kun je bereiken met het commando:

    $ chmod 750 testfile
    $ ls -l testfile
    -rwxr-x--- 1 bert bert 23 2008-11-24 11:00 testfile

    Dit lijkt in het begin ingewikkeld, maar al na een paar oefeningen wordt snel duidelijk dat deze methode makkelijker en vooral sneller is dan de andere.

    Nog een paar voorbeelden:

    -rw------- = 600
    -rw-r--r-- = 644
    -rwxr-xr-x = 755