So erstellen Sie einen neuen Ordner in Ubuntu: Vollständiger Leitfaden zur Verzeichnisverwaltung
Das Erstellen eines neuen Ordners in Ubuntu erfolgt hauptsächlich mit dem mkdir-Befehl im Terminal. Die grundlegende Syntax lautet mkdir folder_name, wodurch sofort ein Verzeichnis an Ihrem aktuellen Arbeitsort erstellt wird. Für verschachtelte Strukturen erstellt mkdir -p parent/child/grandchild den gesamten Pfad in einem einzigen Vorgang, auch wenn Zwischenverzeichnisse noch nicht vorhanden sind.
Dieser Leitfaden geht weit über die Grundlagen hinaus. Er behandelt jede praktische Methode zur Erstellung von Verzeichnissen unter Ubuntu — von der einfachen Erstellung einzelner Ordner bis hin zu rekursiven Strukturen, berechtigungsbewusster Bereitstellung und automatisierungsfähigen Scripting-Mustern, die in realen Produktionsserverumgebungen verwendet werden.
Warum eine ordnungsgemäße Verzeichnisstruktur auf einem Linux-Server wichtig ist
Auf jedem Ubuntu-Server ist das Dateisystem das Rückgrat jedes Vorgangs. Schlecht organisierte Verzeichnisse verursachen Folgeprobleme: fehlerhafte Anwendungspfade, falsch konfigurierte Berechtigungshierarchien, fehlgeschlagene Backup-Jobs und Sicherheitslücken durch weltbeschreibbare Verzeichnisse an sensiblen Stellen.
Ein disziplinierter Ansatz beim Verzeichnismanagement wirkt sich direkt aus auf:
- Berechtigungsvererbung — untergeordnete Verzeichnisse erben die Berechtigungen des übergeordneten Verzeichnisses, sofern sie nicht explizit überschrieben werden, was die anfänglichen Strukturentscheidungen kritisch macht
- Backup-Umfang — Backup-Tools wie
rsyncundtararbeiten auf Verzeichnisbäumen, sodass eine logische Gruppierung die Backup-Komplexität reduziert - Dienstkonfiguration — Webserver (Apache, Nginx), Datenbanken und Anwendungs-Laufzeitumgebungen sind alle auf vorhersehbare, klar definierte Verzeichnispfade angewiesen
- Prüfung und Compliance — strukturierte Pfade machen die Log-Korrelation und forensische Analyse deutlich schneller
Wenn Sie eine VPS Hosting-Umgebung oder einen Dedicated Server verwalten, verhindert die Einrichtung einer konsistenten Verzeichniskonvention von Anfang an technische Schulden, die sich mit dem Wachstum des Systems schnell anhäufen.
Voraussetzungen
Bevor Sie einen der folgenden Befehle ausführen, bestätigen Sie Folgendes:
- Sie haben Zugriff auf ein Terminal (lokal oder über SSH)
- Ihr Benutzerkonto hat Schreibberechtigung für den Zielort
- Für Verzeichnisse auf Systemebene (z. B. unter
/etc/oder/var/) haben Siesudo-Rechte - Ubuntu-Version: Diese Befehle gelten universell für Ubuntu 18.04, 20.04, 22.04 und 24.04 LTS
Um Ihr aktuelles Arbeitsverzeichnis jederzeit zu überprüfen, führen Sie aus:
pwdMethode 1: Grundlegende Verzeichniserstellung mit mkdir
Der mkdir-Befehl (make directory) ist das Standard-POSIX-Dienstprogramm zur Erstellung von Verzeichnissen. Es ist auf jeder Linux-Distribution ohne Installation verfügbar.
Syntax:
mkdir directory_nameBeispiel:
mkdir project_filesDies erstellt ein Verzeichnis namens project_files an Ihrem aktuellen Speicherort. Der Befehl erzeugt bei Erfolg keine Ausgabe — dies ist das standardmäßige Unix-Verhalten. Zur Bestätigung der Erstellung:
ls -laNamenskonventionen für den Produktionseinsatz:
- Verwenden Sie Kleinbuchstaben und Unterstriche oder Bindestriche:
web_assets,backup-2024 - Vermeiden Sie Leerzeichen in Verzeichnisnamen — sie erfordern Escaping (
mkdir "my folder"odermkdir my folder) und unterbrechen viele Shell-Skripte - Vermeiden Sie Sonderzeichen:
&,*,?,!,|haben shell-spezifische Bedeutungen und verursachen unvorhersehbares Verhalten
Methode 2: Erstellen eines Verzeichnisses unter einem bestimmten absoluten Pfad
Anstatt zuerst zu einem Zielort zu navigieren, können Sie den vollständigen absoluten Pfad direkt an mkdir übergeben. Dies ist der bevorzugte Ansatz in Skripten und automatisierter Bereitstellung.
Syntax:
mkdir /full/path/to/new_directoryBeispiel:
mkdir /var/www/html/myappWichtige Einschränkung: Dieser Befehl schlägt fehl, wenn ein Zwischenverzeichnis im Pfad noch nicht vorhanden ist. Wenn beispielsweise /var/www/html/ nicht existiert, gibt der obige Befehl zurück:
mkdir: cannot create directory '/var/www/html/myapp': No such file or directoryDie Lösung ist das -p-Flag, das in Methode 3 behandelt wird.
Die Verwendung relativer Pfade ist ebenso gültig und in interaktiven Sitzungen oft besser lesbar:
mkdir ../sibling_directory
mkdir ./subdirectoryMethode 3: Rekursives Erstellen verschachtelter Verzeichnisse mit -p
Das -p-Flag (parents) ist eine der betrieblich wichtigsten Optionen in mkdir. Es weist den Befehl an, alle fehlenden Zwischenverzeichnisse im angegebenen Pfad zu erstellen, und unterdrückt den Fehler, der normalerweise auftreten würde, wenn das Zielverzeichnis bereits vorhanden ist.
Syntax:
mkdir -p parent_directory/child_directory/grandchild_directoryBeispiel:
mkdir -p /var/www/html/myapp/logs/archiveWenn /var/www/html/myapp/ nicht existiert, erstellt dieser einzelne Befehl die gesamte Kette: myapp, dann logs darin, dann archive darin.
Kritischer Produktionsanwendungsfall — Webserver-Dokumentenstämme:
mkdir -p /var/www/vhosts/example.com/{public_html,logs,ssl,tmp}Diese Brace-Expansion-Syntax (in Methode 6 ausführlich behandelt) kombiniert mit -p ist ein Standardmuster für die Bereitstellung neuer virtueller Host-Umgebungen in einem einzigen Befehl.
Das -p-Flag verhindert auch Fehler in idempotenten Skripten. Wenn Sie denselben mkdir -p-Befehl zweimal ausführen, tut die zweite Ausführung nichts und beendet sich sauber mit Code 0. Ohne -p würde der zweite Durchlauf einen Fehler zurückgeben, der jedes Skript unterbricht, das set -e (Beenden bei Fehler) verwendet.
Methode 4: Gleichzeitiges Erstellen mehrerer Verzeichnisse
mkdir akzeptiert mehrere Argumente und erstellt alle angegebenen Verzeichnisse in einem einzigen Aufruf.
Syntax:
mkdir dir1 dir2 dir3Beispiel:
mkdir assets uploads cache sessionsDies erstellt vier separate Verzeichnisse am aktuellen Speicherort. Alle Verzeichnisse werden auf derselben Ebene erstellt — dies ist keine verschachtelte Struktur.
Kombination mit absoluten Pfaden:
mkdir /srv/app/modules /srv/app/config /srv/app/dataKombination mit -p für mehrere verschachtelte Pfade:
mkdir -p /srv/project/frontend/src /srv/project/backend/src /srv/project/docsDies ist besonders nützlich beim Aufbau einer neuen Anwendungsverzeichnisstruktur vor der Bereitstellung.
Methode 5: Erstellen von Verzeichnissen mit spezifischen Berechtigungen mithilfe von -m
Standardmäßig wendet mkdir Berechtigungen basierend auf dem umask-Wert des Systems an. Auf den meisten Ubuntu-Systemen ist die Standard-umask 0022, was bedeutet, dass neue Verzeichnisse Berechtigungen von 755 erhalten (Eigentümer: lesen/schreiben/ausführen; Gruppe: lesen/ausführen; andere: lesen/ausführen).
In vielen Serverszenarien sind die Standardberechtigungen entweder zu freizügig oder zu restriktiv. Das -m-Flag ermöglicht es Ihnen, genaue Berechtigungen zum Erstellungszeitpunkt mithilfe der Oktalnotation festzulegen.
Syntax:
mkdir -m octal_mode directory_nameHäufige Berechtigungsmuster:
| Oktalmodus | Symbolisch | Typischer Anwendungsfall |
|---|---|---|
700 | rwx------ | Private Benutzerdaten, SSH-Schlüsselverzeichnisse |
750 | rwxr-x--- | Anwendungsverzeichnisse, die mit einer Gruppe geteilt werden |
755 | rwxr-xr-x | Öffentliche Web-Dokumentenstämme |
770 | rwxrwx--- | Gemeinsame Team-Verzeichnisse |
777 | rwxrwxrwx | Temporärer Scratch-Speicher (in der Produktion vermeiden) |
Beispiel — Erstellen eines sicheren Verzeichnisses für SSH-Schlüssel:
mkdir -m 700 ~/.sshBeispiel — Erstellen eines Web-Stammverzeichnisses mit korrekten Berechtigungen:
mkdir -m 755 /var/www/html/newsiteKombination von -m und -p:
mkdir -p -m 750 /srv/app/config/secretsBeachten Sie, dass bei Verwendung von -p der Modus nur auf das letzte Verzeichnis im Pfad angewendet wird, nicht auf Zwischenverzeichnisse, die erstellt werden. Zwischenverzeichnisse erhalten die standardmäßigen umask-basierten Berechtigungen. Wenn Sie eine präzise Kontrolle über alle Ebenen benötigen, erstellen Sie jede Ebene einzeln mit expliziten -m-Flags oder verwenden Sie chmod im Nachhinein.
Methode 6: Brace Expansion für komplexe Verzeichnisbäume
Brace Expansion ist eine Bash-Shell-Funktion — keine mkdir-Option —, die mehrere Argumente aus einem einzigen Muster generiert. Kombiniert mit mkdir -p, ist es die effizienteste Methode zur Erstellung komplexer Verzeichnishierarchien.
Grundlegende Brace Expansion:
mkdir -p project/{src,tests,docs,build}Dies erweitert sich zu:
mkdir -p project/src project/tests project/docs project/buildMehrstufige Brace Expansion:
mkdir -p app/{frontend/{components,pages,styles},backend/{controllers,models,routes},shared/utils}Dies erstellt die folgende Struktur:
app/
├── frontend/
│ ├── components/
│ ├── pages/
│ └── styles/
├── backend/
│ ├── controllers/
│ ├── models/
│ └── routes/
└── shared/
└── utils/Dieses Muster ist Standardpraxis bei der Initialisierung neuer Anwendungs-Repositories oder der Bereitstellung von Anwendungsverzeichnissen auf einem neuen VPS mit cPanel oder Bare-Metal-Server.
Methode 7: Erstellen von Verzeichnissen über die Ubuntu-GUI (Dateianwendung)
Für Desktop-Ubuntu-Installationen oder Remote-Desktop-Sitzungen bietet die GNOME-Dateianwendung (Nautilus) eine grafische Methode.
Schritte:
- Öffnen Sie die Dateien-Anwendung aus dem Aktivitätenmenü oder dem Dock
- Navigieren Sie zum übergeordneten Verzeichnis, in dem Sie den neuen Ordner erstellen möchten
- Klicken Sie mit der rechten Maustaste auf einen leeren Bereich innerhalb des Verzeichnisses
- Wählen Sie Neuer Ordner aus dem Kontextmenü
- Geben Sie den gewünschten Ordnernamen ein und drücken Sie Enter
Tastaturkürzel: In Nautilus erstellt Ctrl+Shift+N sofort einen neuen Ordner, ohne das Rechtsklick-Menü zu verwenden.
Einschränkungen des GUI-Ansatzes:
- Kann keine benutzerdefinierten Berechtigungen während der Erstellung festlegen — erfordert eine Folgeaktion im Terminal oder in den Dateieigenschaften
- Kann keine rekursiven verschachtelten Strukturen in einem einzigen Vorgang erstellen
- Nicht verfügbar in headless Server-Umgebungen (die große Mehrheit der Produktions-Ubuntu-Server läuft ohne Desktop-Umgebung)
Für jede ernsthafte Serveradministrationsarbeit werden die Befehlszeilenmethoden immer bevorzugt.
Methode 8: Scripting der Verzeichniserstellung für die Automatisierung
In der realen Serveradministration werden Verzeichnisse selten manuell einzeln erstellt. Bereitstellungsskripte, Deployment-Pipelines und Konfigurationsverwaltungstools sind alle auf automatisierte Verzeichniserstellung angewiesen.
Grundlegendes Shell-Skript-Beispiel:
#!/bin/bash
set -e
BASE_DIR="/var/www/vhosts"
DOMAIN="example.com"
directories=(
"$BASE_DIR/$DOMAIN/public_html"
"$BASE_DIR/$DOMAIN/logs"
"$BASE_DIR/$DOMAIN/ssl"
"$BASE_DIR/$DOMAIN/tmp"
"$BASE_DIR/$DOMAIN/backup"
)
for dir in "${directories[@]}"; do
mkdir -p "$dir"
echo "Created: $dir"
done
# Set ownership to web server user
chown -R www-data:www-data "$BASE_DIR/$DOMAIN"
chmod -R 755 "$BASE_DIR/$DOMAIN"
echo "Directory structure for $DOMAIN provisioned successfully."Wichtige Scripting-Praktiken:
- Verwenden Sie immer
set -e, um bei jedem Fehler abzubrechen - Setzen Sie alle Variablen in Anführungszeichen (
"$dir"), um Pfade mit Leerzeichen sicher zu behandeln - Kombinieren Sie
mkdir -pmitchownundchmodim selben Skript, um sicherzustellen, dass die Berechtigungen unmittelbar nach der Erstellung korrekt sind - Verwenden Sie Arrays für Verzeichnislisten, um Skripte lesbar und wartbar zu halten
Dieser Ansatz ist unerlässlich bei der Verwaltung mehrerer virtueller Hosts, der Bereitstellung von Anwendungen in verschiedenen Umgebungen oder der Automatisierung der Servereinrichtung mit Tools wie Ansible oder Bash-basierten Bereitstellungsskripten.
Vergleich: mkdir-Optionen und ihre Anwendungsfälle
| Befehl | Erstellt Zwischenverzeichnisse | Setzt Berechtigungen | Mehrere Verzeichnisse | Idempotent |
|---|---|---|---|---|
mkdir dir | Nein | Nein (verwendet umask) | Nein | Nein |
mkdir -p path/to/dir | Ja | Nein (verwendet umask) | Nein | Ja |
mkdir -m 755 dir | Nein | Ja | Nein | Nein |
mkdir -p -m 750 path/dir | Ja | Ja (nur finales Verzeichnis) | Nein | Ja |
mkdir dir1 dir2 dir3 | Nein | Nein (verwendet umask) | Ja | Nein |
mkdir -p {a,b,c}/sub | Ja | Nein (verwendet umask) | Ja | Ja |
Häufige Fehler und wie man sie behebt
Fehler: Permission denied
mkdir: cannot create directory '/etc/myapp': Permission deniedUrsache: Sie versuchen, in ein systemeigenes Verzeichnis ohne erhöhte Rechte zu schreiben.
Behebung: Stellen Sie sudo voran:
sudo mkdir /etc/myappFehler: No such file or directory
mkdir: cannot create directory '/srv/app/config': No such file or directoryUrsache: Ein oder mehrere Zwischenverzeichnisse im Pfad existieren nicht.
Behebung: Verwenden Sie das -p-Flag:
mkdir -p /srv/app/configFehler: File exists
mkdir: cannot create directory 'mydir': File existsUrsache: Ein Verzeichnis oder eine Datei mit diesem Namen existiert bereits.
Behebung: Verwenden Sie -p, um diesen Fehler zu unterdrücken, wenn der vorhandene Pfad ein Verzeichnis ist, oder wählen Sie einen anderen Namen.
Stiller Fehler in Skripten: Wenn mkdir fehlschlägt und Ihr Skript weder set -e verwendet noch Exit-Codes prüft, können nachfolgende Operationen auf einem nicht vorhandenen Pfad fortgesetzt werden, was zu unvorhersehbaren Fehlern führt. Validieren Sie immer kritische Verzeichniserstellungen:
mkdir -p /srv/app/data || { echo "Failed to create data directory"; exit 1; }Sicherheitsüberlegungen bei der Verzeichniserstellung
Verzeichnisberechtigungen sind eine erste Verteidigungslinie in der Serversicherheit. Mehrere schwerwiegende Sicherheitslücken entstehen direkt durch falsche Verzeichnisberechtigungen:
- Weltbeschreibbare Verzeichnisse (
777) ermöglichen es jedem Benutzer auf dem System, Dateien zu schreiben, zu ändern oder zu löschen — ein kritisches Risiko auf Shared Hosting oder Multi-User-Servern - Falsche Eigentümerschaft bei webzugänglichen Verzeichnissen kann es Webanwendungs-Exploits ermöglichen, bösartige Dateien außerhalb des vorgesehenen Dokumentenstamms zu schreiben
- Sticky Bit (
chmod +t) auf gemeinsamen Verzeichnissen (wie/tmp) verhindert, dass Benutzer Dateien löschen, die anderen gehören — setzen Sie dies immer auf gemeinsam beschreibbare Verzeichnisse - SetGID Bit auf Verzeichnissen stellt sicher, dass neue Dateien die Gruppe des Verzeichnisses erben und nicht die primäre Gruppe des erstellenden Benutzers — nützlich für kollaborative Projektverzeichnisse
Beispiel — sicheres gemeinsames Projektverzeichnis:
mkdir -p /srv/shared/project
chown root:developers /srv/shared/project
chmod 2775 /srv/shared/project # SetGID + rwxrwxr-xBeim Hosting von Webanwendungen, SSL-gesicherten Domains oder E-Mail-Diensten sind korrekte Verzeichnisberechtigungen untrennbar mit der Sicherheitslage Ihrer SSL Certificates-Konfiguration und Ihrem Email Hosting-Setup verbunden.
Überprüfung der Verzeichniserstellung
Nach dem Erstellen von Verzeichnissen überprüfen Sie immer das Ergebnis, bevor Sie mit abhängigen Operationen fortfahren.
Auflisten mit detaillierten Berechtigungen:
ls -la /path/to/parent/Überprüfen, ob ein bestimmtes Verzeichnis existiert (nützlich in Skripten):
[ -d /srv/app/config ] && echo "Directory exists" || echo "Directory missing"Vollständige Baumstruktur anzeigen (erfordert tree-Paket):
sudo apt install tree -y
tree /srv/app/Inode-Nutzung prüfen — auf Servern mit vielen kleinen Dateien kann die Inode-Erschöpfung die Verzeichniserstellung verhindern, auch wenn Speicherplatz verfügbar ist:
df -i /srv/Wenn die Inode-Nutzung nahe 100% liegt, können Sie unabhängig vom verfügbaren Speicherplatz keine neuen Verzeichnisse oder Dateien erstellen. Dies ist ein häufiges Produktionsproblem auf Servern, die eine große Anzahl kleiner Dateien hosten, wie Mail-Server oder PHP-Session-Verzeichnisse.
Praktische Entscheidungsmatrix: Welche Methode verwenden
| Szenario | Empfohlener Befehl |
|---|---|
| Einzelnes Verzeichnis, interaktive Sitzung | mkdir dirname |
| Verzeichnis unter einem bekannten absoluten Pfad | mkdir /full/path/dirname |
| Verschachtelter Pfad, einige übergeordnete Verzeichnisse existieren möglicherweise nicht | mkdir -p /full/nested/path |
| Mehrere gleichrangige Verzeichnisse auf einmal | mkdir dir1 dir2 dir3 |
| Komplexer mehrstufiger Baum in einem Befehl | mkdir -p root/{a,b,c}/{sub1,sub2} |
| Verzeichnis mit nicht standardmäßigen Berechtigungen | mkdir -m 750 dirname |
| Automatisiertes Bereitstellungsskript | mkdir -p mit chown/chmod in Folge |
| Idempotenter Deployment-Pipeline-Schritt | mkdir -p (sicher zur Wiederholung) |
Wichtige technische Erkenntnisse
mkdir -pist die sicherste Standardoption für jede geskriptete oder automatisierte Verzeichniserstellung — sie ist idempotent und behandelt fehlende Zwischenpfade- Verwenden Sie niemals
777-Berechtigungen auf Produktionsverzeichnissen; bevorzugen Sie755für öffentliche Pfade und750oder700für sensible Daten - Das
-m-Flag inmkdirsetzt Berechtigungen nur auf das letzte Verzeichnis, wenn es mit-pverwendet wird — verwenden Siechmod -Rodermkdir-Aufrufe pro Ebene für vollständige Kontrolle - Brace Expansion ist eine Bash-Funktion, keine
mkdir-Funktion — sie funktioniert nicht in/bin/sh-Skripten, es sei denn, die Shell ist Bash - Überprüfen Sie immer die Inode-Verfügbarkeit (
df -i) auf hochdichten Dateisystemen vor der Massenerstellung von Verzeichnissen - Kombinieren Sie die Verzeichniserstellung mit sofortiger
chown-Zuweisung in Bereitstellungsskripten, um ein Zeitfenster zu vermeiden, in dem Verzeichnisse mit falscher Eigentümerschaft existieren - In VPS Control Panels-Umgebungen müssen Webserver-Benutzer (typischerweise
www-dataodernginx) Ausführungsberechtigung für jedes Verzeichnis im Dokumentenstammpfad haben — nicht nur für das letzte Verzeichnis
FAQ
Was ist der Unterschied zwischen mkdir folder und mkdir -p folder?
mkdir folder erstellt ein einzelnes Verzeichnis und schlägt fehl, wenn ein Teil des Pfades nicht existiert oder das Verzeichnis bereits vorhanden ist. mkdir -p folder erstellt alle fehlenden Zwischenverzeichnisse und beendet sich ohne Fehler, wenn das Ziel bereits vorhanden ist, was es sicher für Skripte und wiederholte Ausführung macht.
Kann mkdir ein Verzeichnis mit Leerzeichen im Namen erstellen?
Ja. Setzen Sie den Namen in Anführungszeichen: mkdir "my project folder" oder escapen Sie die Leerzeichen: mkdir my project folder. Leerzeichen in Verzeichnisnamen werden auf Servern jedoch dringend abgeraten, da sie in jedem nachfolgenden Befehl Escaping erfordern und viele Shell-Skripte und Anwendungskonfigurationen unterbrechen.
Warum schlägt mkdir mit „Permission denied” fehl, auch mit sudo?
Dies tritt typischerweise auf, wenn das Zieldateisystem schreibgeschützt eingehängt ist, wenn SELinux- oder AppArmor-Richtlinien Schreibvorgänge auf diesen Pfad einschränken, oder wenn der Pfad auf einem Netzwerkdateisystem mit serverseitigen Einschränkungen liegt. Überprüfen Sie die Einhängeoptionen mit mount | grep /target/path und überprüfen Sie AppArmor-Protokolle mit sudo aa-status.
Wie erstelle ich ein Verzeichnis und setze sofort seinen Eigentümer und seine Gruppe?
mkdir selbst setzt keine Eigentümerschaft — verwenden Sie chown unmittelbar danach: mkdir -p /srv/app && chown www-data:www-data /srv/app. In einer einzigen Pipeline: install -d -m 755 -o www-data -g www-data /srv/app — der install-Befehl erstellt Verzeichnisse mit Eigentümer, Gruppe und Modus in einem Schritt.
Was passiert mit Berechtigungen bei der Verwendung von mkdir -p mit mehreren neuen Ebenen?
Nur das letzte (tiefste) Verzeichnis erhält den durch -m angegebenen Modus. Alle neu erstellten Zwischenverzeichnisse erhalten Berechtigungen, die von der aktuellen umask abgeleitet werden. Wenn konsistente Berechtigungen über alle Ebenen erforderlich sind, erstellen Sie entweder jede Ebene einzeln mit expliziten -m-Flags oder wenden Sie chmod -R an, nachdem der vollständige Pfad erstellt wurde.
