Unix-Berechtigungen: Zugriff auf Dateien unabhängig vom Benutzer aktivieren?
4794
Naftuli Kay
Ich benutze Linux seit langem und bin mir immer noch völlig im Unklaren, wie Dateiberechtigungen wirklich funktionieren. 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 meinen gerechten Anteil an Sysadminning geleistet, also weiß ich, wie einfach es ist, Verzeichnisse lesbar und beschreibbar zu machen, Dateien ausführbar zu machen und den Besitzer einer Datei zu ändern, aber wenn ich Dateien zwischen Benutzern austausche, bin ich verloren.
Hier ist mein Hauptproblem. Ich habe eine Reihe von Maschinen, über die ich meine Musikbibliothek synchronisieren möchte. Ich benutze Unison jetzt schon eine Weile 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. Win-Win
Bis zu diesem Zeitpunkt habe ich Computer mit einer externen 2-TB-Festplatte synchronisiert. (Computer 1 unison to HD, computer 2 unison to HD usw.) Dies ist im besten Fall langwierig, zumal ich das Laufwerk verschlüsselt habe. Dies macht es sehr umständlich, es an alle meine Computer anzuschließen und es zu synchronisieren. Auf jeden Fall wird auf dem Laufwerk ext4 (in TrueCrypt) ausgeführt, sodass alle Informationen zum Unix-Dateisystem wie Besitzer und Gruppen verwaltet werden. Ich habe gerade eine neue Maschine eingerichtet und nur Unison hat die Musik dazugehört, und mir wurde klar, dass jetzt alle meine Berechtigungen Fubar sind. Ich musste Unison als root ausführen, da dies die einzige Möglichkeit war, die Dateien vom externen Laufwerk abzurufen. Anscheinend, da ich auf diesem Rechner einen anderen Benutzernamen als mein gewöhnlicher "rfkrocktk" für alle Rechner verwende, wirft dies im Wesentlichen einen großen Schlüssel in die Zahnräder.
Hier ist mein Anwendungsfall. Dieser Laptop hat zwei effektive Benutzer, "leandra" und "rfkrocktk". Ich möchte Musik zwischen diesen beiden Benutzern teilen, daher habe ich / home / rfkrocktk / Music mit dem Link / home / leandra / Music verknüpft. Wie kann ich (a) beiden Benutzern Zugriff auf das Lesen / Schreiben / Löschen von Dateien in diesem Ordner gewähren und (b) alles schön synchron halten, ohne den Besitz der Dateien zu beeinträchtigen?
BEARBEITEN
Ich konnte Dinge zum Laufen bringen, aber noch nicht vollständig. Ich habe die Gruppen-ID meines Musikverzeichnisses für meine Gruppe festgelegt media-usersund sowohl meinen Hauptbenutzer rfkrocktkals auch den freigegebenen Benutzer mt-daapdzur Gruppe hinzugefügt . Jetzt rfkrocktkkann perfekt auf die Dateien zugegriffen werden, es wird jedoch mt-daapdnichts im Verzeichnis angezeigt. 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-daapdie Hauptgruppen-ID für die Gruppe festzulegen, media-usersändert aber nichts.
Hier sind meine Berechtigungen für das /home/rfkrocktk/MusicVerzeichnis:
drwxr-Sr-- 201 rfkrocktk media-users 12288 2011-01-13 12:26 Music
Laufen sudo -i -u mt-daapd ls -l /home/rfkrocktk/Musicbringt nichts. Wie kann ich das beheben?
Dateiberechtigungen sind Benutzer, Gruppe, Welt und oft als Oktalzahl (z. B. 0660) angegeben. Dabei gilt Folgendes:
1 - Exec 2 - Schreiben 4 - Lesen
Diese können hinzugefügt werden, so bedeutet beispielsweise 0751, dass der Dateieigentümer lesen, schreiben und ausführen kann. Die Gruppe kann lesen und ausführen. Alle anderen dürfen nur ausführen.
Ok, also habe ich gerade eine Gruppe mit dem Namen `media-users 'erstellt, beide Benutzer zu dieser Gruppe hinzugefügt und dann chgrp `d mein Musikverzeichnis so gruppiert, dass es zu der` media-users'-Gruppe wie folgt gruppiert wird: `sudo chgrp -R Medienbenutzer / home / $ USER / Music`. Dann habe ich dieses Verzeichnis geändert, um folgende Perms zu haben: `sudo chmod -R 0744 / home / $ USER / Music ', damit ich rxw kann, aber Benutzer in der Gruppe r. Sollte das gut genug sein? Wie mache ich Ihren `setgid`-Trick, um neu erstellte Verzeichnisse in der Gruppe zu behalten?
Naftuli Kay vor 13 Jahren
0
Das sollte in der Tat gut genug sein, ja. Um setgid für das Verzeichnis zu aktivieren, aktiviert ein einfacher "chmod g + s dirname" (oder "chmod g + s.", Wenn Sie sich bereits in diesem Verzeichnis befinden) das setgid-Bit für die Berechtigungen des Verzeichnisses. (Sie können r, w, x, s oder t für den Berechtigungsteil verwenden, dh Lesen, Schreiben, Ausführen, Festlegen (uid | gid) oder Sticky.)
Michael Trausch vor 13 Jahren
0
Hmm, es scheint, ich habe einen Haken getroffen. Wenn ich versuche, das Musikverzeichnis als meinen anderen Benutzer zu "ls", sehe ich nichts. :( Dies ist der Befehl, den ich ausgeführt habe, um das zu testen: `sudo -i -u mt-daapd ls / home / $ USER / Music '.) Wenn ich es als normaler Benutzer betreibe, funktioniert es großartig Beitrag oben mit neuen Informationen zu meinen Benutzern und Gruppen. Könnten Sie bitte einen Blick darauf werfen?
Naftuli Kay vor 13 Jahren
0
Eigentlich hier gelöst: http://superuser.com/questions/232949/
Naftuli Kay vor 13 Jahren
0
3
phogg
Namen spielen keine Rolle Unix-Datei- und Gruppeneigentümer werden im Dateisystem und nicht nach Namen, sondern numerisch gespeichert. Öffnen Sie von Ihrem Originalcomputer aus ein Terminal als normalen Benutzer und sagen Sie:
id -u
Hier erhalten Sie die numerische ID Ihres Benutzers. Bei der Überprüfung des Besitzes von Dateien wird ein Vergleich zwischen Ihrer angemeldeten Benutzer-ID und der ID im Dateisystem durchgeführt. Bei der Anzeige des Benutzernamens wird die ID durch Abfragen von passwd in Text umgewandelt, was zu Ihrem lokalen Namen führt.
Führen Sie auf Ihrem neuen Computer den gleichen Schritt wie oben aus. Ist die ID unterschiedlich? Wenn es anders ist, sind "Sie" auf dem neuen Computer nicht der Besitzer der Dateien. Auf beiden Maschinen ähnlich, wenn Sie sagen
id -G
Sie erhalten eine Liste mit Gruppen-IDs, zu denen Ihr Benutzer gehört. Jede Dateigruppe muss mit einer dieser IDs übereinstimmen oder gehört nicht zu Ihnen. Mit ls -nd fileoder können Sie den tatsächlichen numerischen Benutzer und die Gruppe einer Datei erhalten 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. Sie müssen jedoch alle Dateien im System sorgfältig aktualisieren, um alte alte 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 alle Dateien erstellen, die einer auf beiden Systemen vorhandenen Gruppen-ID gehören. Stellen Sie dann sicher, dass die Benutzer beider Systeme Mitglieder der Gruppe sind, und gewähren Sie der Gruppe Lese- / Schreibzugriff ( chmod g+rw) .
1
devius
Sie können für das Musikverzeichnis (und alle seine Dateien und Unterverzeichnisse) 775 Berechtigungen festlegen, sodass der Eigentümer der Dateien und alle Personen derselben Gruppe alles tun können, was sie möchten. Der nächste Trick besteht darin, eine neue Gruppe mit einem beliebigen Namen zu erstellen (z. B. share) und das Musikverzeichnis (und alle seine Dateien und Unterverzeichnisse) mit der neuen Gruppe zu chgrp. Jetzt müssen Sie nur noch sicherstellen, dass sich Benutzer, die Lese- / Schreibzugriff für die freigegebenen Dateien gewähren, in der Gruppe "Freigeben" befinden. Wenn Sie dies für andere Computer benötigen, achten Sie darauf, dass die Freigabegruppe auf allen Computern die gleiche numerische ID hat.
0
Xiong Chiamiov
Hier ist eine Erklärung der Berechtigungen, die ich für nützlich hielt. Auch diese .