Hallo,
ich habe ein Verständnisproblem für Berechtigungen unter Linux.
angenommen ich habe einmal
testfolder1/f1.txt
Ich habe angefangen eine Gruppe (familie) zu erstellen, welche momentan
einen user hat (Johannes)
Jetzt möchte ich gerne für dieser Gruppe Berechtigungen (nur lesen)
anlegen.
chown johannes:familie testfolder1/f1.txt
chmod 440 testfolder1/f1.txt
heißt: Johannes darf lesen, komplette Gruppe familie darf lesen, alle
anderen dürfen nichts.
Wenn ich jetzt also noch einen benutzer anlege und diesen in der Gruppe
familie unterbringe, darf dieser Benutzer ebenfalls die Datei lesen.
Aber wer darf die Datei jetzt noch löschen? nur ich mit sudo? Oder gibt
es noch andere wege?
Wie kann ich es machen, dass ein Benutzer aus familie mehr rechte (lesen
und schreiben) bekommt?
Jetzt möchte ich gerne noch eine zweite Gruppe anlegen. familie2
Wie kann ich denn jetzt Einstellen, dass familie2 auch zugriffsrechte
bekommt?
Ich müsste ja eigentlich erst mit chown den Besitzer wechseln? Was
passiert dann mit den Berechtigungen für familie?
Johannes schrieb:> Hallo,> ich habe ein Verständnisproblem für Berechtigungen unter Linux.>> angenommen ich habe einmal> testfolder1/f1.txt>> Ich habe angefangen eine Gruppe (familie) zu erstellen, welche momentan> einen user hat (Johannes)> Jetzt möchte ich gerne für dieser Gruppe Berechtigungen (nur lesen)> anlegen.>> chown johannes:familie testfolder1/f1.txt> chmod 440 testfolder1/f1.txt>> heißt: Johannes darf lesen, komplette Gruppe familie darf lesen, alle> anderen dürfen nichts.> Wenn ich jetzt also noch einen benutzer anlege und diesen in der Gruppe> familie unterbringe, darf dieser Benutzer ebenfalls die Datei lesen.>> Aber wer darf die Datei jetzt noch löschen? nur ich mit sudo? Oder gibt> es noch andere wege?> Wie kann ich es machen, dass ein Benutzer aus familie mehr rechte (lesen> und schreiben) bekommt?>> Jetzt möchte ich gerne noch eine zweite Gruppe anlegen. familie2> Wie kann ich denn jetzt Einstellen, dass familie2 auch zugriffsrechte> bekommt?> Ich müsste ja eigentlich erst mit chown den Besitzer wechseln? Was> passiert dann mit den Berechtigungen für familie?
Datei neu anlegen oder Löschen braucht Schreibrechte auf das
Verzeichnis. Also
chown johannes:familie testfolder1/
chmod ug+rwx testfolder1/
Will man das feiner steuern braucht man ACLs (Access Control List).
Siehe z.B. https://wiki.ubuntuusers.de/ACL/
Nikolaus S. schrieb:> Datei neu anlegen oder Löschen braucht Schreibrechte auf das> Verzeichnis. Also>> chown johannes:familie testfolder1/> chmod ug+rwx testfolder1/
Wenn Benutzer2 auch schreibrechte haben soll (Benutzer3 aber z.B.
nicht), muss ich das mit ACLs machen?
Oder ich ändere den Benutzer zu Benutzer2? was wird dann mit den Rechten
von johannes?
Johannes schrieb:> Wenn Benutzer2 auch schreibrechte haben soll (Benutzer3> aber z.B. nicht), muss ich das mit ACLs machen?> Oder ich ändere den Benutzer zu Benutzer2? was wird dann> mit den Rechten von johannes?
Ganz allgemein: Du musst für jede Teilmenge der Nutzer,
die in genau dieser Zusammenstellung für wenigstens eine
Datei Privilegien genießen dürfen, eine eigene Gruppe
definieren. Es ist nicht möglich, Gruppen von Gruppen zu
bilden oder zu einer Gruppe fallweise noch einzelne Nutzer
dazuzunehmen oder auszuschließen.
Die einzige Ausnahme ist nur der Eigentümer; der muss nicht
Mitglied der privilegierten Gruppe sein, weil er ja sowieso
die Eigentümerrechte hat.
Wenn es die Nutzer "Mutter", "Vater", "Lisa", "Hannes" und
"Oma" gibt, dann müssten also 2^5-1 = 31 Gruppen eingerichtet
werden, damit alle Kombinationen möglich sind (die leere
Gruppe ist nicht erforderlich).
Wie wäre es mit "chmod 640" für die Datei? Der Besitzer kann dann lesen
und schreiben, die Gruppe nur lesen. Wie bereits gesagt entspricht Datei
anlegen/löschen dem Schreibrecht auf dem Ordner. Allerdings ist "ug+rwX"
genau das, was der der TO nicht will. Richtig wäre für den Order
"u=rwx,g=rx,o-rwx" oder anders "chmod 750". ACLs braucht man hierfür
noch lange nicht.
Johannes schrieb:> Wenn Benutzer2 auch schreibrechte haben soll (Benutzer3 aber z.B.> nicht), muss ich das mit ACLs machen?> Oder ich ändere den Benutzer zu Benutzer2? was wird dann mit den Rechten> von johannes?
Vielleicht hilft Dir das zum Verständnis:
Im klassischen Linux-Dateiberechtigungs-System hat jede Datei genau
einen zugeordneten "Eigentümer", einen Benutzer. Weiterhin hat jede
Datei genau eine zugeordnete "Gruppe", eine Benutzergruppe.
Dieses vergleichsweise einfache/minimalistische Berechtigungssystem ist
natürlich etwas eingeschränkt. Weil man eben bspw. nicht sagen kann:
Sowohl die Mitglieder von "Benutzergruppe2" als auch die Mitglieder von
"Benutzergruppe3" als auch "Benutzer3" und Benutzer4" (die in keiner der
beiden Benutzergruppen sind), haben diesen und jeden Zugriff.
Das ist gerade für Windows-Umsteiger ungewohnt, weil die das von Windows
halt anders kennen, wo die Dateisystem-Berechtigungen viel komplexer
vergeben werden können.
Linux ermöglicht mit einer irgendwann eingeführten Erweiterung namens
ACL (Access Control Lists) aber ebenfalls solche komplexen
Berechtigungen. Hauptunterschied ist, dass eine Datei klassischerweise
nur genau eine Benutzergruppe etc. haben kann, bei ACL hingegen eine
beliebig lange LISTE von Berechtigungen.
Obwohl wahrscheinlich jedes Desktop-Linux und die meisten Linux-Server
ACL von Haus aus unterstützen, werden ACLs in der Praxis trotzdem nur
äusserst selten verwendet. Das minimalistische klassische
Berechtigungssystem ist in den meisten Fällen doch ausreichend und
leichter zu handhaben; ich würde vermuten dass ACL in der Praxis fast
ausschliesslich da zum Einsatz kommen, wo ein Linux-Server als
Dateiserver für andere PCs im gleichen Netzwerk verwendet wird.
Nikolaus S. schrieb:> Datei neu anlegen oder Löschen braucht Schreibrechte auf das> Verzeichnis.
Korrekt.
Die Berechtigungen auf die Datei bestimmen Lesen/Schreiben, die
Berechtigungen auf das Verzeichnis bestimmen Anlegen/Löschen.
Dabei sei hier noch eine kleine Spezialität erwähnt, die auch unter
Linux in /tmp angewandt wird: Hier können User beliebige Dateien
anlegen, aber nur ihre eigenen Dateien auch wieder löschen. Erreicht
wird das durch das "Sticky-Bit".
1
chmod +t Verzeichnis
Ich halte dieses Feature gerade für Ordner, die mehreren Usern zur
Verfügung stehen sollen, für äußerst nützlich. Zusätzlich müssen
natürlich die Regeln für Anlegen/Löschen, die durch das Write-Bit (user,
group, other) eingestellt werden, eingehalten werden.
P.S.
Beachte: Das Sticky-Bit für (ausführbare) Dateien hat eine gänzlich
andere Bedeutung als für Verzeichnisse.
Joachim S. schrieb:> Im klassischen Linux-Dateiberechtigungs-System hat jede Datei genau> einen zugeordneten "Eigentümer", einen Benutzer. Weiterhin hat jede> Datei genau eine zugeordnete "Gruppe", eine Benutzergruppe.
Was es auch noch gibt, ist der "Rest der Welt" - bzw. alle anderen
Benutzer. Man kann also beispielsweise einstellen, dass alle Benutzer
eine Datei lesen dürfen, aber nur die Gruppe auch schreiben darf.
Nur mehrere begrenzte Gruppen mit unterschiedlichen Rechten gehen eben
ohne ACL nicht.
Egon D. schrieb:> Es ist nicht möglich, Gruppen von Gruppen zu> bilden oder zu einer Gruppe fallweise noch einzelne Nutzer> dazuzunehmen oder auszuschließen.
Nunja... wenn man seine User in einem LDAP verwaltet, geht das schon,
aber jemand, der nach den Basics von Benutzerrechten fragt, dürfte
vermutlich noch eine Weile brauchen, um so etwas einrichten zu können...
Johannes schrieb:> Hallo,> ich habe ein Verständnisproblem für Berechtigungen unter Linux.>> angenommen ich habe einmal> testfolder1/f1.txt>> Ich habe angefangen eine Gruppe (familie) zu erstellen, welche momentan> einen user hat (Johannes)> Jetzt möchte ich gerne für dieser Gruppe Berechtigungen (nur lesen)> anlegen.>> chown johannes:familie testfolder1/f1.txt> chmod 440 testfolder1/f1.txt>> heißt: Johannes darf lesen, komplette Gruppe familie darf lesen, alle> anderen dürfen nichts.> Wenn ich jetzt also noch einen benutzer anlege und diesen in der Gruppe> familie unterbringe, darf dieser Benutzer ebenfalls die Datei lesen.>> Aber wer darf die Datei jetzt noch löschen? nur ich mit sudo? Oder gibt> es noch andere wege?> Wie kann ich es machen, dass ein Benutzer aus familie mehr rechte (lesen> und schreiben) bekommt?>> Jetzt möchte ich gerne noch eine zweite Gruppe anlegen. familie2> Wie kann ich denn jetzt Einstellen, dass familie2 auch zugriffsrechte> bekommt?> Ich müsste ja eigentlich erst mit chown den Besitzer wechseln? Was> passiert dann mit den Berechtigungen für familie?
Wir können jetzt hunderte Postings mit Millionen von Worten schreiben,
aber jede Beschreibung wird immer abstrakt bleiben. Zudem gibt es
bereits einen Haufen an guten Texte zu diesem Thema; eine Suche nach
"linux permissions tutorial" und/oder "linux dateirechte erklärt"
liefert viele, viele tausend lesenswerte Ergebnisse.
Ansonsten empfehle ich Dir wärmstens, einfach mal ein bisschen herum zu
spielen und es auszuprobieren. Das muß ja nicht auf Deiner "richtigen"
Installation passieren, sondern kann auch in einer VM oder einem
Docker-Container passieren, wie Du magst. Sofern Docker installiert ist,
landest Du mit dem Befehl "docker run -it --rm ubuntu" direkt auf der
Rootshell eines Containers mit einem Ubuntu-Linux, darin kannst Du
spielen soviel Du willst, und wenn Du diesen Container wieder verläßt,
wird er (aber nicht das Image!) automatisch wieder gelöscht (--rm).
Ansonsten kann man mit ACLs weitere Freigaben einstellen, oder mit
Techniken wie AppArmot, SE-Linux oder RSBAC weitere Einschränkungen. Ich
empfehle Dir aber, daß Du erst einmal die Basics erlernen und
beherrschen solltest, bevor Du Dich an das Erforschen weiterer
Möglichkeiten begibst.
Nebenbei bemerkt: wenn Du bei der Erforschung der Basics mit den
einfachen Rechten (read, write, execute) für Dateibesitzer, Gruppen, und
Andere durch bist, empfehle ich Dir wärmstens, Dich auch mit den
weiteren Möglichkeiten vertraut zu machen, also Setuid-, Setgid- und
Sticky-Bits auf Dateien und insbesondere auch auf Verzeichnissen! Viel
Erfolg!