umount(2) System Calls Manual umount(2)

umount, umount2 - demontează sistemul de fișiere

Biblioteca C standard (libc, -lc)

#include <sys/mount.h>
int umount(const char *ținta);
int umount2(const char *ținta, int fanioane);

umount() și umount2() elimină atașamentul sistemului de fișiere (cel mai de sus) montat pe țintă.

Este necesar un privilegiu corespunzător (Linux: capacitatea CAP_SYS_ADMIN) pentru a demonta sistemele de fișiere.

Linux 2.1.116 a adăugat apelul de sistem umount2(), care, la fel ca umount(), demontează o țintă, dar permite fanioane suplimentare care controlează comportamentul operației:

Solicită sistemului de fișiere să anuleze cererile în așteptare înainte de a încerca demontarea. Acest lucru poate permite ca demontarea să se finalizeze fără a aștepta un server inaccesibil, dar ar putea cauza pierderi de date. În cazul în care, după anularea cererilor, unele procese au încă referințe active la sistemul de fișiere, demontarea va eșua în continuare. Ca în Linux 4.12, fanionul MNT_FORCE este acceptat numai pe următoarele sisteme de fișiere: 9p (de la Linux 2.6.16), ceph (de la Linux 2.6.34), cifs (de la Linux 2.6.12), fuse (de la Linux 2.6.16), lustre (de la Linux 3.11) și NFS (de la Linux 2.1.116).
Efectuează o demontare leneșă: face ca montarea să nu fie disponibilă pentru noi accesări, deconectează imediat sistemul de fișiere și toate sistemele de fișiere montate sub el, unul de celălalt și din tabelul de montare, și efectuează efectiv demontarea atunci când montarea încetează să mai fie ocupată.
Marchează montarea ca fiind expirată. Dacă o montare nu este utilizată în prezent, atunci un apel inițial la umount2() cu acest fanion eșuează cu eroarea EAGAIN, dar marchează montarea ca fiind expirată. Montarea rămâne expirată atâta timp cât nu este accesată de niciun proces. Un al doilea apel umount2() care specifică MNT_EXPIRE demontează o montare expirată. Acest fanion nu poate fi specificat nici cu MNT_FORCE, nici cu MNT_DETACH.
Nu șterge referința la țintă dacă este o legătură simbolică. Acest indicator permite evitarea problemelor de securitate în programele set-user-ID-root care permit utilizatorilor neprivilegiați să demonteze sisteme de fișiere.

În caz de succes, se returnează zero. În caz de eroare, se returnează -1, iar errno este configurată pentru a indica eroarea.

Valorile de eroare prezentate mai jos sunt rezultatul unor erori independente de tipul de sistem de fișiere. Fiecare tip de sistem de fișiere poate avea propriile erori speciale și propriul comportament special. Pentru detalii, consultați codul sursă al nucleului Linux.

Un apel la umount2() specificând MNT_EXPIRE a marcat cu succes un sistem de fișiere neocupat ca fiind expirat.
ținta nu a putut fi demontat deoarece este ocupată.
ținta indică în afara spațiului de adrese al utilizatorului.
ținta nu este un punct de montare.
ținta este blocată; a se vedea mount_namespaces(7).
umount2() a fost apelat cu MNT_EXPIRE, și deasemeni, fie cu MNT_DETACH, fie cu MNT_FORCE.
umount2() a fost apelat cu o valoare nevalidă a fanionului în fanioane.
Un nume de rută a fost mai lung decât MAXPATHLEN.
Un nume de rută era gol sau avea o componentă inexistentă.
Nucleul nu a putut aloca o pagină liberă în care să copieze nume de fișiere sau date.
Apelantul nu dispune de privilegiile necesare.

Linux.

MNT_DETACH și MNT_EXPIRE sunt disponibile începând cu glibc 2.11.

Funcția originală umount() era apelată ca umount(dispozitiv) și returna ENOTBLK atunci când era apelată cu altceva decât un dispozitiv de blocuri. În Linux 0.98p4, a fost adăugat un apel umount(dir), pentru a accepta dispozitive anonime. În Linux 2.3.99-pre7, apelul umount(dispozitiv) a fost eliminat, rămânând doar umount(dir) (deoarece acum dispozitivele pot fi montate în mai multe locuri, astfel încât specificarea dispozitivului nu este suficientă).

Montarea partajată face ca orice activitate de montare pe o montare, inclusiv operațiile umount(), să fie transmise către fiecare montare partajată din grupul de omologi și către fiecare montare sclavă din acel grup de omologi. Aceasta înseamnă că umount() a oricărui omolog dintr-un set de montări partajate va determina demontarea tuturor omologilor săi și a tuturor sclavilor acestora.

Această propagare a activității de demontare poate fi deosebit de surprinzătoare pe sistemele în care fiecare montare este partajată în mod implicit. Pe astfel de sisteme, montarea recursivă a directorului rădăcină al sistemului de fișiere pe un subdirector și apoi demontarea ulterioară a acelui subdirector cu MNT_DETACH va face ca fiecare montare din spațiul de nume de montare să fie demontată în mod leneș.

Pentru a se asigura că umount() nu se propagă în acest mod, montarea poate fi remontată utilizând un apel mount(2) cu un argument fanioane_montare care include atât MS_REC, cât și MS_PRIVATE înainte de apelarea umount().

mount(2), mount_namespaces(7), path_resolution(7), mount(8), umount(8)

Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE.

Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net.

2 mai 2024 Pagini de manual de Linux 6.9.1