Background Decoration

WSL 2 PERMISSION FIXER

Verhindere schreibgeschützte Dateien in VS Code unter Windows/WSL2. Generiere Dockerfiles mit integriertem User-Mapping.

WSL User-Details

In WSL abfragbar über id -u (meistens 1000).
In WSL abfragbar über id -g (meistens 1000).
Dockerfile
# Dockerfile für lokale WSL 2 Entwicklung (LARAVEL)
FROM php:8.3-fpm-alpine

# System-Abhängigkeiten installieren
RUN apk add --no-cache \
    git \
    curl \
    libpng-dev \
    libxml2-dev \
    zip \
    unzip \
    shadow

# PHP Extensions
RUN docker-php-ext-install pdo_mysql bcmath gd

# Composer installieren
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer

# Argumente für Host-User ID und Gruppen ID
# Diese werden aus deiner WSL 2 Umgebung übergeben (z.B. id -u / id -g)
ARG USER_ID=1000
ARG GROUP_ID=1000
ARG USER_NAME=developer

# Benutzer und Gruppe anlegen/anpassen, um Dateirechte-Konflikte zu vermeiden
RUN if getent group ${GROUP_ID}; then \
        # Gruppe existiert bereits -> Umbenennen zu USER_NAME
        existing_group=$(getent group ${GROUP_ID} | cut -d: -f1) && \
        groupmod -n ${USER_NAME} ${existing_group}; \
    else \
        # Gruppe neu erstellen
        groupadd -g ${GROUP_ID} ${USER_NAME}; \
    fi && \
    useradd -u ${USER_ID} -g ${GROUP_ID} -m -s /bin/sh ${USER_NAME}

# PHP-FPM Konfiguration anpassen, damit FPM unter dem neuen User läuft
RUN sed -i "s/user = www-data/user = ${USER_NAME}/g" /usr/local/etc/php-fpm.d/www.conf && \
    sed -i "s/group = www-data/group = ${USER_NAME}/g" /usr/local/etc/php-fpm.d/www.conf

# Arbeitsverzeichnis und Composer Cache-Verzeichnis vorbereiten
WORKDIR /www/wwwroot/project
RUN mkdir -p /home/${USER_NAME}/.composer && \
    chown -R ${USER_NAME}:${USER_NAME} /home/${USER_NAME} /www/wwwroot/project

# Standardmäßig als Entwickler-User im Container arbeiten
USER ${USER_NAME}

CMD ["php-fpm"]

Vorschau: Container User Mapping

ParameterContainer Target Mapping

Container Username:developerMapped UID / GID:1000 : 1000Execution User (FPM/Node):Laufend als 'developer'Schreibzugriff VS Code:✓ Uneingeschränkt (Kein Root lock)
WSL 2 Permissions Guide

So verhinderst du "Permission Denied" Fehler dauerhaft

Unter Windows 10/11 greift VS Code über den WSL-Remote-Server auf deine WSL-Verzeichnisse zu. Docker-Container laufen jedoch standardmäßig unter Root.

Warum entstehen Permission Errors?

Wenn du im Container Befehle ausführst (z.B. composer install oder npm install), erzeugt der Root-User im Container Ordner wie vendor oder node_modules. Auf deinem WSL-System gehören diese Dateien nun Root. Dein Windows-Editor hat keine Root-Rechte, weshalb das Editieren fehlschlägt.

Die Lösung: Docker-User UID/GID Mapping

Durch die Übergabe der Host-User-ID (`UID: 1000` und `GID: 1000`) an das Dockerfile weiß Docker beim Builden, dass es den Systemuser innerhalb des Containers exakt so konfigurieren soll. Wenn der Container nun Dateien schreibt, werden sie mit deiner eigenen ID markiert, sodass du sie auf dem Host nahtlos modifizieren kannst.

Nächste Schritte & Kontakt

Dein Webprojekt professionell umsetzen?

Du brauchst professionelle Unterstützung bei deinem Web-Projekt? Wir helfen dir bei der Umsetzung von modernen Layouts, performanten Animationen und maßgeschneiderten Lösungen, damit dein Projekt wirklich glänzt.

Webinteger kontaktieren

Sende uns deine Testergebnisse direkt zu. Wir analysieren dein Projekt im Detail und erstellen dir einen Fahrplan zur Behebung.

Beratung anfragen

Nächster Test: WSL2 Optimizer

Nimm deine URL mit zum nächsten Tool, um deine SEO-Analyse zu vervollständigen und weitere versteckte Fehler aufzudecken.

URL zu WSL2 Optimizer übertragen