15%

Economisește 15% la toate serviciile de găzduire

Testează-ți abilitățile și obține Reducere la orice plan de găzduire

Utilizați codul:

Skills
Începeți
16.11.2023

Cum să creezi un folder nou în Ubuntu: Ghid complet de gestionare a directoarelor

Crearea unui folder nou în Ubuntu se realizează în principal cu comanda mkdir în terminal. Sintaxa de bază este mkdir folder_name, care creează instantaneu un director în locația de lucru curentă. Pentru structuri imbricate, mkdir -p parent/child/grandchild creează întreaga cale într-o singură operațiune, chiar dacă directoarele intermediare nu există încă.

Acest ghid depășește cu mult noțiunile de bază. Acoperă fiecare metodă practică de creare a directoarelor pe Ubuntu — de la crearea unui singur folder simplu până la structuri recursive, provizionare cu permisiuni specifice și tipare de scripting pregătite pentru automatizare, utilizate în medii reale de servere de producție.

De ce contează structura corectă a directoarelor pe un server Linux

Pe orice server Ubuntu, sistemul de fișiere reprezintă coloana vertebrală a fiecărei operațiuni. Directoarele organizate deficitar creează probleme în cascadă: căi de aplicații defecte, ierarhii de permisiuni configurate greșit, joburi de backup eșuate și vulnerabilități de securitate cauzate de directoare cu permisiuni de scriere pentru toți utilizatorii, plasate în locații sensibile.

O abordare disciplinată a gestionării directoarelor afectează direct:

  • Moștenirea permisiunilor — directoarele copil moștenesc permisiunile părintelui, cu excepția cazului în care sunt suprascrise explicit, ceea ce face ca deciziile inițiale privind structura să fie critice
  • Domeniul de aplicare al backup-ului — instrumentele de backup precum rsync și tar operează pe arbori de directoare, astfel că gruparea logică reduce complexitatea backup-ului
  • Configurarea serviciilor — serverele web (Apache, Nginx), bazele de date și runtime-urile de aplicații depind toate de căi de directoare bine definite și previzibile
  • Audit și conformitate — căile structurate fac corelarea jurnalelor și analiza forensică semnificativ mai rapide

Dacă gestionați un mediu de VPS Hosting sau un Server Dedicat, stabilirea unei convenții consistente de directoare din prima zi previne datoria tehnică care se acumulează rapid pe măsură ce sistemul crește.

Cerințe preliminare

Înainte de a executa oricare dintre comenzile de mai jos, confirmați următoarele:

  • Aveți acces la un terminal (local sau prin SSH)
  • Contul dvs. de utilizator are permisiune de scriere în locația țintă
  • Pentru directoarele la nivel de sistem (de ex., sub /etc/ sau /var/), aveți privilegii sudo
  • Versiunea Ubuntu: aceste comenzi se aplică universal pentru Ubuntu 18.04, 20.04, 22.04 și 24.04 LTS

Pentru a verifica directorul de lucru curent în orice moment, rulați:

pwd

Metoda 1: Crearea de bază a unui director cu mkdir

Comanda mkdir (make directory) este utilitarul POSIX standard pentru crearea directoarelor. Este disponibil pe orice distribuție Linux fără instalare.

Sintaxă:

mkdir directory_name

Exemplu:

mkdir project_files

Aceasta creează un director numit project_files în locația curentă. Comanda nu produce nicio ieșire în caz de succes — acesta este comportamentul standard Unix. Pentru a confirma crearea:

ls -la

Convenții de denumire de urmat în producție:

  • Folosiți litere mici și underscore-uri sau cratime: web_assets, backup-2024
  • Evitați spațiile în numele directoarelor — acestea necesită escape (mkdir "my folder" sau mkdir my folder) și strică multe scripturi shell
  • Evitați caracterele speciale: &, *, ?, !, | au semnificații specifice shell-ului și provoacă comportament imprevizibil

Metoda 2: Crearea unui director la o cale absolută specifică

În loc să navigați mai întâi la o locație țintă, puteți transmite calea absolută completă direct către mkdir. Aceasta este abordarea preferată în scripturi și provizionare automată.

Sintaxă:

mkdir /full/path/to/new_directory

Exemplu:

mkdir /var/www/html/myapp

Constrângere importantă: Această comandă va eșua dacă vreun director intermediar din cale nu există deja. De exemplu, dacă /var/www/html/ nu există, comanda de mai sus returnează:

mkdir: cannot create directory '/var/www/html/myapp': No such file or directory

Soluția este indicatorul -p, acoperit în Metoda 3.

Utilizarea căilor relative este la fel de validă și adesea mai lizibilă în sesiunile interactive:

mkdir ../sibling_directory
mkdir ./subdirectory

Metoda 3: Crearea directoarelor imbricate recursiv cu -p

Indicatorul -p (parents) este una dintre cele mai importante opțiuni operaționale din mkdir. Instruiește comanda să creeze toate directoarele intermediare lipsă din calea specificată și suprimă eroarea care ar apărea în mod normal dacă directorul țintă există deja.

Sintaxă:

mkdir -p parent_directory/child_directory/grandchild_directory

Exemplu:

mkdir -p /var/www/html/myapp/logs/archive

Dacă /var/www/html/myapp/ nu există, această singură comandă creează întregul lanț: myapp, apoi logs în interiorul acestuia, apoi archive în interiorul aceluia.

Caz de utilizare critic în producție — rădăcini de documente pentru serverul web:

mkdir -p /var/www/vhosts/example.com/{public_html,logs,ssl,tmp}

Această sintaxă de expansiune cu acolade (acoperită în detaliu în Metoda 6) combinată cu -p este un tipar standard pentru provizionarea de noi medii de gazde virtuale într-o singură comandă.

Indicatorul -p previne, de asemenea, erorile în scripturile idempotente. Dacă rulați aceeași comandă mkdir -p de două ori, a doua execuție nu face nimic și se încheie curat cu codul 0. Fără -p, a doua rulare ar returna o eroare, stricând orice script care folosește set -e (ieșire la eroare).

Metoda 4: Crearea simultană a mai multor directoare

mkdir acceptă mai multe argumente, creând toate directoarele specificate într-o singură invocare.

Sintaxă:

mkdir dir1 dir2 dir3

Exemplu:

mkdir assets uploads cache sessions

Aceasta creează patru directoare separate în locația curentă. Toate directoarele sunt create la același nivel — aceasta nu este o structură imbricată.

Combinare cu căi absolute:

mkdir /srv/app/modules /srv/app/config /srv/app/data

Combinare cu -p pentru mai multe căi imbricate:

mkdir -p /srv/project/frontend/src /srv/project/backend/src /srv/project/docs

Acest lucru este deosebit de util la schițarea unei noi structuri de directoare de aplicație înainte de implementare.

Metoda 5: Crearea directoarelor cu permisiuni specifice folosind -m

În mod implicit, mkdir aplică permisiuni bazate pe valoarea umask a sistemului. Pe majoritatea sistemelor Ubuntu, umask-ul implicit este 0022, ceea ce înseamnă că noile directoare primesc permisiuni de 755 (proprietar: citire/scriere/executare; grup: citire/executare; alții: citire/executare).

În multe scenarii de server, permisiunile implicite sunt fie prea permisive, fie prea restrictive. Indicatorul -m vă permite să setați permisiuni exacte la momentul creării folosind notația octală.

Sintaxă:

mkdir -m octal_mode directory_name

Tipare comune de permisiuni:

Mod OctalSimbolicCaz tipic de utilizare
700rwx------Date private ale utilizatorului, directoare cu chei SSH
750rwxr-x---Directoare de aplicații partajate cu un grup
755rwxr-xr-xRădăcini de documente web publice
770rwxrwx---Directoare partajate de echipă
777rwxrwxrwxSpațiu temporar de lucru (evitați în producție)

Exemplu — crearea unui director securizat pentru chei SSH:

mkdir -m 700 ~/.ssh

Exemplu — crearea unei rădăcini web cu permisiuni corecte:

mkdir -m 755 /var/www/html/newsite

Combinarea -m și -p:

mkdir -p -m 750 /srv/app/config/secrets

Rețineți că atunci când utilizați -p, modul este aplicat doar directorului final din cale, nu și directoarelor intermediare care sunt create. Directoarele intermediare primesc permisiunile implicite bazate pe umask. Dacă aveți nevoie de control precis asupra tuturor nivelurilor, creați fiecare nivel individual cu indicatori -m expliciți sau utilizați chmod ulterior.

Metoda 6: Expansiunea cu acolade pentru arbori de directoare complexi

Expansiunea cu acolade este o funcționalitate a shell-ului Bash — nu o opțiune mkdir — care generează mai multe argumente dintr-un singur tipar. Combinată cu mkdir -p, este cel mai eficient mod de a crea ierarhii complexe de directoare.

Expansiune de bază cu acolade:

mkdir -p project/{src,tests,docs,build}

Aceasta se extinde la:

mkdir -p project/src project/tests project/docs project/build

Expansiune cu acolade pe mai multe niveluri:

mkdir -p app/{frontend/{components,pages,styles},backend/{controllers,models,routes},shared/utils}

Aceasta creează următoarea structură:

app/
├── frontend/
│   ├── components/
│   ├── pages/
│   └── styles/
├── backend/
│   ├── controllers/
│   ├── models/
│   └── routes/
└── shared/
    └── utils/

Acest tipar este o practică standard la inițializarea de noi repository-uri de aplicații sau la provizionarea directoarelor de aplicații pe un VPS cu cPanel proaspăt sau pe un server bare-metal.

Metoda 7: Crearea directoarelor prin interfața grafică Ubuntu (aplicația Files)

Pentru instalările Ubuntu desktop sau sesiunile de desktop la distanță, aplicația GNOME Files (Nautilus) oferă o metodă grafică.

Pași:

  1. Deschideți aplicația Files din meniul Activities sau din dock
  2. Navigați la directorul părinte unde doriți noul folder
  3. Faceți clic dreapta pe o zonă goală din director
  4. Selectați New Folder din meniul contextual
  5. Tastați numele dorit pentru folder și apăsați Enter

Scurtătură de tastatură: În Nautilus, Ctrl+Shift+N creează instantaneu un folder nou fără a utiliza meniul clic dreapta.

Limitările abordării grafice:

  • Nu poate seta permisiuni personalizate în timpul creării — necesită o acțiune ulterioară în terminal sau în proprietățile fișierului
  • Nu poate crea structuri imbricate recursive într-o singură operațiune
  • Nu este disponibil în mediile de server headless (marea majoritate a serverelor Ubuntu de producție rulează fără un mediu desktop)

Pentru orice activitate serioasă de administrare a serverului, metodele din linia de comandă sunt întotdeauna preferate.

Metoda 8: Scripting pentru crearea automată a directoarelor

În administrarea reală a serverelor, directoarele sunt rareori create manual, unul câte unul. Scripturile de provizionare, pipeline-urile de implementare și instrumentele de gestionare a configurației se bazează toate pe crearea automată a directoarelor.

Exemplu de script shell de bază:

#!/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."

Practici cheie de scripting:

  • Utilizați întotdeauna set -e pentru a abandona la orice eroare
  • Puneți toate variabilele între ghilimele ("$dir") pentru a gestiona în siguranță căile cu spații
  • Combinați mkdir -p cu chown și chmod în același script pentru a vă asigura că permisiunile sunt corecte imediat după creare
  • Utilizați array-uri pentru listele de directoare pentru a menține scripturile lizibile și ușor de întreținut

Această abordare este esențială la gestionarea mai multor gazde virtuale, implementarea aplicațiilor în diferite medii sau automatizarea configurării serverului cu instrumente precum Ansible sau scripturi de provizionare bazate pe Bash.

Comparație: opțiunile mkdir și cazurile lor de utilizare

ComandăCreează directoare intermediareSetează permisiuniDirectoare multipleIdempotent
mkdir dirNuNu (folosește umask)NuNu
mkdir -p path/to/dirDaNu (folosește umask)NuDa
mkdir -m 755 dirNuDaNuNu
mkdir -p -m 750 path/dirDaDa (doar directorul final)NuDa
mkdir dir1 dir2 dir3NuNu (folosește umask)DaNu
mkdir -p {a,b,c}/subDaNu (folosește umask)DaDa

Erori frecvente și cum să le remediați

Eroare: Permission denied

mkdir: cannot create directory '/etc/myapp': Permission denied

Cauză: Încercați să scrieți într-un director deținut de sistem fără privilegii ridicate.

Remediere: Adăugați sudo înainte:

sudo mkdir /etc/myapp

Eroare: No such file or directory

mkdir: cannot create directory '/srv/app/config': No such file or directory

Cauză: Unul sau mai multe directoare intermediare din cale nu există.

Remediere: Utilizați indicatorul -p:

mkdir -p /srv/app/config

Eroare: File exists

mkdir: cannot create directory 'mydir': File exists

Cauză: Un director sau fișier cu acel nume există deja.

Remediere: Utilizați -p pentru a suprima această eroare când calea existentă este un director, sau alegeți un alt nume.

Eșec silențios în scripturi: Dacă mkdir eșuează și scriptul dvs. nu folosește set -e sau nu verifică codurile de ieșire, operațiunile ulterioare pot continua pe o cale inexistentă, cauzând eșecuri imprevizibile. Validați întotdeauna crearea critică a directoarelor:

mkdir -p /srv/app/data || { echo "Failed to create data directory"; exit 1; }

Considerații de securitate pentru crearea directoarelor

Permisiunile directoarelor reprezintă o primă linie de apărare în securitatea serverului. Mai multe vulnerabilități cu impact ridicat provin direct din permisiuni incorecte ale directoarelor:

  • Directoarele cu scriere pentru toți (777) permit oricărui utilizator din sistem să scrie, modifice sau șteargă fișiere — un risc critic pe găzduirea partajată sau serverele cu mai mulți utilizatori
  • Proprietatea incorectă a directoarelor accesibile web poate permite exploit-urilor aplicațiilor web să scrie fișiere malițioase în afara rădăcinii de documente prevăzute
  • Bitul sticky (chmod +t) pe directoarele partajate (precum /tmp) împiedică utilizatorii să șteargă fișierele deținute de alții — setați întotdeauna acest bit pe directoarele partajate cu scriere
  • Bitul SetGID pe directoare asigură că fișierele noi moștenesc grupul directorului în loc de grupul principal al utilizatorului creator — util pentru directoarele de proiecte colaborative

Exemplu — director de proiect partajat securizat:

mkdir -p /srv/shared/project
chown root:developers /srv/shared/project
chmod 2775 /srv/shared/project  # SetGID + rwxrwxr-x

La găzduirea aplicațiilor web, domeniilor securizate SSL sau serviciilor de email, permisiunile corecte ale directoarelor sunt inseparabile de postura de securitate a configurației dvs. de Certificate SSL și de configurarea Email Hosting.

Verificarea creării directoarelor

După crearea directoarelor, verificați întotdeauna rezultatul înainte de a continua cu operațiunile dependente.

Listare cu permisiuni detaliate:

ls -la /path/to/parent/

Verificați că un director specific există (util în scripturi):

[ -d /srv/app/config ] && echo "Directory exists" || echo "Directory missing"

Vizualizați structura completă arborescentă (necesită pachetul tree):

sudo apt install tree -y
tree /srv/app/

Verificați utilizarea inode-urilor — pe serverele cu multe fișiere mici, epuizarea inode-urilor poate împiedica crearea directoarelor chiar și atunci când există spațiu pe disc disponibil:

df -i /srv/

Dacă utilizarea inode-urilor este aproape de 100%, nu puteți crea noi directoare sau fișiere indiferent de spațiul pe disc disponibil. Aceasta este o problemă frecventă în producție pe serverele care găzduiesc un număr mare de fișiere mici, cum ar fi serverele de email sau directoarele de sesiuni PHP.

Matrice practică de decizie: ce metodă să utilizați

ScenariuComandă recomandată
Director unic, sesiune interactivămkdir dirname
Director la o cale absolută cunoscutămkdir /full/path/dirname
Cale imbricată, unii părinți pot să nu existemkdir -p /full/nested/path
Mai multe directoare de același nivel simultanmkdir dir1 dir2 dir3
Arbore complex pe mai multe niveluri într-o singură comandămkdir -p root/{a,b,c}/{sub1,sub2}
Director cu permisiuni non-implicitemkdir -m 750 dirname
Script de provizionare automatămkdir -p cu chown/chmod în secvență
Pas idempotent în pipeline de implementaremkdir -p (sigur de re-rulat)

Concluzii tehnice cheie

  • mkdir -p este cea mai sigură opțiune implicită pentru orice creare de directoare prin scripting sau automatizată — este idempotentă și gestionează căile intermediare lipsă
  • Nu utilizați niciodată permisiunile 777 pe directoarele de producție; preferați 755 pentru căile publice și 750 sau 700 pentru datele sensibile
  • Indicatorul -m din mkdir setează permisiunile doar pe directorul final când este utilizat cu -p — utilizați chmod -R sau apeluri mkdir per nivel pentru control complet
  • Expansiunea cu acolade este o funcționalitate Bash, nu o funcționalitate mkdir — nu va funcționa în scripturile /bin/sh dacă shell-ul nu este Bash
  • Verificați întotdeauna disponibilitatea inode-urilor (df -i) pe sistemele de fișiere cu densitate mare înainte de crearea în masă a directoarelor
  • Combinați crearea directoarelor cu atribuirea imediată a chown în scripturile de provizionare pentru a evita o fereastră în care directoarele există cu proprietate incorectă
  • În mediile cu Panouri de Control VPS, utilizatorii serverului web (de obicei www-data sau nginx) trebuie să aibă permisiune de executare pe fiecare director din calea rădăcinii de documente — nu doar pe directorul final

Întrebări frecvente

Care este diferența dintre mkdir folder și mkdir -p folder?

mkdir folder creează un singur director și eșuează dacă orice parte a căii nu există sau dacă directorul există deja. mkdir -p folder creează toate directoarele intermediare lipsă și se încheie silențios fără eroare dacă ținta există deja, făcându-l sigur pentru scripturi și execuție repetată.

Poate mkdir crea un director cu spații în nume?

Da. Puneți numele între ghilimele: mkdir "my project folder" sau faceți escape spațiilor: mkdir my project folder. Cu toate acestea, spațiile în numele directoarelor sunt puternic descurajate pe servere deoarece necesită escape în fiecare comandă ulterioară și strică multe scripturi shell și configurații de aplicații.

De ce eșuează mkdir cu "Permission denied" chiar și cu sudo?

Acest lucru apare de obicei când sistemul de fișiere țintă este montat doar în citire, când politicile SELinux sau AppArmor restricționează scrierile în acea cale, sau când calea se află pe un sistem de fișiere de rețea cu restricții pe partea serverului. Verificați opțiunile de montare cu mount | grep /target/path și examinați jurnalele AppArmor cu sudo aa-status.

Cum creez un director și îi setez imediat proprietarul și grupul?

mkdir în sine nu setează proprietatea — utilizați chown imediat după: mkdir -p /srv/app && chown www-data:www-data /srv/app. Într-un singur pipeline: install -d -m 755 -o www-data -g www-data /srv/app — comanda install creează directoare cu proprietar, grup și mod într-un singur pas.

Ce se întâmplă cu permisiunile când se utilizează mkdir -p cu mai multe niveluri noi?

Doar directorul final (cel mai adânc) primește modul specificat de -m. Toate directoarele intermediare nou create primesc permisiuni derivate din umask-ul curent. Dacă sunt necesare permisiuni consistente pe toate nivelurile, fie creați fiecare nivel individual cu indicatori -m expliciți, fie aplicați chmod -R după ce calea completă este creată.

15%

Economisește 15% la toate serviciile de găzduire

Testează-ți abilitățile și obține Reducere la orice plan de găzduire

Utilizați codul:

Skills
Începeți