Datei kann nicht gelesen werden, obwohl sie sich in meiner Gruppe befindet und Berechtigungen für das Lesen von Gruppen festgelegt sind

14

Ich stoße auf einem Unix / Linux-Rechner auf ein seltsames Problem:

Ich bin Mitglied einer Gruppe, nennen wir es Gruppe A, und eine bestimmte Datei (die einen anderen Eigentümer hat) gehört ebenfalls zu Gruppe A. Die Berechtigungen dieser Datei sind

-rw-rw----

Ich würde also erwarten, dass ich diese Datei öffnen kann, aber das tue ich nicht: Wenn ich versuche, den Inhalt der Datei zu überprüfen (mit cat), wird die Fehlermeldung "Permission denied" angezeigt.

Da die Berechtigungen korrekt zu sein scheinen, was könnte dies sonst noch verursachen? Gibt es "überschreibende" Berechtigungsbeschränkungen? Wenn ja, wie würde ich das herausfinden?

Lagerbaer
quelle
2
Was ist mit Verzeichnisberechtigungen?
Karlson
Wenn Sie in mehreren Gruppen sind, ist Ihre aktuelle Gruppe auf A eingestellt?
Code-Guru
2
@ Karlson, wenn Verzeichnisberechtigungen das Problem wären, könnten Sie die Berechtigungen der Datei nicht an erster Stelle sehen.
cjm
Zeigen Sie uns bitte den vollständigen Pfad und Dateinamen.
jippie
Es ist in /home/theotheruser/somefolder/bla.txt Ich bin in mehreren Gruppen.
Lagerbaer

Antworten:

8

Haben Sie sich abgemeldet und wieder angemeldet, seit Sie zu Gruppe A hinzugefügt wurden?

Wenn nicht, haben Ihre aktuellen Anmeldeprozesse nur die Gruppenmitgliedschaften, die sie zum Zeitpunkt der Anmeldung hatten, und keine Änderungen seitdem. Alle untergeordneten Prozesse dieses Logins haben die gleichen Gruppenmitgliedschaften (dh, wenn Sie sich bei X angemeldet haben, werden alle Anwendungen einschließlich Terminalemulator und Shell verwendet).

Sie können dies testen, indem Sie sich erneut an einer anderen Konsole oder über ssh anmelden oder so etwas wie exec sudo -u $(id -u -n) -i(um die aktuelle Shell effektiv zu beenden und durch eine neue Shell zu ersetzen - alle Hintergrundprozesse, die zu dieser Shell gehören, werden verwaist).

cas
quelle
Nein, das war nicht das Problem. Ich habe mich ab- und wieder angemeldet und das hat es nicht gelöst.
Lagerbaer
3

Bei NFS hängt es davon ab, welchen Sicherheitsmodus Sie verwenden. Bei der herkömmlichen Methode wird die Liste der Gruppen, zu denen der Benutzer gehört, vom Client an den Server gesendet, und die Anzahl der Gruppen, die gesendet werden können, ist begrenzt (bisher) 16 das letzte mal habe ich nachgesehen).

Der Kunde sagt also: Ich bin UID 1234 und übrigens Mitglied der Gruppen 12, 13, 14 ... Wenn Sie in mehr als 16 Gruppen sind, wird diese Liste abgeschnitten und es gibt Gruppen für Dem Server ist nicht bekannt, dass Sie Mitglied sind.

Das ist wahrscheinlich die Erklärung dafür. Nur der Systemadministrator des lokalen und / oder fernen Computers kann etwas dagegen tun, indem er entweder das Sicherheitsmodell oder die Einstellung des NFS-Servers ändert oder die Anzahl der Gruppen verringert, denen Sie angehören.

Stéphane Chazelas
quelle
Ich habe das starke Gefühl, dass dies der Grund ist, weil die Gruppe, die ich bin, in der Ausgabe des Befehls "groups" auf Position 19 erscheint. Ich werde diese Antwort dem Sys-Administrator zeigen und sehen, ob es hilft. :)
Lagerbaer
Wie würden Sie das "Sicherheitsmodell" in NFS ändern, um dieses Problem zu lösen?
Danny
2

Wie Sie in einem Kommentar notieren, haben Sie keine Leseberechtigung für /home/username. Zum Lesen /home/username/path1/path2/filebenötigen Sie jedoch Ausführungsberechtigungen für den gesamten Pfad.

Führen Sie namei -l /home/username/path1/path2/filezum Debuggen dieses Problems den Benutzer aus, der die Datei liest.

Adam Trhon
quelle
Das war das Problem in meinem Fall. Ich wollte einem anderen Benutzer das Recht geben, auf den Unterordner meines Home-Verzeichnisses zuzugreifen, aber mein Home-Verzeichnis hat Zugriff auf 700, sodass er für jeden Befehl die Berechtigung "Verweigert" erhielt.
Cerberus
1

Könnten ACLs sein. Sehen

getfacl the-file

Könnte sein, dass aus irgendeinem Grund die Gruppen, in denen Sie sein sollen, nicht richtig eingestellt sind. Überprüfen Sie mit

id -a

Wie wäre es mit

namei -xl "$(readlink -f the-file)"

getfattr -dm- the-file

sudo lsattr the-file

Was ist der Typ des Dateisystems, in dem es sich befindet?

Gibt es AppArmor, SELinux oder eine andere obligatorische Zugriffskontrolle im System?

Du bist sicher, dass die Datei nicht den Text "Permission denied" enthält, oder?

Stéphane Chazelas
quelle
Nein, es gibt keine spezielle ACL, sie wiederholt nur, was mir die Standardflags sagen, und id -a sagt mir, dass ich in der Gruppe dieser Datei bin
Lagerbaer
Das Seltsame ist, dass ich die Dateien eines anderen Benutzers der Gruppe B sehen kann, zu der auch ich
gehöre
Dateisystem scheint nfs4 zu sein. Namei gibt mir / und Heimat von root, root. / home / benutzername gehört zu benutzername und gruppe X (zu der ich kein mitglied bin), dann ist der rest / home / benutzername / pfad1 / pfad2 / datei, wobei pfad1 zu benutzername und gruppe X gehört und pfad2 zu benutzername und Gruppe A, der ich angehöre.
Lagerbaer