Ich benutze Linux schon lange und ichTrotzdembin völlig im Dunkeln, was die Funktionsweise von Dateiberechtigungen angeht. Hat jemand vor diesem Hintergrund Bücher oder ausführliche Anleitungen, die ich lesen könnte, um die Dinge wirklich vollständig zu verstehen? Ich habe schon einiges an Erfahrung als Systemadministrator gesammelt und kenne mich daher mit den einfachen Dingen aus, wie Verzeichnisse lesbar und beschreibbar zu machen, Dateien ausführbar zu machen und den Besitzer einer Datei zu ändern, aber beim Teilen von Dateien zwischen Benutzern bin ich ratlos.
Hier ist mein Hauptproblem. Ich habe mehrere Rechner, zwischen denen ich meine Musikbibliothek synchronisieren möchte. Ich verwende Unison schon seit einiger Zeit und es ist eine großartige Wahl, da ich es problemlos über SSH in meinem lokalen Netzwerk ausführen kann, das ich gerade eingerichtet habe. Eine Win-Win-Situation.
Bis jetzt habe ich Computer mit einer externen 2-TB-Festplatte synchronisiert. (Computer 1 Unison mit HD, Computer 2 Unison mit HD usw.) Das ist bestenfalls mühsam, vor allem, da ich die Festplatte verschlüsselt habe, was es sehr mühsam macht, sie an alle meine Maschinen anzuschließen und zu synchronisieren. Wie auch immer, die Festplatte läuft mit ext4 (in TrueCrypt), sodass alle Unix-Dateisysteminformationen wie Besitzer und Gruppen erhalten bleiben. Ich habe gerade eine neue Maschine eingerichtet und sie einfach mit Unison verbunden, um die Musik darauf zu bekommen, und mir ist aufgefallen, dass jetzt alle meine Berechtigungen im Eimer sind. Ich musste Unison als Root ausführen, da das die einzige Möglichkeit war, die Dateien von der externen Festplatte zu bekommen. Da ich auf dieser Maschine anscheinend einen anderen Benutzernamen als mein übliches „rfkrocktk“ auf allen Maschinen verwende, macht das im Grunde einen riesigen Strich durch die Rechnung.
Hier ist mein Anwendungsfall. Dieser Laptop hat zwei effektive Benutzer, „leandra“ und „rfkrocktk“. Ich möchte Musik zwischen diesen beiden Benutzern teilen, also habe ich /home/rfkrocktk/Music mit einem symbolischen Link verknüpft, sodass es auf /home/leandra/Music verweist. Wie erlaube ich (a) beiden Benutzern den Zugriff zum Lesen/Schreiben/Löschen von Dateien in diesem Ordner und (b) halte ich alles schön synchron, ohne die Dateieigentümerschaft durcheinander zu bringen?
BEARBEITEN
Ich konnte die Dinge einigermaßen zum Laufen bringen, aber noch nicht vollständig. Ich habe die Gruppen-ID meines Musikverzeichnisses auf meine Gruppe gesetzt media-users
und sowohl meinen Hauptbenutzer rfkrocktk
als auch den gemeinsamen Benutzer mt-daapd
zur Gruppe hinzugefügt. Jetzt rfkrocktk
kann ich problemlos auf die Dateien zugreifen, mt-daapd
kann aber nichts im Verzeichnis sehen. Hier sind meine IDs:
$ id rfkrocktk
> uid=1000(rfkrocktk) gid=1000(rfkrocktk) groups=1000(rfkrocktk),4(adm),20(dialout),24(cdrom),29(audio),46(plugdev),104(lpadmin),115(admin),120(sambashare),124(vboxusers),1001(jupiter),2002(media-users)
$ id mt-daapd
> uid=123(mt-daapd) gid=65534(nogroup) groups=65534(nogroup),2002(media-users)
Ich habe versucht, mt-daap
die Hauptgruppen-ID von auf die media-users
Gruppe festzulegen, aber es ändert sich nichts.
Hier sind meine Berechtigungen für das /home/rfkrocktk/Music
Verzeichnis:
drwxr-Sr-- 201 rfkrocktk media-users 12288 2011-01-13 12:26 Music
Beim Ausführen sudo -i -u mt-daapd ls -l /home/rfkrocktk/Music
wird nichts ausgeführt. Wie kann ich das beheben?
Antwort1
Ich würde den Dateibesitzer auf root setzen und die Gruppe auf etwas wie „Musik“ und es dann so einrichten, dass beide Mitglieder der Gruppe „Musik“ sind. Dann mache ich das Musikverzeichnis zu setgid(das bedeutet, dass im Verzeichnis erstellte Elemente den Gruppenbesitz des Verzeichnisses selbst erben). Setzen Sie dann die Dateiberechtigungen auf 0660 und schon sind Sie fertig.
Die Dateiberechtigungen lauten „Benutzer“, „Gruppe“ und „Welt“ und werden häufig als Oktalzahl angezeigt (z. B. 0660), wobei:
1 - ausführen 2 - schreiben 4 - lesen
Diese können hinzugefügt werden, so dass beispielsweise 0751 bedeutet, dass der Dateibesitzer lesen, schreiben und ausführen kann; die Gruppe kann lesen und ausführen; alle anderen dürfen nur ausführen.
Antwort2
Namen spielen keine Rolle. Unix-Datei- und Gruppeneigentümer werden im Dateisystem gespeichert und zwar numerisch, nicht nach Namen. Öffnen Sie auf Ihrem ursprünglichen Computer ein Terminal als Ihr normaler Benutzer und sagen Sie:
id -u
Damit erhalten Sie die numerische ID Ihres Benutzers. Bei der Überprüfung der Dateieigentümerschaft wird Ihre angemeldete Benutzer-ID mit der ID im Dateisystem verglichen. Bei der Anzeige des Benutzernamens wird die ID durch eine Abfrage von passwd in Text umgewandelt, woraus sich Ihr lokaler Name ergibt.
Führen Sie auf Ihrem neuen Computer den gleichen Schritt wie oben aus. Ist die ID anders? Wenn sie anders ist, sind „Sie“ auf dem neuen Computer nicht der Eigentümer der Dateien. Auf beiden Computern gilt das Gleiche, wenn Sie sagen
id -G
Sie erhalten eine Liste der Gruppen-IDs, zu denen Ihr Benutzer gehört. Die Gruppe jeder Datei muss mit einer dieser IDs übereinstimmen, sonst gehört sie nicht Ihnen. Sie können den tatsächlichen numerischen Benutzer und die Gruppe einer Datei mit ls -nd file
oder abrufen stat file
.
In den meisten Fällen haben zwei verschiedene Systeme nicht die gleichen Benutzer-IDs. Sie können sie manuell synchronisieren, indem Sie passwd bearbeiten, aber dann müssen Sie alle Dateien auf dem System sorgfältig aktualisieren, um alle alten IDs in die entsprechenden neuen zu konvertieren. Das Synchronisieren von IDs zwischen Systemen ist eine komplexe Aufgabe, mit der sich die meisten Heimanwender nicht beschäftigen; es ist die Domäne von LDAP, NIS und anderen Lösungen dieser Art.
Um Ihr Problem zu lösen, sollten Sie allen Dateien eine Gruppen-ID zuweisen, die auf beiden Systemen vorhanden ist. Stellen Sie anschließend sicher, dass Benutzer auf beiden Systemen Mitglieder der Gruppe sind, und erteilen Sie chmod g+rw
dieser Gruppe dann Lese-/Schreibzugriff ().
Antwort3
Sie können das Musikverzeichnis (und alle seine Dateien und Unterverzeichnisse) auf 775 Berechtigungen einstellen, sodass der Eigentümer der Dateien und jeder in derselben Gruppe mit den Dateien machen kann, was er will. Der nächste Trick besteht dann darin, eine neue Gruppe mit einem beliebigen Namen (z. B. „share“) zu erstellen und das Musikverzeichnis (und alle seine Dateien und Unterverzeichnisse) in die neue Gruppe zu ändern. Jetzt müssen Sie nur noch sicherstellen, dass Benutzer, denen Sie Lese-/Schreibzugriff auf die freigegebenen Dateien gewähren möchten, in der Gruppe „share“ sind. Wenn Sie dies mit anderen Computern zum Laufen bringen müssen, achten Sie einfach darauf, dass die Freigabegruppe auf allen Computern dieselbe numerische ID hat, und alles ist in Ordnung.
Antwort4
HierHier ist eine Erklärung der Berechtigungen, die ich nützlich fand. Dieses hier, zu.