Příkaz mkdir v Linuxu vytváří nové adresáře. Jeho základní tvar je mkdir ADRESÁŘ a můžete s ním vytvořit více složek najednou, nastavit oprávnění pomocí -m, vytvářet vnořené cesty pomocí -p a tisknout výstup pomocí -v.
Respektuje vaši masku umask, vrací chyby, pokud existuje cesta bez parametru -p, a podporuje pokročilé vzory, jako je například rozbalování složených závorek. Vytváření adresářů je jednou z prvních věcí, které v jakémkoli systému Linux děláte.
V této příručce si vysvětlíme příkaz mkdir v Linuxu s jasnými příklady, osvědčenými postupy a tipy pro řešení problémů. Nakonec budete s jistotou vytvářet jednotlivé, vícenásobné a vnořené adresáře se správnými oprávněními, ať už lokálně nebo na serveru na adrese YouStable.
Co je mkdir v Linuxu?
mkdir (make directory) je základní linuxový nástroj, který vytváří jeden nebo více adresářů. Je součástí GNU coreutils na většině distribucí a je k dispozici také ve variantách BSD (macOS). Často se používá v nasazovacích skriptech, CI/CD potrubía každodenní soubor management.
Syntaxe a běžné možnosti
Zde je standardní syntaxe a možnosti, které budete používat nejčastěji:
mkdir [OPTIONS] DIRECTORY [DIRECTORY...]
# Common options:
# -p, --parents Create parent directories as needed, no error if existing
# -m, --mode=MODE Set permissions on the new directory (e.g., 755 or u=rwx,go=rx)
# -v, --verbose Print a message for each created directory
# -Z, --context=CTX Set SELinux security context (on SELinux-enabled systems)Základní příklady použití
Vytvořte jeden adresář
mkdir reportsPokud již soubor „reports“ existuje, mkdir vrátí chybu, pokud nepoužijete parametr -p (vysvětlení níže).
Vytvořte více adresářů najednou
mkdir january february marchTím se v aktuální pracovní cestě vytvoří tři adresáře. Můžete také použít absolutní cesty.
Vytvořte vnořené adresáře pomocí -p
Použijte -p k vytvoření nadřazených adresářů dle potřeby a vyhněte se chybám, pokud cesty již existují.
mkdir -p /var/www/project/{public,logs,backup}Rozbalení složených závorek ({…}) je řešeno vaším shellem (např. bash), nikoli mkdir. Rozbalí se do tří adresářů v /var/www/project.
Nastavení oprávnění pomocí -m (a pochopení umask)
Ve výchozím nastavení jsou oprávnění k novým adresářům ovlivněna vaší umask. Typické výchozí hodnoty jsou 022 nebo 002 v závislosti na distribuci a zásadách. Svůj aktuální umask můžete zkontrolovat pomocí:
umaskNastavení číselných oprávnění
# 755 = owner rwx, group rx, others rx
mkdir -m 755 app
# 700 = owner rwx only
mkdir -m 700 secretsNastavení symbolických oprávnění
mkdir -m u=rwx,go=rx shared
mkdir -m u=rwx,g=rx,o= private_teamPoznámka: Hodnota -m přepíše výchozí hodnotu umask pouze pro daný příkaz. Pokud potřebujete upravit výchozí hodnoty v celém systému, upravte konfiguraci shellu nebo PAM a poté se znovu přihlaste.
Podrobný výstup a absolutní vs. relativní cesty
Použijte -v k potvrzení, co bylo vytvořeno
mkdir -vp /opt/tools/bin
# Output: mkdir: created directory '/opt/tools'
# mkdir: created directory '/opt/tools/bin'Absolutní vs. relativní cesty
Absolutní cesty začínají od / a jsou jednoznačné (/data/backups). Relativní cesty závisí na vašem aktuálním adresáři (./backups nebo jen backups). Pro skripty a automatizaci preferujte absolutní cesty, abyste snížili počet chyb.
Zpracování chyb: Soubor existuje, Oprávnění odepřeno a další
mkdir nabízí užitečné informace o chybách. Zde jsou běžné chyby a jejich rychlé opravy:
- Soubor existuje: Adresář již existuje. Použijte -p, abyste se vyhnuli chybám při opětovném spuštění skriptů.
- Oprávnění zamítnuto: Chybí vám oprávnění k nadřazené cestě. Přepněte se do zapisovatelného adresáře, upravte vlastnictví/oprávnění nebo v případě potřeby použijte příkaz sudo.
- Žádný takový soubor ani adresář: Nadřazená cesta neexistuje. Vytvořte ji pomocí parametru -p.
- Na zařízení už není místo: Souborový systém je plný. Uvolněte místo nebo rozšiřte úložiště.
# Robust pattern for idempotent script runs
mkdir -p /srv/app/logs || { echo "Failed to create logs"; exit 1; }Případové studie z reálného světa (hosting a DevOps)
- Webové kořeny: mkdir -p /var/www/example.com/{public_html,logs,tmp}
- Procesy nasazení: Bezpečně připravte složky pro vydání, artefakty a adresáře mezipaměti pomocí -p.
- Zálohy: mkdir -p /backups/$(date +%F) pro vytváření snímků adresářů s denními zálohami.
- Hosting pro více klientů: Vytvořte adresáře pro jednotlivé weby se správnými oprávněními a vlastnictvím.
Pokud nasazujete na YouStable VPS nebo cloudový hosting, můžete SSH na váš server a pomocí mkdir připravte docrooty, protokoly a cesty vhodné pro izolaci. Naše podpora vám může pomoci s bezpečnými oprávněními pro NGINX/Apache a PHP-FPM bazény.
Pokročilé vzory a tipy pro produktivitu
Vytvořte mnoho adresářů s rozšířením závorek
# Monthly data directories
mkdir -p data/{2024,2025}/{01..12}
# App structure scaffold
mkdir -p app/{bin,config,lib,log,tmp}Ze souboru nebo proudu příkazů
# Create directories listed in a file
xargs -I {} mkdir -p "{}" <<EOF
/var/www/site1/logs
/var/www/site2/logs
/var/www/site3/logs
EOF
# With find to mirror a structure
find templates -type d -printf '%P\n' | xargs -I {} mkdir -p "output/{}"Kontexty SELinuxu (systémy s podporou SELinuxu)
V systémech SELinux můžete v některých nastaveních použít kontexty již při vytváření:
# Set default context for created dirs (policy-dependent)
mkdir -Z -p /var/www/example.com/public_html
# Or specify an explicit context if supported
mkdir --context=system_u:object_r:httpd_sys_content_t:s0 /var/www/example.com/public_htmlVždy ověřte pomocí ls -Z a prostudujte si bezpečnostní zásady. V mnoha případech semanage Pro perzistentní označování jsou preferovány fcontext a restorecon.
Nejlepší postupy pro zabezpečení a oprávnění
- Vyhněte se letu 777: Adresáře s možností zápisu po celém světě s sebou nesou riziko. Pro sdílené čtení preferujte nastavení 750/755 a pro soukromá data 700.
- Používejte skupiny: Vytvořte skupinu pro projekt a nastavte vlastnictví skupiny adresářů pro kolaborativní přístup k zápisu.
- Důležitá informace pro sdílenou teplotu: U sdílených zapisovatelných adresářů (jako je /tmp) zabraňuje bit sticky smazání souborů ostatními uživateli.
- Vlastnictví je důležité: Po příkazu mkdir přiřaďte správného vlastníka a skupinu s příkazem chown službě nebo uživateli nasazení.
# Example: secure web root with group collaboration
sudo mkdir -p /var/www/project/{public,logs}
sudo chown -R deploy:www-data /var/www/project
sudo chmod -R 750 /var/www/project
sudo chmod 2750 /var/www/project # setgid to inherit groupOn YouStable servery, náš tým může zkontrolovat rozložení adresářů, oprávnění a umask, aby zajistil bezpečnost a konzistentní nasazení napříč prostředími.
Kontrolní seznam pro odstraňování problémů
- Zkontrolujte cestu: pwd a ls -ld nadřazené adresáře pro ověření správného umístění.
- Ověření oprávnění: ls -ld parent a určete, zda potřebujete sudo nebo chown.
- Potvrďte umask: umask může odebírat zamýšlená oprávnění; pro přesný režim použijte -m.
- Bezpečně spusťte znovu: Použijte mkdir -p k zabránění chybám v existujících cestách ve skriptech.
- Audit SELinuxu: V systémech s vynucenými zásadami zkontrolujte kontexty pomocí příkazu ls -Z.
Shrnutí příkazů: Rychlé příklady
# Basic
mkdir test
# Multiple
mkdir dir1 dir2 dir3
# Nested parents
mkdir -p /data/app/releases/current
# Verbose create
mkdir -vp /opt/tools/bin
# With permissions
mkdir -m 755 public
mkdir -m 700 private
# With brace expansion
mkdir -p /var/www/site/{public_html,logs,tmp}Nejčastější dotazy
Co dělá příkaz mkdir v Linuxu?
Příkaz mkdir vytváří adresáře. Můžete vytvořit jeden nebo více adresářů najednou, vytvářet vnořené adresáře pomocí -p, nastavovat oprávnění pomocí -m a zobrazovat průběh pomocí -v. Respektuje umask vašeho systému, pokud explicitně nenastavíte režim.
Jak vytvořím vnořené adresáře jedním příkazem?
Použijte mkdir -p. Například: mkdir -p /var/www/project/public_html vytvoří všechny chybějící nadřazené adresáře bez chyb, pokud již existují.
Jak nastavím oprávnění adresáře během jeho vytváření?
Použijte -m. Pro číselné hodnoty: mkdir -m 755 docs. Pro symbolické hodnoty: mkdir -mu=rwx,go=rx docs. Toto přepíše aktuální umask pro daný příkaz.
Jak mohu vytvořit více adresářů najednou?
Vyjmenujte je: mkdir img css js. Pro vzory použijte rozšíření pomocí závorek: mkdir -p env/{dev,stage,prod}/logs pro vytvoření devíti cest v jednom příkazu.
Proč mkdir hlásí „Oprávnění odepřeno“?
Nemáte práva k nadřazenému adresáři. Vytvořte cesty pod vaším domovským adresářem, změňte vlastnictví nebo oprávnění, případně použijte sudo, pokud je to vhodné (např. systémové cesty jako /var nebo /opt).
Závěr
Příkaz mkdir v Linuxu je jednoduchý, ale výkonný. S parametry -p, -m a rozšířeními shellu můžete vytvářet bezpečné a opakovatelné adresářové struktury pro aplikace a webové stránky. Pokud hostujete s YouStable, naši inženýři vám mohou pomoci standardizovat rozvržení adresářů a oprávnění ve vašich prostředích pro plynulejší nasazení a lepší zabezpečení.