Updates van zelfgehoste apps leiden minder snel tot bestanden die eigendom zijn van root wanneer de implementatie een numerieke gebruikersconfiguratie vastlegt en het eigendom van volumes controleert voordat de container wordt vervangen.
De preventieve aanpak is om de interne gebruikersnaam van de image niet langer als een stabiele opslagidentiteit te behandelen. Leg de effectieve UID en GID vast die persistente gegevens schrijven, koppel deze aan mappen op de host of benoemde volumes, behoud eventuele PUID/PGID- of user-namespace-instellingen en test de nieuwe image eerst op een klein beschrijfbaar pad voordat je de volledige uitrol uitvoert. Zo kan een image-update niet stilletjes de numerieke eigenaar van configuratie, uploads, databases of metagegevens van media wijzigen.
Leg de numerieke UID en GID vast vóór het bijwerken
Leg de gebruiker van het actieve proces, de primaire groep, aanvullende groepen en het numerieke eigendom van representatieve bestanden in elke beschrijfbare mount vast. Bewaar de image-digest of versie naast deze eigendomsbasislijn.
De richtlijnen van Docker voor het bouwen van images stellen dat expliciete ID's drift bij opnieuw bouwen voorkomen, omdat automatisch toegewezen image-gebruikers bij verschillende builds verschillende numerieke ID's kunnen krijgen.
Leg getallen vast, niet alleen namen zoals app of media. Een nieuwe image kan dezelfde gebruikersnaam opnieuw gebruiken terwijl de UID verandert, en bestanden op de host slaan numeriek eigendom op.
Leg de runtimegebruiker vast in het implementatiecontract
Wanneer de image rechtstreeks als een niet-rootaccount kan draaien, geef je de beoogde gebruiker en groep expliciet op in Compose of de runtimeconfiguratie. Als de image een initialisatiefase met root vereist, documenteer dan welk proces daarna daadwerkelijk persistente gegevens schrijft.
De specificatie voor Open Container-images definieert User als de standaard voor de runtime. Dat betekent dat een gewijzigde image de runtime-identiteit kan aanpassen, tenzij de implementatie deze bewust overschrijft of controleert.
Dwing geen willekeurige niet-root-UID af bij images die een ondersteund initialisatiemodel vereisen. Het contract moet aansluiten bij het gedocumenteerde ontwerp van de applicatie en tegelijk zorgen dat de eigenaar van persistente bestanden voorspelbaar blijft.
Houd PUID en PGID afgestemd op het eigendom op de host
Voor images die PUID- en PGID-variabelen aanbieden, leg je deze waarden vast in versiebeheer in Compose of de omgevingsconfiguratie en zorg je ervoor dat volumemappen op de host eigendom zijn van het bijbehorende serviceaccount.
LinuxServer legt uit dat PUID schrijfbewerkingen vanuit de container koppelt, zodat bestanden in gekoppelde volumes buiten de container beheersbaar blijven.
Vergelijk vóór het bijwerken de geconfigureerde ID's met id op de host en met het bestaande bestandseigendom. Kopieer geen voorbeeldwaarde zoals 1000 zonder controle naar een server waarop die ID aan een andere persoon of service toebehoort.
Houd rekening met user namespaces en rootless-koppelingen
Rootless Docker of Podman kan ervoor zorgen dat een proces in de container als root lijkt, terwijl het wordt gekoppeld aan een niet-root-UID op de host. Leg vóór het interpreteren van eigendomswijzigingen de namespace-modus en de configuratie voor aanvullende UID's en GID's vast.
De runtimeopties van Podman laten zien dat keep-id de gebruikerskoppeling behoudt wanneer een container voorspelbare toegang nodig heeft tot bestanden die op de host zijn aangekoppeld.
Probeer een eigenaar die er in de container uitziet als root niet te “herstellen” voordat je de numerieke ID op de host hebt gecontroleerd. Root binnen een namespace en root op de host zijn niet altijd dezelfde identiteit.
Test de nieuwe image vooraf op een testvolume
Voer de nieuwe image vóór het vervangen van de productiecontainer uit met de beoogde UID/GID en een tijdelijke map die de productierechten nabootst. Laat de initialisatie bij het opstarten één bestand en één map aanmaken en controleer daarna het eigendom ervan op de host.
De rootless-volumehandleiding van Red Hat laat zien dat het eigendom op de host de UID-koppeling volgt en dat de gebruikersnaam die in de container wordt getoond op zichzelf geen afdoende bewijs is.
Als de canary onverwachte bestanden aanmaakt die eigendom zijn van root of opnieuw zijn toegewezen, stop je de uitrol en vergelijk je de imagegebruiker, entrypoint, namespace en mountinstellingen. Dat is veel veiliger dan de wijziging pas ontdekken nadat een recursieve migratie bij het opstarten een volledige fotoboom of databasemap heeft aangepast.
Controleer aanvullende groepen en beschrijfbare paden
Sommige apps hebben een primaire service-UID nodig en daarnaast toegang via een gedeelde groep voor media, downloads of apparaten. Leg ook deze groeps-ID's vast en test alle beschrijfbare paden, niet alleen de configuratiemap.
Kubernetes gebruikt expliciete besturing via runAsUser en runAsGroup en illustreert daarmee hetzelfde Linux-principe voor eigendom, ook buiten een eenvoudige Docker Compose-implementatie.
Het updatebeleid is compleet wanneer de nieuwe image op elk persistent pad bestanden aanmaakt met het verwachte eigendom op de host en één keer opnieuw aanmaken van de container doorstaat. Het gerelateerde ZimaSpace-artikel over bestanden die na image-updates eigendom zijn van root is de herstelroute als een uitrol al gegevens heeft opgeleverd die eigendom zijn van root.
Ondersteuning & Tips
Meer om te lezen

Kan Plex een GPU delen met een andere Docker-container?
Plex en een andere container kunnen vaak dezelfde GPU gebruiken, maar je moet de driverondersteuning, apparaattoewijzing, belasting van de video-engine, het geheugengebruik en het...

Hoe je kunt bepalen of een Plex-fout door de client of de server wordt veroorzaakt
Reproduceer hetzelfde item op een andere client, vergelijk het sessiepad en verzamel pas serverbewijs nadat de scope heeft uitgewezen waar de fout daadwerkelijk zit.

Plex-cache en tijdelijke opslag voor transcodering configureren
Bescherm de permanente Plex-status door tijdelijke transcodebestanden op geschikte lokale opslag te plaatsen en controleer vervolgens het opruimen, de beschikbare ruimte en het gedrag...

