13 Dez 2009

Linux-Kurs – Teil 6 (Rechte verändern)

Geschrieben von Tom Schimana in IT keine Kommentare

Im fünften Teil gab es einen Einstieg in die Dateisystemrechte. In diesem Beitrag werden wir nun weitere darauf aufbauen und lernen, diese Rechte zu verändern.

Wie immer bei jedem Teil… Login mit Deinem Arbeitsbenutzer, welcher in meinem Fall der User tom ist (und nicht als root). Vom letzten Kurs sollte noch das Verzeichnis test vorhanden sein.

Zugriffe verändern

Schauen wir uns dieses Verzeichnis nochmals an:

cd cd ~/test
ls -lh

Teil der Ausgabe:

-rw-r--r-- 1 tom tom 0 2009-12-13 14:49 datei1
-rw-r--r-- 1 tom tom 0 2009-12-13 14:49 datei2
-rw-r--r-- 1 tom tom 0 2009-12-13 14:49 datei3

Im letzten Teil hast Du gelernt, was die Abkürzungen wie z.B. rw bedeuten und welche Personen effektiv auf dieses Verzeichnis Zugriff haben.

In diesem Fall darf der Benutzer tom schreiben und lesen, die Gruppe tom nur lesen und alle anderen haben auch lesenden Zugriff auf die Dateien. Im Normalfall ist in der Gruppe tom auch nur dieser Benutzer als Mitglied eingetragen. Im Unix/Linux gibt es noch die Gruppe users. Dort sollte jeder normale Arbeitsbenutzer (also keine Dienste und co.) Mitglied sein.

Nun möchten wir den Zugriff etwas einschränken bzw. verändern. Dein Benutzer soll weiterhin die gleichen Rechte haben, alle Benutzer aus der Gruppe users sollen Lesezugriff haben und sonstige User keinen Zugriff.

Dazu sollten wir zuerst die Gruppe tom gegen users austauschen.

chgrp users datei1


Fehlermeldung? Natürlich. Wir sind nur ein normaler Benutzer und wo würden wir denn da hinkommen, wenn dieser einfach eine andere Gruppe eintragen könnte! ;-)

Deshalb müssen wir diesen Befehl als root ausführen:

su root
chgrp users datei1
exit

Mit der ersten Zeile und dem Befehl su schalten wir uns zum “Superuser” hoch. Der Zusatz von root bei su root wäre nicht notwendig. Ich finde es stellt allerdings klarer dar, zu welchen Benutzer wir switchen. Denn der Benutzer root dürfte sich auch zu einem anderen beliebigen Benutzer “umwandeln”.

Der Befehl chgrp steht für “Change Group”. Wir wechseln dabei bei der Datei datei1 auf die Gruppe users.

Mit exit verlassen wir unseren Superuser, um versehentlich keinen Unsinn anzustellen.

Da ich Besitzer der Datei bin, darf ich unter meinem eignen Benutzer-Account die einzelnen Rechte an der Datei verändern:

chmod o-r datei1

Dabei steht chmod für “change file mode bits”. Die Angabe o-r bedeutet dass Other (also alle anderen) das Recht r (also lesen) entfernt (das Zeichen “-“) wird. Möchte ich das Recht hinzufügen, könnte ich also z.B. auch chmod o+rw eingeben, um allen anderen Lese- und Schreibrechte zu geben.

Nun hat unsere Datei folgende Zugriffsrechte:

-rw-r----- 1 tom users 0 2009-12-13 14:49 datei1

Tom darf lesen und schreiben, alle in der Gruppe users dürfen lesen und der Rest hat keinen Zugriff.

Wir könnten nun auch der Gruppe das Leserecht nehmen:

chmod g-r datei1

Danach nur Schreibrechte vergeben:

chmod g+w datei1

Oder wir nehmen uns selbst das Recht zum schreiben auf die Datei:

chmod u-w datei1

Wie oben zu sehen, steht also das o für Other, g für Group und u für User.

Nach unserem kleinen Experiment könnten die Rechte wie folgt aussehen:

-r---w---- 1 tom users 0 2009-12-13 14:49 datei1

Ich kann teilweise die Parameter kombinieren. So ist auch ein chmod ugo+rw datei1 möglich, um allen Schreib- und Leserechte zu geben.

Für einzelne relative Veränderungen sind die oberen Parameter recht gut. Falls mir zuvor mein Ziel schon genau klar ist, wäre es recht umständlich die Rechte so zu vergeben.

Rechte als Bits angeben

Deshalb kann ich meine Rechte auch als Bitangabe machen. Dies ist die beste Möglichkeit einer Datei oder einem Verzeichnis eindeutige Rechte aufzustempeln.

chmod 640 datei1

Das Ergebnis:

-rw-r----- 1 tom users 0 2009-12-13 14:49 datei1

An sich ist das errechnen recht einfach. Die erste Zahl steht für unsere Benutzerrechte, die zweite für die der Gruppe und die dritte für alle anderen.

Eine Ziffer setzt sich dabei als Summe aus den drei Rechten zusammen:

  • 1 für Ausführen
  • 2 für Schreiben
  • 4 für Lesen

Unser Beispiel mit 640 ist also die 6 für Schreiben und Lesen (4+2=6), die 4 für Lesen und die 0 für keine Rechte.

Böse ist dabei eine Angabe, wie chmod 777 datei1. Hiermit würde die Datei alle Rechte (4+2+1=7) für alle Benutzer bekommen. Wenn ihr in einem Handbuch, in einem Tipp oder in einer Anleitung das Recht 777 zum setzten von Rechten, am besten noch auf eine große Anzahl von Dateien ließt, dann solltet ihr dieses Dokument gleich wieder zu Seite legen!

Wir können die Rechte auch rekursiv und auf mehrere Dateien oder Verzeichnisse anwenden. Hier ist natürlich Vorsicht geboten!

chmod -r 640 ~/test

Nun haben wir schon wieder was falsch gemacht und bekommen einige Fehlermeldungen (“Permission denied”).

Zuerst gehen wir in unser Home uns sehen an, was Du (also eigentlich ich) hier angestellt haben:

cd ~/test
ls -lh

Fällt Dir hier was auf?

tom@debian:~$ ls -lh
total 4.0K
drw-r----- 2 tom tom 4.0K 2009-12-13 15:04 test

Ich hab ja gewarnt, Rechte großzügig zu vergeben! ;-) Wir haben unser Recht 640, auf ein gesamtes Verzeichnis angewendet. Somit fehlt uns bei dem Verzeichnis test das Recht x, welches für den Zugriff in das Verzeichnis benötigt wird.

tom@debian:~$ cd test
-bash: cd: test: Permission denied

Wir haben keinen Zugriff mehr. Klar, ganz einfach. Wir haben müssen natürlich 740 verwenden! Allerdings wäre das Ergebnis anders, aber nicht besser:

-rwxr----- 1 tom users 0 2009-12-13 14:49 datei1
-rwxr----- 1 tom tom   0 2009-12-13 14:49 datei2
-rwxr----- 1 tom tom   0 2009-12-13 14:49 datei3

Nun haben wir zwar Zugriff, aber alle Dateien sind als ausführbare Programme gekennzeichnet.

Aus diesem Grund bitte immer Vorsichtig mit umfangreichen und absoluten Rechteveränderungen vorgehen. Hier sind Angaben wie z.B. chmod -R ug+r ~/test oftmals die bessere Wahl.

Lass uns unser Missgeschickt wieder reparieren:

chmod u-x ~/test/*

Auch dieser Befehl kann in unbekannten Verzeichnissen Probleme machen. In unserem Fall passt er. Nun hat das Verzeichnis noch das x aus dem 740er chmod und die Dateien darin, haben wir das Execute wieder weggenommen.

Das soll es für heute erst mal wieder sein. Probier die Rechte selbst aus, aber möglichst nur als normaler Benutzer und nur in Deinem eigenen Home-Verzeichnis.

Wie immer gilt, bei Fragen und Anregungen einfach ein Kommentar schreiben. Eine Übersicht aller Teile findest Du hier.

Themen: · · · · ·

Interessante Beiträge zu diesem Thema

Keine Kommentare zu “Linux-Kurs – Teil 6 (Rechte verändern)”

  1. Linux-Kurs – Teil 5 (Rechte) - Tom Schimana says:

    [...] Im nächsten Teil, werde ich tiefer in die Rechte eingehen und erklären, wie diese angepasst und verändert werden können. [...]

  2. Linux-Kurs – Teil 7 (Programme mit APT installieren) - Tom Schimana says:

    [...] wir uns im fünften und sechsten Teil ein wenig in die Rechte eines Linux-System eingearbeitet haben, werden wir heute etwas [...]

Kommentar schreiben