Scroll to navigation

UMOUNT(2) Підручник програміста Linux UMOUNT(2)

НАЗВА

umount, umount2 — демонтування файлової системи

КОРОТКИЙ ОПИС

#include <sys/mount.h>
int umount(const char *ціль);
int umount2(const char *ціль, int прапорці);

ОПИС

umount() і umount2() вилучають долучення (найвищої) файлової системи, яку змонтовано до цілі.

Для демонтування файлових систем потрібні відповідні права доступу (Linux: можливість CAP_SYS_ADMIN).

У Linux 2.1.116 додано системний виклик umount2(), який, подібно до umount(), демонтує ціль, але уможливлює додаткове керування прапорцями поведінкою виконаної дії:

Наказати файловій системі припинити обробку запитів з черги до спроби демонтування. Це може дозволити завершити демонтування без очікування на зв'язок із недоступним сервером, але може спричинити втрату даних. Якщо після переривання запитів якісь процеси матимуть активні посилання на файлову систему, демонтування зазнає невдачі. З випуску Linux 4.12, у MNT_FORCE передбачено підтримку лише таких файлових систем: 9p (з появи Linux 2.6.16), ceph (з появи Linux 2.6.34), cifs (з появи Linux 2.6.12), fuse (з появи Linux 2.6.16), lustre (з появи Linux 3.11) та NFS (з появи Linux 2.1.116).
Виконати ліниве демонтування: зробити точку монтування недоступною для нових доступів, негайно від'єднати файлову систему та усі підлеглі монтування файлової системи одна від одної та від таблиці монтувань, а саме демонтування виконати, коли точка монтування стане незайнятою.
Позначити монтування як таке, строк якого вичерпано Якщо монтування перебуває у використанні, початковий виклик umount2() із цим прапорцем зазнає невдачі з кодом помилки EAGAIN, але позначить монтування як таке, строк дії якого вичерпано. Монтування лишатимуться таким, строк дії якого вичерпано, доки до нього не буде встановлено доступ з якогось процесу. Другий виклик umount2(), що визначає MNT_EXPIRE, демонтує застаріле монтування. Цей прапорець не можна вказувати у поєднанні із MNT_FORCE або MNT_DETACH.
Не розіменовувати ціль, якщо вона є символічним посиланням. Цей прапорець надає змогу уникнути проблем із захистом у програмах із set-user-ID-root, які надають змогу непривілейованим користувачам демонтувати файлові системи.

ПОВЕРНУТЕ ЗНАЧЕННЯ

Якщо функцію буде успішно виконано, буде повернуто нуль. Якщо станеться помилка, буде повернуто -1 і належним чином встановлено errno.

ПОМИЛКИ

Значення помилок, які вказано нижче, є результатом обчислення кодів помилок, які є незалежними від типу файлової системи. У кожного типу файлової системи можуть бути власні спеціалізовані коди помилок і власна спеціалізована поведінка. Див. початковий код ядра Linux, щоб дізнатися більше.

Виклик umount2(), що вказує MNT_EXPIRE, успішно позначив незайняту файлову систему як таку, строк дії якої завершено.
ціль не вдалося демонтувати, оскільки її було зайнято виконанням дій.
ціль вказує на місце поза адресним простором користувача.
ціль не є точкою монтування.
umount2() було викликано з MNT_EXPIRE і або MNT_DETACH, або MNT_FORCE.
umount2() було викликано із некоректним значенням прапорця у прапорцях.
Довжина шляху перевищує MAXPATHLEN.
Шлях є порожнім або містить компонент, якого не існує.
Ядру не вдалося розмістити у пам'яті вільну сторінку для копіювання туди назв файлів або даних.
Команда, з якої викликано функцію, не має потрібних прав доступу.

ВЕРСІЇ

MNT_DETACH і MNT_EXPIRE доступні у glibc, починаючи з версії 2.11.

ВІДПОВІДНІСТЬ

Ці функції є специфічними для Linux. Ними не слід користуватися у програмах, які підлягають портуванню на інші операційні системи.

ПРИМІТКИ

umount() і точки монтування спільного використання

Спільне монтування спричиняє переспрямування будь-яких дій із монтуванням, зокрема дій umount(), до будь-якого спільного монтування у групі вузлів та будь-якого підлеглого монтування у цій групі вузлів. Це означає, що виконання umount() для будь-якого вузла у наборі спільних монтувань спричинятиме демонтування усіх його вузлів, а також демонтування усіх його підлеглих монтувань.

Таке поширення дій з демонтування може бути дещо несподіваним у системах, де усі монтування є типово спільними. У таких системах рекурсивне монтування з прив'язуванням кореневого каталогу файлової системи до підкаталогу, а наступне демонтування цього підкаталогу за допомогою MNT_DETACH призведе до лінивого демонтування усіх монтувань у просторі назв монтування.

Щоб заборонити поширення umount() у цей спосіб, монтування можна повторно змонтувати за допомогою виклику mount(2) із аргументом прапорці_монтування, який включатиме одразу MS_REC і MS_PRIVATE, перед викликом umount().

Історичні подробиці

Виклик початкової версії функції umount() здійснювався як umount(пристрій) і повертав ENOTBLK при виклику із чимось відмінним від блокового пристрою. У Linux 0.98p4 було додано виклик umount(dir) для реалізації підтримки анонімних пристроїв. У Linux 2.3.99-pre7 виклик umount(пристрій) було вилучено — лишився лише виклик umount(катало) (оскільки з того часу пристрої можна було монтувати у декілька місць, тому визначення пристрою стало недостатньо).

ДИВ. ТАКОЖ

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

ПІСЛЯМОВА

Ця сторінка є частиною випуску 5.10 проєкту man-pages Linux. Опис проєкту, дані щодо звітування про вади та найсвіжішу версію цієї сторінки можна знайти за адресою https://www.kernel.org/doc/man-pages/.

ПЕРЕКЛАД

Український переклад цієї сторінки посібника виконано Maxim V. Dziumanenko <mvd@mylinux.com.ua> і Yuri Chornoivan <yurchor@ukr.net>

Цей переклад є безкоштовною документацією; будь ласка, ознайомтеся з умовами GNU General Public License Version 3. НЕ НАДАЄТЬСЯ ЖОДНИХ ГАРАНТІЙ.

Якщо ви знайшли помилки у перекладі цієї сторінки підручника, будь ласка, надішліть електронний лист до списку листування перекладачів: trans-uk@lists.fedoraproject.org.

9 червня 2020 року Linux