Rechtevergabe bei Dateien - nur ein Beispiel?
Guten Morgen allen Profis,
nachdem ich lange Zeit leider sehr motivationslos in Sachen Linuxserveradministration lernen war, bin ich jetzt über den Punkt hinweg und fange wieder an bzw. mache dort mit Lernen weiter, wo ich aufgehört habe.
Konkret heißt das "Rechtevergabe bei Dateien".
Dort habe ich gerade den Befehl chmod am Wickel und gelernt, dass die Zahlen hinter dem chmod dahingehend codiert sind, dass Leserechte eine "4" haben, Schreibrechte eine "2" und Ausführungsrechte eine "1".
Soweit, alles klar.
Womit ich jedoch ins Schleudern komme, ist das Beispiel des Autors.
Dort listet er das Skript auf und schreibt, dass ein und dieselbe Datei einmal mit
$ chmod 641 moin
$ ls -l moin
(dann werden die ganzen Angaben der Zeile angezeigt)
und direkt darunter dieselbe Datei, allerdings mit:
$ chmod 755 moin
$ ls -l moin
(dann werden die ganzen Angaben der Zeile angezeigt).
Was ich jetzt nicht verstehe (bzw. mich bzw. in dem Fall Euch frage): Ist das nur ein Beispiel, um die Veränderung zwischen 641 und 755 bei den rwx-Rechten aufzuzeigen oder hat es tatsächlich einen Sinn, ein und derselben Datei zwei unterschiedliche chmod-Werte zu vergeben?
Für die Antworten bedanke ich mich im Voraus
GLG
Tichuspieler
5 Antworten
Das Beispiel soll einfach nur die Veränderung zwischen 641 und 755 aufzeigen.
Eine Datei kann natürlich immer nur eine einzige Rechte Kombination enthalten. Im Hintergrund könnten noch zusätzlich ACLs vergeben werden, wovon aber im allgemeinen abzuraten ist.
ACLs sind relativ detaillierte Zugriffsrechte, die man mit dem Kommando setfacl setzen kann. Allerdings kann er sie auch nur mit dem Kommando getfacl sichtbar machen. Das ganze erhöht also nicht unbedingt die Übersichtlichkeit, weil ich dann die Rechte auf zwei verschiedene Arten überprüfen muss. Hinzu kommt, dass diese Rechte den mit chmod vergebenen Rechten widersprechen können. Das machst es dann noch unübersichtlicher. Das sollte man also nur in ganz gezielten Einzelfällen verwenden und nur wenn man sich auch wirklich damit auskennt.
Ah, okay.
Danke auch für die Antwort. Ich werde da meine Fingerchen von lassen (außer, wenn ich vielleicht in geschätzt 200 Jahren mal Profi sein sollte ...:-D ;-) )
Leserechte eine "4" haben
Das ist nicht falsch aber Leserechte hat man nicht nur mit der 4, sondern auch mit 5 , 6 oder 7 .
Die Rechte werden als Bit-Zustände mit je 3 Bit codiert (für World, Group und Owner getrennt). Für die r w und x steht dann je ein Bit
r w x
0 0 0 -> 0
0 0 1 -> 1
0 1 0 -> 2
0 1 1 -> 3
1 0 0 -> 4
1 0 1 -> 5
1 1 0 -> 6
1 1 1 -> 7
wenn da eine 0 steht ist das Recht entzogen, bei einer 1 ist es erlaubt.
Für jemanden, der die hexadezimale Darstellung im Kopf in die Bits umdenken kann, dann ist die 4 der Bit-Code 1 0 0 , in dem Falle "nur lesen erlaubt"
Mit einer 5 , also 1 0 1 bedeutet das Lesen und Ausführen sind erlaubt.
Da so ein Bitfolge mit den Zahlen 0 bis 7 nicht nur für den Besitzer sondern auch für die Benutzter-Gruppe und für Alle (World) sind immer 3 solcher Zahlen bei chmod notwendig.
Teile die in der Frage genannten Zahlen 641 und 755 auf.
Owner 6 bzw. 7 6 = rw. 7 = rwx
Gruppe 4 bzw. 5 4 = r-- 5 = r-x
World 1 bzw. 5 1 = --x 5 = r-x
Bei chmod kann man, wenn man es kann mit den Zahlenwerten oder mit Symbolen
wie chmod +r owner <datei>
siehe da lieber nochmal im Manual nach (man chown), ich benutzte nur die Zahlen.
Hallo guenterhalt,
ja, da gebe ich Dir Recht. Ich habe das ein wenig unglücklich formuliert (war da ein bisschen "betriebsblind").
Ich hatte das in meinem Lehrbuch so verstanden, dass 4 für r, 2 für w und 1 für x steht und habe in meiner Frage (unbeabsichtigt) "ignoriert", dass bei einer 5, 6 und 7 die Leserechte auch mit bei sind. Dadurch kann es natürlich zu Missverständnissen kommen.
Lustigerweise kommt das mit den Buchstaben tatsächlich kurz hinter dem mit den Rechten mit den Zahlen. Allerdings wird neben den von Dir Erwähnten noch das "a" für "all" aufgeführt (bei den Rechten sogar noch das "s" für SUID).
hast du ein Linux-System auf deinem PC?
tippe mal
cd /
ls -l
und sie die Zeile an, in der das Directory /tmp angezeigt wird. Da steht:
drwxrwxrwt 1 root root 41664 4. Jun 19:58 tmp
finde mal raus was das t (statt x ) bedeutet. Unix oder Linux bietet viele schöne Dinge!!!
Kurz gegoogelt: t steht für t-Bit, wird auch sticky-Bit genannt und besagt, dass das ausführende Programm nicht nach Beendigung aus dem Arbeitsspeicher gelöscht wird.
Ob das in meinem Buch kommt, weiß ich jedoch nicht (ich habe es mir als e-Book gekauft und ausgedruckt und komme leider nicht so schnell voran).
Ja das ganze ist nur ein Beispiel um das zu verdeutlichen. Der 2. chmod-Befehl überschreibt quasi die Änderungen des 1.
Guten Morgen,
vielen lieben Dank auch für Deine Antwort.
Ich habe zwar auch vermutet, dass es sich um ein Beispiel handelt, aber bei dem Buch, aus dem ich lerne, bin ich mir da wirklich nicht sicher gewesen (der Autor schreibt da ein bisschen verwirrend).
Mit chmod setzt du die Berechtigungen. Daher würde ich darauf tippen, dass es ihm darum ging, die Auswirkungen verschiedener Einstellungen zu zeigen.
Guten Morgen,
vielen lieben Dank für Deine Antwort. Ich habe zwar auch vermutet, dass es sich um ein Beispiel handelt, aber bei dem Buch, aus dem ich lerne, bin ich mir da wirklich nicht sicher gewesen (der Autor schreibt da ein bisschen verwirrend).
Führt man chmod aus verändert dies den Aktuellen wert der betreffenden Datei.
Listet man die Datei VOR dem ausführen von chmod ,dann sieht man die Ursprüngliche Rechtevergabe.
Danach führt man chmod aus und verändert die. Danach listet man die Datei erneut auf und sieht die veränderten Rechtevergaben.
Macht durchaus sinn.
Guten Morgen,
vielen lieben Dank für Deine Antwort. Ich habe zwar auch vermutet, dass es sich um ein Beispiel handelt, aber bei dem Buch, aus dem ich lerne, bin ich mir da wirklich nicht sicher gewesen (der Autor schreibt da ein bisschen verwirrend).
Allerdings muss ich gestehen, dass ich noch nicht so weit bin, dass mir ACLs etwas sagen. Magst Du einem DAU mir das in einfachen Worten erklären und auch, warum davon abzuraten ist?