Und hier nun alles über Berechtigungen: chmod
Ich werd erstmal die Therorie zeigen, und danach ein paar praktische Beispiele zum verdeutlichen.
das kennen wir ja alle
Code:
BTS03-13:~ # ls -l
insgesamt 9
drwx------ 13 root root 376 2004-11-09 08:55 .
drwxr-xr-x 22 root root 512 2004-11-09 13:32 ..
-rw------- 1 root root 240 2004-11-09 09:13 .bash_history
drwxr-xr-x 2 root root 48 2004-10-04 17:24 bin
-rw-r--r-- 1 root root 1124 2000-02-28 22:05 .exrc
Dann werde ich anhand des Ordners
bin mal erklären was die ersten zehn Buchstaben
drwxr-xr-x bedeuten.
Fangen wir mit der ersten Stelle an:d steht für directory, also das wir eben einen Ordner vor uns haben.
Es könnten an dieser Stelle folgende Angaben stehen:
- wenn es eine einfache Datei ist
l ist ein Link
c ist ein zeichenorientiertes Gerät (z.B. Modem)
b ist ein blockorientiertes Gerät (z.B. Festplatten)
s ist ein socket device (z.B. Netzwerkschnittstelle)
p ist eine pipe, ähnlich wie socket
Im Normalfall muß man nur
d,
l und
- kennen, der Rest ist dann spezifisch !
Dann geht es weiter mit
rwxr-xr-x.
r steht für read, also lesbar
w steht für write, also beschreibbar und löschbar
x steht für execute, also ausführbar (wichtig für Skripte und Programme)
- steht für ein fehlendes Recht
die ersten drei Stellen dieses Ausschnitts stehen für die Rechte des momentanen Users an einer Datei oder einen Ordner. Die folgenden drei stehen für die Rechte aller User der selben Gruppe, die letzten drei Stellen stehen für alle anderen.
Also in unserem Fall:
rwx für den User (darf lesen,schreiben,ausführen)
r-x für alle User in der selben Gruppe wie der momentane User (lesen und ausführen)
r-x für alle anderen Benutzer des Systems (lesen und ausführen)
Damit hätten wir die grundlegende Theorie, jetzt kommen wir zum praktischen Verändern von Rechten, das dann mit
chmod geht.
chmod [rechte] /dateiz.B.
Code:
chmod a+rwx /shared/datei
a steht für
all, also
user,
group und
other+ fügt Berechtigungen hinzu, und zwar die Rechte
rwxEs wird also die Berechtigung
-rwxrwxrwx resultieren
Code:
chmod u+x /shared/datei
u steht dafür, das nur die Rechte des Users verändert werden
+x steht für ausführbar machen.
aus
-rw-r--r-- wird damit
-rwxr--r--Code:
chmod g-w /shared/datei
g steht für eine Änderung der Gruppenrechte, mit
-w nehmen wir die Schreibrechte heraus.
aus
-rwxrwxrwx wird damit
-rwxr-xrwxCode:
chmod o=r-x /shared/datei
o steht für other, also alle anderen Benutzer des Systems. Mit
=r-x setzt man die Berechtigungen auf lesenbar und ausführbar.
Im Gegendsatz zu + oder - werden hier keine Rechte hinzugefügt oder weggenommen, sondern egal wie die Berechtigung ist wird sie bei
other auf
r-x gesetzt.
So wird also unter Linux mit Berechtigungen gearbeitet, und jetzt noch ein paar Hinweise.
(1.) Wenn ein Ordner die Rechte -rwxrwxrwx hat, und darin eine Datei mit den Rechten -r-xr-xr-x liegt, überwiegt die Berechtigung des Ordners, d.h. ich kann die Datei löschen obwohl keine w Rechte darin sind !!!
(2.) Man kann anstatt den Zeichen zum setzten von Berechtigungen auch Zahlen verwenden. Und das hat folgenden Zusammenhang. Jede Berechtigung wird mit einer Zahl als Entsprechung ausgedrückt, wobei read=2²=4 write=2¹= 2 und exec=2^0=1 sind.
z.B.
rwx = 4 + 2 + 1 =
7
r-x = 4 + 1 =
5
r-- =
4
rw- = 4 + 2 =
6
jetzt gibt es ja drei Berechtigungsarten, nämlich user, group und other, die jeweils mit einer Zahl belegt werden.
z.B.
777 = rwxrwxrwx
755 = rwxr-xr-x
754 = rwxr-xr--
555 = r-xr-xr-x
also macht ein
chmod 777 /datei das selbe wie
chmod a=rwx /datei, wie man es macht ist eine Geschmacksfrage . . .
(3.) Mache ich jetzt z.B
chmod 777 /home/knecht wird nur der Ordner /home/knecht verändert, alle darunter liegenden Dateien und Ordner bleiben unverändert. Mache ich
chmod -R 777 /home/knecht ändert er auch alle möglichen Unterordner und Dateien darin. (R = recursive).
Es hat sich auch noch als praktisch erwiesen die Option -v (verbose = gesprächig) zu benutzen. (z.B.
chmod -vR 777 /home/knecht) Damit bringt man ihn dazu die Dateien und Ordner anzuzeigen die er ändert, ohne v gibt chmod gar keine Ausgabe.