Docker Container Zugriffsrechte wie konfigurieren (UID/GID), speziell: DokuWiki

Impidimpi

Benutzer
Mitglied seit
21. Aug 2014
Beiträge
69
Punkte für Reaktionen
5
Punkte
8
Hallo zusammen,

bei mir läuft grundsätzlich erfolgreich und schon länger DokuWiki als internes Wiki auf meiner DS216+II in einem Docker Container. Ich nutze Portainer und mache das meiste über Stacks. Hier mein yaml-Skript/Stack (ein bisschen für die Öffentlichkeit angepasst):

Code:
version: '3'
services:
  dokuwiki:
    image:  bitnami/dokuwiki:latest
    restart: always
    ports:
      - 8080:8080 # verändert fürs Forum
      - 8443:8443 # verändert fürs Forum
    environment:
      TZ: 'Europe/Berlin'
      PUID: 1030 # user 'wiki' verändert fürs Forum
      PGID: 65000 # group 'docker' verändert fürs Forum
      DOKUWIKI_USERNAME: 'user1' # verändert fürs Forum
      DOKUWIKI_FULL_NAME: 'Wiki' # verändert fürs Forum
      DOKUWIKI_PASSWORD: 'geheim' # verändert fürs Forum
    volumes:
      - /volume1/docker/dokuwiki:/bitnami/dokuwiki

Der User, den ich da angegeben habe, ist ein extra User für das Wiki. Mein Ziel war/ist es, die Zugriffsberechtigungen für die einzelnen Container einzuschränken, sodass ich einen extra User pro Container erstellen möchte und diesem dann nur gezielt Zugriff auf den jeweiligen Docker-Ordner geben möchte. Die Gruppe ist eine Docker-Gruppe für alle Container. Dieser Gruppe gebe ich erstmal Leserechte für den docker-Hauptordner, die spezifischen Rechte will ich über den User machen.

Nun ist es aber so, dass es anscheinend völlig egal ist welche Berechtigungen ich sowohl der Gruppe, als auch dem User gebe - die einzige Berechtigung, die der Container anscheinend braucht sind Leserechte von "SYSTEM". Sobald ich SYSTEM die Leserechte entziehe, funktioniert DokuWiki nicht mehr und beim Restart des Containers kommt dann auch ein "Permission denied" im Container-Log für den Docker-Ordner.

Was ist "SYSTEM" eigentlich? Ein root-user? Ich konnte dazu nicht wirklich etwas finden.

Kann mir hier Jemand helfen, oder Hinweise geben? Vielleicht auch zum allgemeinen Vorgehen bei der Rechtevergabe für Docker-Container, was hier sinnvoll ist und was nicht.

Danke und viele Grüße!
 
Zuletzt bearbeitet:

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.481
Punkte für Reaktionen
364
Punkte
103
Könntest Du deinen Post bitte richtig formatieren? Text markieren und auf das </> icon clicken (ggf. ist es unterhalb der drei vertikalen Punkte)
TZ: 'Europe/Berlin'
PUID: 1030 # user 'wiki' verändert fürs Forum
PGID: 65000 # group 'docker' verändert fürs Forum
Wie kommst Du darauf, dass dieses Image diese Variablen unterstützt? Sie sind zumindest in der DockerHub-Beschreibung nicht erwähnt.
Erfahrungsgemäßt heißt "nicht dokumentiert" nicht, dass sie vergessen haben es zu dokumentieren, sondern ein Feature einfach nicht unterstützt wird.

Das sind keine Docker Features, sondern Features die ein Image-Maintainer in seinem Image bereitstellt.
Kein Bitnami-Image unterstützt Usermapping (starten des Hauptprozesses mit anderer UID:GID.

Stattdessen muss hier das eingebaute Docker Feature `user: 1030:65000` (gleiche Ebene wie `image:`) verwendet werden.
 
  • Like
Reaktionen: Impidimpi

Impidimpi

Benutzer
Mitglied seit
21. Aug 2014
Beiträge
69
Punkte für Reaktionen
5
Punkte
8
Vielen Dank für deine Antwort, aber das wusste ich schlichtweg nicht, ich dachte, dass das bei docker-Containern Standard ist. So lange bin ich nicht in dieser (Docker/Container-) Welt, ich bitte um Nachsicht. Ich probiere es mal.

Was hat es denn mit diesem SYSTEM-"user" auf sich? Würde das gerne besser verstehen...
Könntest Du deinen Post bitte richtig formatieren? Text markieren und auf das </> icon clicken (ggf. ist es unterhalb der drei vertikalen Punkte)
Ich hab nach der Funktion gesucht, sie aber nicht gesehen. Habs jetzt gefunden, danke für den Hinweis.
 
Zuletzt bearbeitet von einem Moderator:
  • Like
Reaktionen: haydibe

Impidimpi

Benutzer
Mitglied seit
21. Aug 2014
Beiträge
69
Punkte für Reaktionen
5
Punkte
8
Ich habe nun 'user: 1030:65000' hinzugefügt und es getestet, also

Code:
version: '3'
services:
  dokuwiki:
    image:  bitnami/dokuwiki:latest
    user: 1030:65000
    restart: always
    ports:
      - 8080:8080 # verändert fürs Forum
      - 8443:8443 # verändert fürs Forum
    environment:
      TZ: 'Europe/Berlin'
      DOKUWIKI_USERNAME: 'user1' # verändert fürs Forum
      DOKUWIKI_FULL_NAME: 'Wiki' # verändert fürs Forum
      DOKUWIKI_PASSWORD: 'geheim' # verändert fürs Forum
    volumes:
      - /volume1/docker/dokuwiki:/bitnami/dokuwiki

So wird das Wiki leider gar nicht mehr richtig installiert, egal welchem User und welcher Gruppe ich Rechte gebe, das Log sagt immer "permission denied". Auch wenn ich SYSTEM die Rechte gebe. Ist da womöglich irgendwas am Image, das eben diesen SYSTEM "User" benötigt?
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.481
Punkte für Reaktionen
364
Punkte
103
Was hat es denn mit diesem SYSTEM-"user" auf sich? Würde das gerne besser verstehen...
Sagt mir nichts - stammt auf jeden Fall nicht aus der Docker-Welt selbst.

So wird das Wiki leider gar nicht mehr richtig installiert, egal welchem User und welcher Gruppe ich Rechte gebe, das Log sagt immer "permission denied". Auch wenn ich SYSTEM die Rechte gebe. Ist da womöglich irgendwas am Image, das eben diesen SYSTEM "User" benötigt?
Das Image scheint keine freie UID:GID Wahl zu unterstützen. Merkwürdig. Dabei sind Bitnami-Images schon die besseren (wenn auch nicht Neuling-freundlichsten) Images.

https://hub.docker.com/r/bitnami/dokuwiki/ schrieb:
NOTE: As this is a non-root container, the mounted files and directories must have the proper permissions for the UID 1001.

Demnach müsste user: 1001:65000 gehen.
 
  • Like
Reaktionen: Impidimpi

Impidimpi

Benutzer
Mitglied seit
21. Aug 2014
Beiträge
69
Punkte für Reaktionen
5
Punkte
8
Leider immer noch kein Erfolg, auch nicht mit 1001:65000. Folgende (Fehler-) Meldung im Log in Dauerschleife:

Code:
dokuwiki 22:27:15.87 INFO  ==> 
dokuwiki 22:27:15.88 INFO  ==> Welcome to the Bitnami dokuwiki container
dokuwiki 22:27:15.88 INFO  ==> Subscribe to project updates by watching https://github.com/bitnami/containers
dokuwiki 22:27:15.88 INFO  ==> Submit issues and feature requests at https://github.com/bitnami/containers/issues
dokuwiki 22:27:15.88 INFO  ==> Upgrade to Tanzu Application Catalog for production environments to access custom-configured and pre-packaged software components. Gain enhanced features, including Software Bill of Materials (SBOM), CVE scan result reports, and VEX documents. To learn more, visit https://bitnami.com/enterprise
dokuwiki 22:27:15.89 INFO  ==> 
dokuwiki 22:27:15.89 INFO  ==> ** Starting DokuWiki setup **
dokuwiki 22:27:15.93 WARN  ==> The Apache configuration file '/opt/bitnami/apache/conf/httpd.conf' is not writable. Configurations based on environment variables will not be applied.
mkdir: cannot create directory '/opt/bitnami/apache/conf/bitnami/certs': Permission denied

Was "SYSTEM" angeht: tatsächlich nutzt auch mein Pihole-Container (pihole/pihole) anscheinend diesen "Benutzer". Pihole läuft zwar irgendwie auch ohne Berechtigungen von SYSTEM, aber nicht richtig. Die Website zeigt dann keine Daten an, da stimmen dann Zugriffsrechte offensichtlich nicht. Ich hab aber noch nicht versucht Pihole mit einem anderen User aufzusetzen.
 

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
12.310
Punkte für Reaktionen
2.870
Punkte
423
Und das Verzeichnis /volume1/docker/dokuwiki existiert und dein Benutzer mit der UID 1001 hat Rechte?
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.481
Punkte für Reaktionen
364
Punkte
103
Was "SYSTEM" angeht
Kann ich nichts mit anfangen. Auch docker Container können damit nichts anfangen.
Womit ein Docker Container etwas anfangen kann ist eine UID und eine GID.

mkdir: cannot create directory '/opt/bitnami/apache/conf/bitnami/certs': Permission denied
Hier gibt es zwei Möglichleiten:
1. Er versucht direkt in das Container-Dateisystem zu schreiben und ist auf den default nicht privligierten Benutzer des images angeweisen -> user: wieder entfernen
2. Es ist ein Symlink auf das Volueme da Du gemountet hast -> Hier muss der Besitzer natürlich per chmod 1001:65000 angepasst werden.
 

Impidimpi

Benutzer
Mitglied seit
21. Aug 2014
Beiträge
69
Punkte für Reaktionen
5
Punkte
8
Und das Verzeichnis /volume1/docker/dokuwiki existiert und dein Benutzer mit der UID 1001 hat Rechte?
Ich weiß leider nicht welcher Benutzer 1001 ist. Es ist kein von mir erstellter User und ich konnte auch über die Shell nicht herausfinden welcher User zu dieser UID gehört.

Kann ich nichts mit anfangen. Auch docker Container können damit nichts anfangen.
Womit ein Docker Container etwas anfangen kann ist eine UID und eine GID.
Dann müsste ich halt wissen was genau SYSTEM ist und wo ich herausfinde welche ID das hat. id SYSTEM gibt nichts aus, id system gibt aber etwas aus:
Code:
uid=1(system) gid=1(system) groups=1(system)
Falls das irgendwas bringt.

Und anders herum (also was 1001 ist) weiß ich nicht wie ich es herausfinde. mit cat /etc/passwd konnte ich 1001 nicht finden.

Hier gibt es zwei Möglichleiten:
1. Er versucht direkt in das Container-Dateisystem zu schreiben und ist auf den default nicht privligierten Benutzer des images angeweisen -> user: wieder entfernen
2. Es ist ein Symlink auf das Volueme da Du gemountet hast -> Hier muss der Besitzer natürlich per chmod 1001:65000 angepasst werden.
Ok verstehe. Ich schaue es mir nochmal an. Vielleicht ist es aber das beste, wenn ich den Plan begrabe die Rechte hier einzuschränken, bzw. ich arbeite eben mit diesem SYSTEM.
 

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
12.310
Punkte für Reaktionen
2.870
Punkte
423
User "system" mit UID 1 gibst's bei mir auch, UID 1001 auch nicht. Mal mit 1:65000 probiert?
Aber alles nur geraten, @haydibe kennt sich mit Docker bestimmt viel besser aus.
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.481
Punkte für Reaktionen
364
Punkte
103
Ich hab es mir jetzt mal angesehen:

Code:
me@dsm:~$ docker run --rm -ti --entrypoint bash bitnami/dokuwiki:latest -c 'id'
uid=1001 gid=0(root) groups=0(root)

Code:
me@dsm:~$ docker run --rm -ti --entrypoint bash bitnami/dokuwiki:latest -c 'ls -ln /opt/bitnami'
total 28
drwxrwxr-x 18 0 0 4096 Mar 20 10:34 apache
lrwxrwxrwx  1 0 0    6 Mar 20 10:34 apache2 -> apache
drwxr-xr-x  7 0 0 4096 Mar  8 13:24 common
drwxrwxr-x 10 1 0 4096 Mar 20 10:34 dokuwiki
drwxrwxr-x  2 0 0 4096 Mar 20 10:32 licenses
drwxr-xr-x  4 0 0 4096 Mar 12 15:34 peclapcu
drwxr-xr-x 13 0 0 4096 Mar 20 10:34 php
drwxrwxr-x  6 0 0 4096 Mar 20 10:32 scripts

UID 1 ist in dem Image übrigens "daemon". UID 1001 existiert überhaupt nicht. Es ist dem Container aber auch herzlich egal, ob er existiert, da der Container von Haus aus trotzdem als UID 1001 gestartet wird. Auch auf dem Host muss kein User für die UID existieren, nur kannst Du dann selbst nicht auf die Daten zugreifen.

Warum es mit der GID 65000 nicht geklappt hat:
Code:
me@dsm2:~$ docker run --rm -ti --entrypoint bash bitnami/dokuwiki:latest -c 'ls -ln /opt/bitnami/apache/conf'
total 180
drwxrwxr-x 2 0 0  4096 Mar 20 10:34 bitnami
-rw-rw-r-- 1 0 0   279 Mar 20 10:32 deflate.conf
drwxrwxr-x 2 0 0  4096 Mar 20 10:34 extra
-rw-rw-r-- 1 0 0 19309 Mar 20 10:34 httpd.conf
-rw-rw-r-- 1 0 0 13064 Mar  8 13:12 magic
-rw-rw-r-- 1 0 0 60919 Mar  8 13:12 mime.types
-rw-rw-r-- 1 0 0 11198 Mar  8 13:16 modsecurity.conf
drwxrwxr-x 3 0 0  4096 Mar 20 10:34 original
-rw-rw-r-- 1 0 0 53146 Mar  8 13:16 unicode.mapping
drwxrwxr-x 3 0 0  4096 Mar 20 10:34 vhosts
me@dsm2:~$ docker run --rm -ti --entrypoint bash bitnami/dokuwiki:latest -c 'ls -ln /opt/bitnami/apache/conf/bitnami'
total 12
-rw-rw-r-- 1 0 0 950 Mar 20 10:34 bitnami-ssl.conf
-rw-rw-r-- 1 0 0 411 Mar 20 10:34 bitnami.conf
-rw-r--r-- 1 0 0  83 Mar 20 10:34 php.conf

Der Container ist davon abhängig, dass der User über die Root Gruppe (GID=0) in die Verzeichnisse schreiben kann.

Demnach sollte es funktionieren, wenn Du `user: 1030` oder `user: 1030:0` verwendest.
 
  • Like
Reaktionen: Impidimpi


 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat