18.7: /var/lib/postgresql is 755 instead of 1777, breaks running as an arbitrary user

Offen Anfängerfreundlich
#1,427 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
2/5
Geschätzter Aufwand
1-3 Stunden
Anfängerfreundlichkeit
72/100
Issue-Typ
Bug
Klarheit
Klar beschrieben
Aktivitätsstatus
Aktiv
Tech-Stack
docker, postgresql
Bereich
databases

Rechercherichtung

Lies zunächst den Abschnitt im Dockerfile, der /var/lib/postgresql auf den Modus 1777 setzt, sowie die Beschreibung des Issues zur tmpfiles-Konfiguration und zum Post-Installationsschritt von postgresql-common. Baue das Debian-basierte Image postgres:18.7 und führe es mit einer beliebigen UID aus. Prüfe dabei den Verzeichnismodus und ob der Start erfolgreich ist. Erledigt ist die Aufgabe, wenn das Verzeichnis für eine beliebige UID weiterhin nutzbar ist und der Container erfolgreich startet.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

We noticed this when our CI broke after postgres:18 moved to 18.7. We run the image as a service container on OpenShift, which starts it with an arbitrary UID, and it now exits at once:

$ docker run --rm --user 1000770000:0 -e POSTGRES_PASSWORD=x postgres:18.7
mkdir: cannot create directory ‘/var/lib/postgresql/18’: Permission denied

/var/lib/postgresql was 1777 and is now 755:

$ docker run --rm --entrypoint stat postgres:18.6 -c %a /var/lib/postgresql
1777
$ docker run --rm --entrypoint stat postgres:18.7 -c %a /var/lib/postgresql
755

It looks like postgresql-common 294 resets it: it now ships /usr/lib/tmpfiles.d/postgresql-common.conf with d /var/lib/postgresql 0755 postgres postgres, and its postinst runs systemd-tmpfiles --create, after the Dockerfile's install --mode 1777. The alpine variant still has 1777.

Vorherrschende Sprache
Shell
Sterne
2.5k
Forks
1.2k
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Entwicklungsumgebung

Dieses Projekt bietet weder Dev-Container noch Dockerfile noch Beitragsleitfaden – die Einrichtung liegt bei Ihnen. Beginnen Sie mit der README; die allgemeinen Schritte stehen in unserem Leitfaden für den ersten Beitrag.

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus docker-library/postgres

Alle Issues in docker-library/postgres

Ähnliche Issues

Weitere Issues zu Shell/Bash

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.