| |

chmod und chown
Heute ein sehr wichtiges Thema: Zugriffsrechte ("permissions"). Unix ist
seit je her ein Multiuser-System. D.h., dass das System verschiedene
Benutzer kennt, die voneinander abgeschottet sind, sich also nicht
gegenseitig Dateien beschreiben oder lesen können...
Das Unix Permission System ist relativ einfach aufgebaut und daher auch
leicht zu verstehen.
Grundlagen:
* Es gibt User. Der Username ist gleich dem Loginnamen.
* Es gibt Gruppen. Jeder User kann einer oder mehreren Gruppen angehören.
(z.B. kann man allen Usern die auf einem Computer die Soundkarte
benutzten dürfen der Gruppe "audio" zuordnen.. )
* Für jede Datei und jedes Verzeichnis ist festgelegt, welchem User und
welcher Gruppe sie gehört. (Und zwar immer genau EINEM User und EINER
Gruppe.)
* Für jede Datei ist festgelegt, ob der User dem die Datei gehört diese
schreiben, lesen und/oder ausführen darf. Ebenso, ob Mitglieder der Gruppe
der diese Datei gehört die Datei lesen, schreiben oder ausführen
dürfen. Weiters kann man allen anderen, die nicht dieser Gruppe
angehören ebenfalls Rechte auf die Datei geben. Und zwar wieder lesen,
schreiben und ausführen.
* Für Verzeichnisse kann man festlegen wer die Verzeichnisse lesen kann
(sieht welche Dateien dort drinnen sind). Wer die Verzeichnisse
schreiben kann (in diesem Verzeichnis eigene Dateien anlegen darf).
"Ausführen" kann man Verzeichnisse nicht, diese Eigenschaft wird daher
für einen anderen Zweck verwendet: mit den "Ausfuehrrechten" für ein
Verzeichnis kann man mit einem Schlag den Zugriff auf alle
darunterliegenden Dateien sprerren.
Soweit zur Theorie. Sehen wir uns das mal an:
ls -l /bin/cat
Das -l zeigt uns auch die Zugriffsrechte für die Dateien "cat". (Das ist
das Programm, das aufgerufen wird, wenn wir cat eintippen). Die Rechte
könnten 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
Verzeichniss (dann würde ein "d" für Directory dort stehen).
Oder eine Spezialdatei (darüber lernen wir später)
Die nächsten 3 Punke (hier rwx) geben die Rechte des Users an. Der User
dem diese Datei gehört, darf sie also r....lesen (read) und w...
schreiben (write) und auch x...ausführen (execute)
Die Gruppe, der diese Datei gehört, darf sie nur lesen und ausführen (r-x).
Alle anderen ebenso nur lesen und ausführen (r-x).
Im obigen Fall gehört die Datei dem User "root" und auch einer Gruppe
namens "root".
Schauen wir uns mal eine Datei in unserem Homverzeichniss an. Wir können
ja z.b. bla.txt anlegen (falls sie noch nicht existiert):
touch bla.txt
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 dürfen gar
nichts.
Um den Eigentümer einer Datei zu ändern, gibt es den Befehl "chown".
Eigentümer ändern darf aber im Allgemeinen nur der Superuser (root).
chown sonne bla.txt
würde den Eigentuemer der Datei bla.txt auf "sonne" ändern. (Falls es
einen User mit diesem Namen am System gibt)
chown sonne.gestirne bla.txt
würde zusätzlich noch die Gruppe auf den Namen "gestirne" ändern.
(Falls es so eine Gruppe auf deinem System überhaupt 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 Ändern der Zugriffsrechte dient der Befehl "chmod" (change mode).
Bei chmod kann man entweder in einer 3stelligen Oktalzahl das rwxr-xr--
Muster angeben. (Wäre in diesem Falle 754); aber einfacher ist folgende
Verwendung des chmod Befehls:
chmod u+rx bla.txt
würde dem User (u) Schreib und Ausführungsrechte geben (+rx)
chmod go+w bla.txt
würde der Gruppe (g) und allen anderen (o für others) ein Schreibrecht
gewähren.
chmod o-w bla.txt
würde allen anderen (o) die Schreibrechte entziehen.
chmod ugo-x bla.txt
entzieht allen (user group und others) die Ausführungsrechte.
etc...etc..
Legen wir jetzt ein Verzeichnis an:
mkdir blabla
Mit
chmod ug+rx blabla
erlauben wir dem User und der Gruppe das lesen des blabla Verzeichnisses
(diese Leute können also ein "ls" in diesem Verzeichnis machen.
Mit
chmod o-rx blabla
sperren wir das Lesen des Verzeichnisses für alle anderen (-r) und mit
dem (-x) sperren wir auch den Zugriff auf alle unterhalb des Verzeichnisses
liegenden Dateien (unabhängig davon, ob der Zugriff bei diesen Dateien
eventuell dort erlaubt wäre)
ACHTUNG beim "w" für Directories: jemand der das "w" Recht auf ein
Verzeichnis hat, darf auch Dateien in diesem Verzeichnis löschen,
unabhängig davon, ob er Rechte auf die Datei selbst hat.
Es gibt dann noch einige Sonderrechte (s und t), darüber lernen wir aber
später mehr..
Nützlich in diesem Zusammenhang 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 einen solchen auf deinem System gibt,
vorausgesetzt du kennst das Passwort dafür.
EXERCISES:
* Schau dir mit ls -l die Zugriffsrechte von verschieden Dateien
in deinem Homeverzeichniss und in anderen Verzeichissen des Systems an.
Versuche zu interpretieren, was diese Rechte bedeuten (wem gehört die
Datei? Welcher Gruppe gehört die Datei?) Was dürfen die Mitglieder der
Gruppe? Was darf der Eigentümer?
* Lege dir in deinem Homeverzeichniss ein Verzeichnis und eine Datei an
und vergieb verschiedene Zugriffsrechte mithilfe des chmod-Befehls an
andere. Schau dir mit ls -l an, ob der chmod-Befehl
erfolgreich war. Frage andere User, ob sie die Datei wirklich lesen oder
schreiben können, 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
|
|