Ein sauber eingerichtetes User- und Group-Setup ist entscheidend für die Sicherheit und den reibungslosen Betrieb von Webservern. Insbesondere der Webserver-Benutzer www-data unter Debian/Ubuntu oder nginx unter CentOS/RHEL steuert, welche Prozesse Zugriff auf Webinhalte haben. Dieser Leitfaden erklärt Einsteigern, IT-Studierenden und Junior Network Engineers, wie Benutzer und Gruppen korrekt konfiguriert werden, welche Berechtigungen sinnvoll sind und wie Deploy-Workflows auf einem sicheren Server implementiert werden.
Grundlagen von Linux-Benutzern und Gruppen
Jeder Prozess unter Linux läuft unter einem Benutzerkonto. Gruppen erleichtern die Verwaltung von Berechtigungen für mehrere Benutzer gleichzeitig. Typische Webserver-Benutzer:
www-data– Standard-Webserver-Benutzer unter Debian/Ubuntunginx– Standard-Webserver-Benutzer unter CentOS/RHEL- Entwicklerbenutzer – für Deployment- und Wartungsaufgaben
Berechtigungsklassen
- Owner (Besitzer)
- Group (Gruppe)
- Others (Andere)
User/Group Setup für Webserver
Der Webserver-Benutzer sollte möglichst eingeschränkt sein, nur Zugriff auf notwendige Dateien haben und keinen direkten Login auf das System besitzen.
www-data Benutzer und Gruppe anlegen (falls nicht vorhanden)
sudo groupadd www-data
sudo useradd -g www-data -s /usr/sbin/nologin www-data
nginx Benutzer und Gruppe anlegen (falls nicht vorhanden)
sudo groupadd nginx
sudo useradd -g nginx -s /sbin/nologin nginx
Berechtigungen für Webroot
Die Dokumentenstämme sollten dem Webserver-Benutzer gehören, Dateien und Verzeichnisse sichere Rechte besitzen.
Beispiel für /var/www/html
sudo chown -R www-data:www-data /var/www/html
sudo find /var/www/html -type d -exec chmod 755 {} ;
sudo find /var/www/html -type f -exec chmod 644 {} ;
Besondere Dateien absichern
sudo chmod 600 /var/www/html/config.php
sudo chown www-data:www-data /var/www/html/config.php
Deployment-Workflows
Ein strukturierter Deployment-Workflow minimiert Ausfallzeiten und verhindert Sicherheitsprobleme.
Option 1: Git-basiertes Deployment
# Git Repository klonen
sudo -u deployuser git clone https://github.com/meinprojekt.git /var/www/html
Berechtigungen anpassen
sudo chown -R www-data:www-data /var/www/html
sudo find /var/www/html -type d -exec chmod 755 {} ;
sudo find /var/www/html -type f -exec chmod 644 {} ;
Option 2: CI/CD Deployment
- Build-Server erstellt Artefakte
- Deploy-User kopiert Dateien über
rsyncauf den Webserver - Nach Deployment werden Berechtigungen angepasst
- Webserver Reload über
systemctl reload nginxoderapache2ctl graceful
Option 3: Shared Deploy-Ordner
mkdir -p /var/www/releases/current
chown -R www-data:www-data /var/www/releases
chmod -R 755 /var/www/releases
Automatisierung mit Skripten
Automatisierte Skripte stellen sicher, dass Berechtigungen, Gruppen und User nach jedem Deployment korrekt gesetzt werden.
# Beispiel deploy.sh
#!/bin/bash
cd /var/www/releases/current
chown -R www-data:www-data .
find . -type d -exec chmod 755 {} ;
find . -type f -exec chmod 644 {} ;
systemctl reload nginx
Netzwerk und Subnetze
Für IP-basierte Zugriffskontrolle oder Adminbereiche sollten Subnetze sauber definiert sein.
IPv4 Beispiel
<math>
Server-IP = 192.168.130.20/24
Subnetzadresse = 192.168.130.20 & 255.255.255.0 = 192.168.130.0
Broadcastadresse = 192.168.130.0 | ~255.255.255.0 = 192.168.130.255
</math>
IPv6 Beispiel
<math>
Server-IP = 2001:db8:abcd:130::20/64
Subnetzadresse = 2001:db8:abcd:130:: & ffff:ffff:ffff:ffff:: = 2001:db8:abcd:130::0
Broadcastadresse = 2001:db8:abcd:130:ffff:ffff:ffff:ffff
</math>
Best Practices
- Webserver-Benutzer eingeschränkt und ohne Login
- Webroot dem Webserver-Benutzer zuordnen (
www-dataodernginx) - Dateien 644, Verzeichnisse 755
- Sensible Konfigurationsdateien 600
- Deploy-User nutzen, Webserver-Benutzer nur für Runtime
- Automatisierte Deployment-Skripte für Rechte und Ownership
- IP-basierte Zugriffskontrolle für Adminbereiche
- Regelmäßige Überprüfung der Berechtigungen
- Backups der Konfigurationen und Deploy-Skripte erstellen
- CI/CD Pipelines bevorzugen, um menschliche Fehler zu vermeiden
Konfiguriere Cisco Router & Switches und liefere ein Packet-Tracer-Lab/GNS3
Ich biete professionelle Unterstützung im Bereich Netzwerkkonfiguration und Network Automation für private Anforderungen, Studienprojekte, Lernlabore, kleine Unternehmen sowie technische Projekte. Ich unterstütze Sie bei der Konfiguration von Routern und Switches, der Erstellung praxisnaher Topologien in Cisco Packet Tracer, dem Aufbau und Troubleshooting von GNS3- und EVE-NG-Labs sowie bei der Automatisierung von Netzwerkaufgaben mit Netmiko, Paramiko, NAPALM und Ansible. Kontaktieren Sie mich jetzt – klicken Sie hier.
Meine Leistungen umfassen:
-
Professionelle Konfiguration von Routern und Switches
-
Einrichtung von VLANs, Trunks, Routing, DHCP, NAT, ACLs und weiteren Netzwerkfunktionen
-
Erstellung von Topologien und Simulationen in Cisco Packet Tracer
-
Aufbau, Analyse und Fehlerbehebung von Netzwerk-Labs in GNS3 und EVE-NG
-
Automatisierung von Netzwerkkonfigurationen mit Python, Netmiko, Paramiko, NAPALM und Ansible
-
Erstellung von Skripten für wiederkehrende Netzwerkaufgaben
-
Dokumentation der Konfigurationen und Bereitstellung nachvollziehbarer Lösungswege
-
Konfigurations-Backups, Optimierung bestehender Setups und technisches Troubleshooting
Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.

