
Ich habe Stunden damit verbracht herauszufinden, warum es nicht richtig läuft, aber ich gebe jetzt auf, also bin ich hier.
Mein Setup/Problem: Ich habe einen Remote-VPS, mit dem ich mich über SSH verbinde (Pub/Priv-Schlüssel, kein Passwort).
Der Benutzer ist Debian.
Auf diesem VPS betreibe ich einen postgres:14.3-alpine
Docker-Container.
Dieser Docker hat zwei Volumes in /home/debian gemountet:
postgres-certs
postgres-data
Die Benutzer-/Gruppen-ID des Benutzers im Docker ist 70. Weitere InformationenHier:
Wie Sie vielleicht wissen, gibt es Sicherheitsregeln für Zertifikate. Daher habe ich, wie im obigen Link erläutert, dem postgres-certs
Ordner die Rechte 640 zugewiesen:
drw-r----- 2 0 70 4096 jun 7 22:45 postgres-certs
drwxr----- 19 70 1000 4096 jun 11 20:40 postgres-data
Wie Sie sehen, verfügen beide Ordner über Gruppenleserechte.
Hier finden Sie meine Gruppen:
debian@db-dev:~$ id
uid=1000(debian) gid=1000(debian) groups=1000(debian),70(docker-pg-alpine),998(docker)
Wie Sie sehen, befinde ich mich in den Gruppen 70 und 1000, die in den beiden Ordnern gleich definiert sind.
Wenn ich versuche, eine Datei in einem dieser Ordner per cat zu durchsuchen, erhalte ich Folgendes (es funktioniert natürlich, wenn ich es mit sudo ausführe):
debian@db-dev:~$ cat postgres-certs/server.crt
cat: postgres-certs/server.crt: Permission denied
Nur um Ihnen zu beweisen, dass die Datei dieselben Berechtigungen hat wie sein Verzeichnis:
debian@db-dev:~$ sudo ls -ln postgres-certs/server.crt
-rw-r----- 1 0 70 2903 jun 7 22:44 postgres-certs/server.crt
Ja, ich habe mich abgemeldet (SSH getrennt, sogar neu gestartet) und meinen Container angehalten, um sicherzustellen, dass er keine Probleme verursacht.
Ich verstehe einfach nicht, warum ich in diesen Ordnern keine verdammte Datei caten kann, während sie über Gruppenleserechte verfügen und ich zu den Gruppen gehöre …
Es wäre wunderbar, wenn Sie herausfinden könnten, was nicht stimmt.
Antwort1
Um auf die Dateien zugreifen zu können, müssen Sie x
das Verzeichnis festgelegt haben.
Bei einer Datei ermöglicht (x) die Ausführung, wenn es sich bei der Datei um ein Programm handelt.
Bei einem Verzeichnis können Sie mit (x) ein Verzeichnis aufrufen und auf die Dateien zugreifen.
Entsprechenddie chmod
Manpage, (x) erteilt die Suchberechtigung für Verzeichnisse.
Die Buchstaben rwxXst wählen Dateimodus-Bits für die betroffenen Benutzer aus: Lesen (r), Schreiben (w), Ausführen (oder nach Verzeichnissen suchen) (x), Ausführen/Suchen nur, wenn die Datei ein Verzeichnis ist oder bereits Ausführungsberechtigung für einen Benutzer hat (X), Benutzer- oder Gruppen-ID bei Ausführung festlegen (s), Flag für eingeschränktes Löschen oder Sticky Bit (t).
DemzufolgeUnix-Dateisystemdokument, (x) ermöglicht Ihnen, das Verzeichnis aufzurufen und auf die Dateien zuzugreifen.
Bei Verzeichnissen ermöglicht Ihnen die Ausführungsberechtigung, das Verzeichnis zu betreten (d. h. per CD hineinzuwechseln) und auf alle darin enthaltenen Dateien zuzugreifen.
Zum Nachschlagen, Du könntest benutzen:
sudo chmod g+x ~/postgres-certs
um der Gruppe die Berechtigung (x) für ein Verzeichnis hinzuzufügen.
Anstatt die Berechtigung auf 650 zu ändern, sollten Sie jedoch wahrscheinlich Folgendes verwenden:
sudo cat postgres-certs/server.crt
damit Sie den Standardberechtigungssatz für das Verzeichnis beibehalten können.