ABSTRACT: permissions grundlage anhand von chmod und chown AUDIENCE: beginners SYSTEM: any unix SECTION: basic unix commands AUTHOR: mond COPYRIGHT: GNU Free Documentation Licence http://www.gnu.org/licenses/fdl.txt heute ein sehr wichtiges thema: zugriffsrechte ("permissions"). unix ist seit je her ein multiuser system. d.h. dass das system verschiedenen benutzer kennt die voneinander abgeschotet sind, sich also nicht gegenseitig datein beschreiben oder lesen koennen... etc.. das unix permissions system ist relativ einfach aufgebaut und daher auch leicht zu verstehen: grundlagen: * es gibt user. der username ist gleich dem login namen. * es gibt gruppen. jeder user kann ein oder mehreren gruppen angehoeren. (z.b. koennte man allen usern die auf einem computer die soundcard benuetzten duerfen der gruppe "audio" zuordnen.. ) * fuer jede datei und jedes verzeichniss ist festgelegt welchem user und welcher gruppe sie gehoert. (und zwar immer genau EINEM user und EINER gruppe) * fuer jede datei ist festgelegt ob der user dem die datei gehoert diese schreiben, lesen oder ausfuehren darf. ebenso ob mitglieder der gruppe der diese datei gehoert die datei lesen,schreiben oder ausfuehren duerfen. weiters kann man allen anderen die nicht dieser gruppe angehoeren ebenfalls rechte auf die datei geben. und zwar wieder lesen, schreiben und ausfuehren. * fuer verzeichnisse kann man festlegen: wer die verzeichnisse lesen kann (d.h. sieht welche datein dort drinnen sind). wer die verzeichnisse schreiben kann (d.h. in diesem verzeichniss eigene datein anlegen). "ausfuehren" kann man verzeichnisse nicht diese eigenschaft wird daher fuer einen anderen zweck missbraucht: mit den "ausfuehrrechte" fuer ein verzeichniss kann man mit einem schlag den zugriff auf alle darunterliegenden datein sprerren. soweit zu theorie. sehen wir uns das mal an: ls -l /bin/cat das -l zeigt uns auch die zugriffsrechte fuer die datein "cat". (das ist das programm das aufgerufen wird wenn wir cat eintippen). die rechte koennten etwa so aussehen: -rwxr-xr-x 1 root root 9668 Mar 8 2001 /bin/cat \ /\ /\ / | | | | | | \_> gruppe | | | \__> user | | \_> others | \__> gruppen rechte \_> user rechte das erste stricherl gibt an ob es eine normale datei ist (-) oder ein zeichniss ( dann wuerde ein "d" fuer directory) dort stehen. oder eine spezial datei (daruber lernen wir spaeter) die naechsten 3 punke (hier rwx) geben die rechte des users an. der user dem diese datei gehoert darf sie also r....lesen (read) und w... schreiben (write) und auch x...ausfuehren (execute) die gruppe der dies datei gehoert darf sie nur lesn und ausfuehren (r-x). alle anderen ebenso nur lesen und ausfuhren (r-x). im obigen fall gehoert die datei dem user "root" und auch einer gruppe namens "root". schaun wir uns mal eine datei in unserem homverzeichniss an. (wir koenne ja z.b. bla.txt anlegen: touch bla.txt legt die datei bla.txt an falls sie nicht existiert. (in diesem fall mit laenge 0) ls -l bla.txt -rw-r----- 1 mond users 0 Nov 27 14:55 bla.txt hier heisst der user dieser datei "mond". die gruppe heisst "users". und die zugriffsrechte erlauben dem user mond das lesen und schreiben und den mitgliedern der gruppe "users" das lesen. alle anderen duerfen gar nichts. um den eigentuemer einer datei zu aendern gibt es den befehl "chown". eigentuemer aendern darf aber im allgemeinen nur der root user. chown sonne bla.txt wuerde den eigentuemer der datei bla.txt auf "sonne" aendern. (falls es einen user mit diesem namen am system gibt) chown sonne.gestirne bla.txt wuerde zusaetzlich noch die gruppe auf den namen "gestirne" aendern. (falls es so eine gruppe auf deinem system ueberhaupt gibt) (welche gruppen angelegt sind kannst du dir mit less /etc/group ansehen. (dort ist jeder gruppe eine interne gruppennummer ("groupid" oder kurz "gid") zugeordnet. zum aendern der zugriffsrechte dient der befehle "chmod". bei chmod kann man entweder in einer 3stelligen oktalzahl das rwxr-xr-- muster angeben. (waere in diesem falle 754 ) aber einfacher ist folgende verwendung des chmod befehls: chmod u+rx bla.txt wuerde dem user (u) schreib und ausfuehrungsrechte geben (+rx) chmod go+w bla.txt wuerde der gruppe (g) und allen anderen (o fuer others) ein schreibrecht gewaehren. chmod o-w bla.txt wuerde allen anderen (o) die schreibrechte entziehen. chmod ugo-x bla.txt entzieht allen (user group und others) die ausfuehrungsrechte. etc...etc.. legen wir jetzt ein verzeichniss an: mkdir blabla mit chmod ug+rx blabla erlauben wir dem user und der gruppe das lesen des blabla verzeichnisses (diese leute koennen also ein "ls" in diesem verzeichniss machen. mit chmod o-rx blabla sperren wir das lesen des verzeichnisses fuer alle anderen (-r) und mit dem (-x) sperren wir auch den zugriff auf alle unterhalb des verzeichniss liegenden datein (unabhaengig davon ob der zugriff bei diesen dateien eventuell dort erlaubt waere) ACHTUNG beim "w" fuer directories: jemand der das "w" recht auf ein verzeichnis hat darf auch files in diesem verzeichniss loeschen, unabhaengig davon ob er rechte auf die datei selbst hat. es gibt dann noch einige sonderrechte (s und t) darueber lernen wir aber spaeter mehr.. nuetzlich in diesem zusammehang sind auch noch die befehle: groups zeigt dir an in welcher oder welchen gruppen du momentan selbst bist. su - sonne macht dich zum user "sonne" falls es eine solche auf deinem system gibt, vorausgesetzt du kennst das passwort dafuer. EXERCISES: * schau dir mit dem ls -l befehl die zugriffsrechte von verschieden datein in deinem homeverzeichniss und in anderen verzeichissen des systems an. versuche zu interpretieren was diese rechte bedeuten (wem gehoert die datei? welcher gruppe gehoert die datei?) was duerfen die mitglieder der gruppe? was darf der eigentuemer? * lege dir in deinem homeverzeichniss ein verzeichniss und eine datei an und vergib verschiedene zugriffsrechte mithilfe des chmod befehls an andere. schau dir mit dem ls -l befehl an ob der chmod befehl erfolgreich war. frage andere user ob sie die datei wirklich lesen oder schreiben koennen so wie du es geplant hast. (wenn du selbst einen anderen user auf dem system hast dann kannst du mit su - auf diesen user hinwechseln. REFERENCES: man chmod man chown man groups man su