mount(2) System Calls Manual mount(2) NAZWA mount - montuje system plikow BIBLIOTEKA Standardowa biblioteka C (libc, -lc) SKLADNIA #include int mount(const char *source, const char *target, const char *filesystemtype, unsigned long mountflags, const void *_Nullable data); OPIS mount() dolacza system plikow podany jako source (czesto jest to sciezka odnoszaca sie do urzadzenia, ale moze byc rowniez sciezka katalogu lub pliku, albo atrapa) do polozenia (katalogu lub pliku) okreslonego sciezka target. Do montowania systemow plikow wymagane sa odpowiednie przywileje (Linux: przywilej CAP_SYS_ADMIN (ang. capability)). Obslugiwane przez jadro wartosci argumentu filesystemtype sa wypisane w /proc/filesystems (np. ,,btrfs", ,,ext4", ,,jfs", ,,xfs", ,,vfat", ,,fuse", ,,tmpfs", ,,cgroup", ,,proc", ,,mqueue", ,,nfs", ,,cifs", ,,iso9660"). Kolejne typy moga stac sie dostepne po zaladowaniu odpowiednich modulow. Argument data jest interpretowany odmiennie przez poszczegolne systemy plikow. Zwykle jest to lancuch oddzielonych przecinkiem opcji akceptowanych przez dany system plikow. W podreczniku mount(8) opisano opcje dostepne dla kazdego typu systemu plikow. Argument ten mozna podac rowniez jako NULL, gdy brak jest opcji. Wywolanie do mount() dokonuje wielu ogolnych typow dzialan, w zaleznosci od bitow podanych w mountflags. Wybor operacji do wykonania jest dokonywany po sprawdzeniu bitow ustawionych w mountflags, a sprawdzenia te maja miejsce w ponizszej kolejnosci: o Montuje ponownie (przemontowuje) istniejace montowanie: mountflags zawiera MS_REMOUNT. o Tworzy montowanie z podpieciem: mountflags zawiera MS_BIND. o Zmienia propagacje typu istniejacego montowania: mountflags obejmuje jedna z: MS_SHARED, MS_PRIVATE, MS_SLAVE lub MS_UNBINDABLE. o Przemieszcza istniejace montowanie do nowego polozenia: mountflags zawiera MS_MOVE. o Tworzy nowe montowanie: mountflags nie zawiera zadnego z powyzszych znacznikow. Wszystkie powyzsze operacje sa opisane w dalszej czesci podrecznika. Kolejne znaczniki mozna podac w mountflags, w celu modyfikacji zachowania mount(), zgodnie z opisem ponizej. Dodatkowe znaczniki montowan Ponizsza lista opisuje dodatkowe znaczniki, ktore mozna podac w mountflags. Prosze zauwazyc, ze czesc operacji ignoruje niektore, lub wszystkie, z tych znacznikow, zgodnie z opisem w dalszej czesci podrecznika. MS_DIRSYNC (od Linuksa 2.5.19) Czyni zmiany katalogow w tym systemie plikow synchronicznymi (te wlasciwosc mozna pozyskac dla indywidualnych katalogow lub poddrzew za pomoca chattr(1)). MS_LAZYTIME (od Linuksa 4.0) Redukuje aktualizacje znacznikow czasowych (atime, mtime, ctime) i-wezlow na dysku, zarzadzajac tymi zmianami jedynie w pamieci. Znaczniki czasowe na dysku sa aktualizowane tylko, gdy: o i-wezel musi byc zaktualizowany z powodu innej zmiany, niezwiazanej ze znacznikami czasowymi; o aplikacja uzyje fsync(2), syncfs(2) lub sync(2); o przywrocony (po usunieciu) i-wezel jest wyrzucany z pamieci; albo o minelo ponad 24 godziny od czasu zapisania i-wezla na dysk. Ta opcja montowania znacznie redukuje koniecznosc aktualizowania znacznikow czasowych i-wezlow, zwlaszcza mtime i atime. Jednak w przypadku zalamania systemu, pola atime i mtime na dysku, moga zawierac nieaktualne informacje odnosnie zdarzen do 24 godzin wstecz. Przykladami obciazen, gdzie opcja ta moze dac znaczne korzysci, sa czeste losowe zapisy do prealokowanych plikow, jak rowniez przypadki, gdy wlaczona jest rowniez opcja montowania MS_STRICTATIME (zaleta laczenia MS_STRICTATIME i MS_LAZYTIME jest taka, ze stat(2) zwroci poprawnie zaktualizowany atime, lecz aktualizacje atime zostana zapisane na dysku tylko w wyzej wymienionych przypadkach). MS_MANDLOCK Pozwala na blokowanie obowiazujace (przymusowe) w tym systemie plikow (blokowanie obowiazujace musi byc wciaz wlaczone w danym pliku, jak opisano w fcntl(2)). Od Linuksa 4.5, ta opcja montowania wymaga przywileju CAP_SYS_ADMIN oraz jadra skonfigurowanego z opcja CONFIG_MANDATORY_FILE_LOCKING. Blokowanie obowiazujace, od Linuksa 5.15, jest w pelni przestarzale, zatem znacznik ten rowniez nalezy uwazac za przestarzaly. MS_NOATIME Nie aktualizuje czasu dostepu dla (wszystkich typow) plikow w tym systemie plikow. MS_NODEV Nie zezwala na dostep do (plikow specjalnych) urzadzen w tym systemie plikow. MS_NODIRATIME Nie aktualizuje czasu dostepu do katalogow w tym systemie plikow. Znacznik udostepnia podzbior funkcjonalnosci zapewnianej przez MS_NOATIME tj. MS_NOATIME wymusza MS_NODIRATIME. MS_NOEXEC Nie zezwala na wykonywanie programow z tego systemu plikow. MS_NOSUID Nie honoruje bitow set-user-ID i set-group-ID, ani przywilejow plikowych (ang. file capabilities) przy wykonywaniu programow z tego systemu plikow. Dodatkowo, przejscia domeny SELinux wymagaja uprawnienia nosuid_transition, co z kolei wymaga rowniez przywileju zasad nnp_nosuid_transition. MS_RDONLY Montuje system plikow tylko do odczytu. MS_REC (od Linuksa 2.4.11) Uzywane w polaczeniu z MS_BIND do utworzenia rekurencyjnego montowania z podpieciem oraz w polaczeniu ze znacznikami typu propagacji, aby rekurencyjnie zmienic typ propagacji we wszystkich montowaniach poddrzewa. Wiecej szczegolow podano nizej. MS_RELATIME (od Linuksa 2.6.20) Gdy uzyskiwany jest dostep do pliku w tym systemie plikow, aktualizuje czas ostatniego dostepu do pliku (atime) tylko, gdy aktualna wartosc atime jest mniejsza lub rowna czasowi ostatniej modyfikacji (mtime) lub czasowi ostatniej zmiany statusu (ctime). Opcja jest przydatna dla programow takich jak mutt(1), ktore musza wiedziec, kiedy plik zostal odczytany po jego ostatniej modyfikacji. Od Linuksa 2.6.30, jadro domyslnie stosuje zachowanie zapewniane przez ten znacznik (chyba, ze podano MS_NOATIME), a do uzyskania tradycyjnego zachowania konieczne jest podanie znacznika MS_STRICTATIME. Dodatkowo, od Linuksa 2.6.30, czas ostatniego dostepu do pliku jest zawsze aktualizowany, gdy jest starszy niz 1 dzien. MS_SILENT (od Linuksa 2.6.17) Powstrzymuje wypisywanie pewnych (printk()) ostrzezen w dzienniku jadra. Znacznik ten zastepuje blednie nazwany i przestarzaly znacznik MS_VERBOSE (dostepny od Linuksa 2.4.12), ktory ma takie samo znaczenie. MS_STRICTATIME (od Linuksa 2.6.30) Zawsze aktualizuje czas ostatniego dostepu (atime) przy uzyskiwaniu dostepu do plikow w tym systemie plikow (bylo to domyslne zachowanie przed Linuksem 2.6.30). Podanie tego znacznika przeslania efekt ustawienia znacznikow MS_NOATIME i MS_RELATIME. MS_SYNCHRONOUS Czyni zapisy w tym systemie plikow synchronicznymi (tak, jakby w przypadku wszystkich otwarc plikow w tym systemie plikow podawano znacznik O_SYNC do open(2)). MS_NOSYMFOLLOW (od Linuksa 5.10) Nie podaza za dowiazaniami symbolicznymi przy rozwiazywaniu sciezek. Dowiazania symboliczne moga byc wciaz tworzone, a readlink(1), readlink(2), realpath(1) i realpath(3) wciaz dzialaja poprawnie. Od Linuksa 2.4, niektore z powyzszych znacznikow sa ustawiane na dane montowanie; inne tycza sie superbloku montowanego systemu plikow -- co oznacza, ze wszystkie kolejne montowania tego samego systemu plikow beda dzielic te znaczniki (wczesniej wszystkie znaczniki ladowaly w superbloku). Znaczniki ustawiane na dane montowanie to: o Od Linuksa 2.4: MS_NODEV, MS_NOEXEC i MS_NOSUID sa ustawiane na dane montowanie. o Dodatkowo, od Linuksa 2.6.16: MS_NOATIME i MS_NODIRATIME. o Dodatkowo, od Linuksa 2.6.20: MS_RELATIME. Nastepujace znaczniki sa przypisane do superbloku: MS_DIRSYNC, MS_LAZYTIME, MS_MANDLOCK, MS_SILENT i MS_SYNCHRONOUS. Poczatkowe ustawienie tych znacznikow zalezy od pierwszego montowania systemu plikow i bedzie dzielone przez wszystkie kolejne montowania tego systemu plikow. Ustawienia tych znacznikow mozna zmienic nastepnie operacja ponownego montowania (przemontowania; zob. nizej). Zmiany te beda widoczne we wszystkich montowaniach zwiazanych z systemem plikow. Od Linuksa 2.6.16, MS_RDONLY moze byc ustawiony lub usuniety zarowno w danym montowaniu jak i w superbloku systemu plikow. Zamontowany system plikow bedzie dostepny do zapisu tylko, gdy ani system plikow, ani punkt montowania nie ma znacznika tylko do odczytu. Ponowne montowanie (przemontowanie) istniejacego montowania Istniejace montowanie moze zostac zamontowane ponownie (przemontowane), podajac MS_REMOUNT w mountflags. Mozna w ten sposob zmienic mountflags i data istniejacego montowania, bez potrzeby odmontowywania i montowania systemu plikow. Cel target powinien miec te sama wartosc, jaka podano w pierwotnym wywolaniu mount(). Argumenty source i filesystemtype sa ignorowane. Argumenty mountflags i data powinny byc zgodne z wartosciami uzytymi w pierwotnym wywolaniu mount() -- poza tymi wartosciami, ktore chce sie zmienic. Nastepujace mountflags moga byc zmieniane: MS_LAZYTIME, MS_MANDLOCK, MS_NOATIME, MS_NODEV, MS_NODIRATIME, MS_NOEXEC, MS_NOSUID, MS_RELATIME, MS_RDONLY, MS_STRICTATIME (co powoduje usuniecie znacznikow MS_NOATIME i MS_RELATIME) oraz MS_SYNCHRONOUS. Proby zmiany ustawien MS_DIRSYNC i MS_SILENT podczas przemontowania sa po cichu ignorowane. Prosze zauwazyc, ze zmiany znacznikow w superbloku sa widoczne we wszystkich montowaniach zwiazanych z danym systemem plikow (poniewaz znaczniki superbloku sa dzielone przez wszystkie montowania). Od Linuksa 3.17, jesli w mountflags nie podano zadnej z opcji: MS_NOATIME, MS_NODIRATIME, MS_RELATIME, ani MS_STRICTATIME, to operacja przemontowania zachowuje istniejace wartosci tych znacznikow (zamiast powracac do MS_RELATIME). Od Linuksa 2.6.26, znacznik MS_REMOUNT moze byc uzyty lacznie z MS_BIND, aby zmodyfikowac jedynie znaczniki przypisane do danego montowania. Jest to szczegolnie przydatne w ustawianiu lub usuwaniu znacznika ,,tylko do odczytu" bez zmieniania samego systemu plikow. Podanie nastepujacych mountflags: MS_REMOUNT | MS_BIND | MS_RDONLY uczyni dostep do tego punktu montowania tylko do odczytu, bez zmieniania innych montowan. Tworzenie montowania z podpieciem (bind mount) Jesli mountflags obejmuje MS_BIND (dostepny od Linuksa 2.4), to dokonywane jest montowanie z podpieciem. Montowanie z podpieciem czyni poddrzewo katalogow widocznym w innym punkcie pojedynczej hierarchii katalogow. Montowania z podpieciem moga przekraczac granice systemow plikow i rozciagac sie na wiezienia chroot(2). Argumenty filesystemtype i data sa ignorowane. Pozostale bity (poza MS_REC, opisanym ponizej) w argumencie mountflags rowniez sa ignorowane (montowanie z podpieciem ma te same opcje montowania jak podstawowe montowanie). W rozdziale dotyczacym ponownego montowania (przemontowania) opisano sposob uczynienia istniejacego montowania z podpieciem, montowaniem tylko do odczytu. Domyslnie, gdy katalog jest montowany z podpieciem, montowany jest tylko ten katalog; jesli w drzewie katalogow istnieja kolejne podmontowania, nie sa one montowane z podpieciem. Jesli poda sie rowniez znacznik MS_REC, to dokonywana jest rekurencyjna operacja montowania z podpieciem -- wszystkie podmontowania w poddrzewie w source (inne niz montowania bez podpiecia) sa rowniez montowane z podpieciem, w odpowiednim polozeniu poddrzewa target. Zmiana typu propagacji istniejacego montowania Jesli mountflags obejmuje jeden z: MS_SHARED, MS_PRIVATE, MS_SLAVE lub MS_UNBINDABLE (wszystkie dostepne od Linuksa 2.6.15), to zmieniana jest propagacja istniejacego montowania. Jesli poda sie wiecej niz jeden z tych znacznikow, wystapi blad. Jedyne inne znaczniki, jakie mozna podac przy zmianie typu propagacji to: MS_REC (opisany ponizej) oraz MS_SILENT (ktory jest ignorowany). Argumenty source, filesystemtype i data sa ignorowane. Znaczenie znacznikow typu propagacji jest nastepujace: MS_SHARED Czyni montowanie dzielonym. Zdarzenia zamontowania i odmontowania znajdujace sie bezposrednio pod tym montowaniem beda propagowane do innych montowan, ktore sa czlonkami grupy rownoleglych montowan. Propagacja oznacza tu, ze to samo zamontowanie lub odmontowanie nastapi automatycznie we wszystkich innych montowaniach w grupie rownoleglych montowan. Zatem zdarzenia zamontowania i odmontowania, ktore wystapia w rownoleglych montowaniach, beda propagowane rowniez na niniejsze montowanie. MS_PRIVATE Czyni montowanie prywatnym. Zdarzenia zamontowania i odmontowania nie propaguja z tego montowania, ani na to montowanie. MS_SLAVE Jesli jest to montowanie dzielone, bedace czlonkiem grupy montowan rownoleglych, zawierajacej innych czlonkow, konwertuje je na montowanie podlegle. Jesli jest to montowanie dzielone, bedace czlonkiem grupy montowan rownoleglych, niezawierajacej innych czlonkow, konwertuje je na montowanie prywatne. W innych przypadkach typ propagacji montowania jest pozostawiany bez zmian. Gdy montowanie jest podlegle, zdarzenia zamontowania i odmontowania propaguja na to montowanie z (nadrzednej) grupy montowan rownoleglych, ktorej montowanie bylo pierwotnie czlonkiem. Zdarzenia zamontowania i odmontowania pod tym montowaniem nie propaguja na inne. Montowanie moze byc podlegle wobec innej grupy montowan rownoleglych, a w tym samym czasie dzielic zdarzenia montowania i odmontowania z grupa montowan rownoleglych, ktorej jest czlonkiem. MS_UNBINDABLE Czyni to montowanie niepodpinalnym. Dziala to w ten sposob jak montowanie prywatne, tyle ze dodatkowo nie da sie go zamontowac z podpieciem. Gdy dokonywane jest rekurencyjne montowanie z podpieciem (mount() ze znacznikami MS_BIND i MS_REC) w poddrzewie katalogow, wszelkie niepodpinalne montowania w poddrzewie sa automatycznie wycinane (tj. nie sa replikowane) przy replikacji tego poddrzewa w celu utworzenia poddrzewa docelowego. Domyslnie, zmiana typu propagacji wplywa jedynie na montowanie target. Jesli w mountflags poda sie rowniez znacznik MS_REC, to zmieni sie typ propagacji rowniez wszystkich montowan ponizej celu target. Wiecej informacji o typach propagacji montowan (w tym domyslnym typie propagacji montowan przypisywanym nowym montowaniom) znajduje sie w podreczniku mount_namespaces(7). Przesuwanie montowania Jesli mountflags zawiera znacznik MS_MOVE (dostepny od Linuksa 2.4.18), to nastapi przesuniecie poddrzewa: source okresla dotychczasowe montowanie, a target podaje nowe polozenie, do ktorego to montowanie ma byc przemieszczone. Przesuniecie jest niepodzielne, w zadnej chwili poddrzewo nie jest odmontowane. Pozostale bity w argumencie mountflags sa ignorowane, podobnie jak argumenty filesystemtype i data. Tworzenie nowego montowania Jesli w mountflags nie jest podany zaden ze znacznikow: MS_REMOUNT, MS_BIND, MS_MOVE, MS_SHARED, MS_PRIVATE, MS_SLAVE lub MS_UNBINDABLE, to mount() dokonuje swojej domyslnej akcji: tworzenia nowego montowania. source okresla zrodlo nowego montowania, a target podaje katalog, w ktorym zostanie utworzony punkt montowania. Uzywane sa argumenty filesystemtype i data, a w mountflags mozna podac kolejne bity, aby zmodyfikowac zachowanie wywolania. WARTOSC ZWRACANA Po pomyslnym zakonczeniu zwracane jest zero. Po bledzie zwracane jest -1 i ustawiane errno, wskazujac blad. BLEDY Podane ponizej wartosci bledow, stanowia bledy niezalezne od typu systemu plikow. Kazdy typ systemu plikow moze miec swoje specjalne bledy i swoje specjalne zachowania. Wiecej szczegolow w kodzie zrodlowym jadra Linux. EACCES Skladowa sciezki byla nieprzeszukiwalna (zob. tez path_resolution(7)). EACCES Probowano zamontowac system plikow tylko do odczytu, bez podania znacznika MS_RDONLY. System plikow moze byc tylko do odczytu z wielu powodow, w tym: istnienia na dysku optycznym tylko do odczytu; istnienia na urzadzeniu z fizycznym przelacznikiem, ustawionym w pozycji tylko do odczytu; skompilowania implementacji systemu plikow tylko z obsluga odczytu; wystapienia przy pierwotnym zamontowaniu systemu plikow bledow, ktore spowodowaly oznaczenie go jako tylko do odczytu, z brakiem mozliwosci zamontowania jako do odczytu i zapisu (do momentu naprawienia tych bledow). Niektore systemy plikow, przy probie zamontowania systemu tylko do odczytu, w zamian zwracaja blad EROFS. EACCES Urzadzenie blokowe source jest polozone w systemie plikow zamontowanym z opcja MS_NODEV. EBUSY Probowano ulozyc nowe montowanie bezposrednio na istniejacym punkcie montowania, ktory utworzono w tej przestrzeni nazw montowan z tymi samymi argumentami source i target. EBUSY source nie moze byc przemontowany tylko do odczytu, poniewaz wciaz utrzymuje pliki otwarte do zapisu. EFAULT Jeden z argumentow wskaznikowych wskazuje poza przestrzen adresowa uzytkownika. EINVAL source ma nieprawidlowy superblok. EINVAL Probowano dokonac operacji przemontowania (MS_REMOUNT), lecz source nie bylo zamontowane w target. EINVAL Probowano dokonac operacji przesuniecia (MS_MOVE), lecz drzewo montowan pod source zawiera montowania nieprzypinalne, a target jest montowaniem z typem propagacji MS_SHARED. EINVAL Probowano dokonac operacji przesuniecia (MS_MOVE), lecz montowanie macierzyste montowania source, ma typ propagacji MS_SHARED. EINVAL Probowano dokonac operacji przesuniecia (MS_MOVE), lecz source nie bylo montowaniem lub wynosilo ,,/". EINVAL Zadano operacji podpiecia (MS_BIND), gdzie source odnosi sie do magicznego dowiazania przestrzeni nazw montowan (tj. dowiazania magicznego /proc/pid/ns/mnt lub montowania z podpieciem do takiego dowiazania), przy czym typ propagacji montowania macierzystego wobec target wynosil MS_SHARED, a zadany typ propagacji montowania z przypieciem moglby spowodowac zapetlenie zaleznosci, co w przyszlosci uniemozliwiloby zwolnienie przestrzeni nazw montowan. EINVAL mountflags obejmuje wiecej niz jeden z: MS_SHARED, MS_PRIVATE, MS_SLAVE lub MS_UNBINDABLE. EINVAL mountflags obejmuje MS_SHARED, MS_PRIVATE, MS_SLAVE lub MS_UNBINDABLE oraz zawiera znacznik inny niz MS_REC lub MS_SILENT. EINVAL Probowano zamontowac z podpieciem montowanie niepodpinalne. EINVAL W nieuprzywilejowanej przestrzeni nazw montowan (tj. przestrzeni nazw montowan bedacej wlasnoscia przestrzeni nazw uzytkownika, utworzonej przez nieuprzywilejowanego uzytkownika), probowano zamontowac z podpieciem (MS_BIND), bez podania (MS_REC), co spowodowaloby ujawnienie drzewa systemu plikow, pod jednym z podmontowan podpinanego katalogu. ELOOP Podczas rozwiazywania sciezki napotkano zbyt wiele dowiazan. ELOOP Probowano dokonac operacji przesuniecia, a target jest potomkiem source. EMFILE (Gdy nie jest wymagane urzadzen blokowe:) Tablica urzadzen atrap jest pelna. ENAMETOOLONG Sciezka byla dluzsza od MAXPATHLEN. ENODEV filesystemtype nie jest skonfigurowany w jadrze. ENOENT Sciezka byla pusta lub miala nieistniejaca skladowa. ENOMEM Jadro nie moglo zaalokowac wolnej strony, w celu skopiowania do niej nazw plikow lub danych. ENOTBLK source nie jest urzadzeniem blokowym (a bylo ono wymagane). ENOTDIR target lub przedrostek source nie jest katalogiem. ENXIO Glowny numer urzadzenia blokowego source jest poza zakresem. EPERM Wywolujacy nie ma wymaganych przywilejow. EPERM Probowano zmodyfikowac (MS_REMOUNT) znacznik MS_RDONLY, MS_NOSUID lub MS_NOEXEC, albo jeden ze znacznikow ,,atime" (MS_NOATIME, MS_NODIRATIME, MS_RELATIME) istniejacego montowania, lecz montowanie jest zablokowane; zob. mount_namespaces(7). EROFS Probowano zamontowac system plikow tylko do odczytu bez podania znacznika MS_RDONLY. Zob. EACCES wyzej. STANDARDY Linux. HISTORIA Definicje MS_DIRSYNC, MS_MOVE, MS_PRIVATE, MS_REC, MS_RELATIME, MS_SHARED, MS_SLAVE, MS_STRICTATIME i MS_UNBINDABLE dodano do naglowkow glibc w glibc 2.12. Od Linuksa 2.4 pojedynczy system plikow moze byc zamontowany w wielu punktach montowan, a wiele montowan moze byc ulozonych w tym samym punkcie montowan. Argument mountflags moze miec liczbe magiczna 0xC0ED (MS_MGC_VAL) w gornych 16 bitach (wszelkie inne znaczniki opisane w OPISIE zajmuja dolne 16 bitow mountflags). Podanie MS_MGC_VAL bylo wymagane przed Linuksem 2.4, lecz od Linuksa 2.4 nie jest juz konieczne i jest ignorowane, jesli jest obecne. Pierwotny znacznik MS_SYNC zostal przemianowany na MS_SYNCHRONOUS w 1.1.69, gdy w dodano odmienny MS_SYNC. Przed Linuksem 2.4 proba wykonania programu set-user-ID lub set-group-ID w systemie plikow zamontowanym z MS_NOSUID zawiodlaby z bledem EPERM. Od Linuksa 2.4, bity set-user-ID i set-group-ID sa w takim przypadku po cichu ignorowane. UWAGI Przestrzenie nazw montowan Od Linuksa 2.4.19, Linux zapewnia przestrzenie nazw montowan. Przestrzen nazw montowan jest zbiorem zamontowanych systemow plikow widocznych dla procesu. Przestrzenie nazw montowan moga byc (i zwykle sa) dzielone pomiedzy wieloma procesami, a zmiany w przestrzeni nazw (tj. zamontowania i odmontowania) dokonywane przez jeden proces, sa widoczne dla innych procesow dzielacych te sama przestrzen nazw (sytuacja sprzed Linuksa 2.4.19 moze byc rozwazana, jak gdyby istniala pojedyncza przestrzen nazw dzielona przez wszystkie procesy w systemie). Proces potomny utworzony przez fork(2) dziedziczy przestrzen montowan procesu macierzystego; przestrzen nazw montowan jest zachowywana przez execve(2). Proces moze uzyskac prywatna przestrzen nazw montowan jesli: utworzono go za pomoca znacznika CLONE_NEWNS clone(2), gdy jego nowa przestrzen nazw jest inicjowana jako kopia przestrzeni nazw procesu, ktory wywolal clone(2); albo jesli wywola unshare(2) ze znacznikiem CLONE_NEWNS, ktory powoduje, ze przestrzen nazw montowan wywolujacego uzyskuje prywatna kopie przestrzeni nazw, ktora wczesniej dzielila z innymi procesami, dzieki czemu przyszle zamontowania i odmontowania dokonane przez wywolujacego sa niewidoczne dla innych procesow (z wyjatkiem procesow potomnych, ktore wywolujacy nastepnie utworzy) i na odwrot. Wiecej informacji o przestrzeni nazw montowan znajduje sie w podreczniku mount_namespaces(7). Relacje rodzicielskie pomiedzy montowaniami Kazde montowanie ma montowanie macierzyste. Cala relacja rodzicielska wszystkich montowan definiuje pojedyncza hierarchie katalogow widoczna przez proces w przestrzeni nazw montowan. Montowanie macierzyste nowego montowania jest definiowane przy jego utworzeniu. W typowym przypadku, montowaniem macierzystym nowego montowania jest to, zawierajace system plikow z katalogiem lub plikiem, do ktorego dolaczane jest nowe montowanie. W przypadku, gdy nowe montowanie jest ulozone na istniejacym montowaniu, montowaniem macierzystym nowego montowania jest poprzednie montowanie ulozone w tym polozeniu. Relacje rodzicielskie pomiedzy montowaniami mozna sprawdzic za pomoca pliku /proc/pid/mountinfo (zob. nizej). /proc/pid/mounts i /proc/pid/mountinfo Typowo linuksowy plik /proc/pid/mounts ujawnia liste montowan w przestrzeni nazw montowan procesu o danym pid. Plik /proc/pid/mountinfo ujawnia nawet wiecej informacji o montowaniach, w tym o typie propagacji oraz informacje o identyfikatorze montowania, ktore umozliwiaja odkrycie relacji rodzicielskich miedzy montowaniami. Wiecej informacji o tym pliku znajduje sie w podrecznikach proc(5) oraz mount_namespaces(7). ZOBACZ TAKZE mountpoint(1), chroot(2), FS_IOC_SETFLAGS(2const), mount_setattr(2), pivot_root(2), umount(2), mount_namespaces(7), path_resolution(7), findmnt(8), lsblk(8), mount(8), umount(8) TLUMACZENIE Autorami polskiego tlumaczenia niniejszej strony podrecznika sa: Michal Kulach Niniejsze tlumaczenie jest wolna dokumentacja. Blizsze informacje o warunkach licencji mozna uzyskac zapoznajac sie z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje sie ZADNEJ ODPOWIEDZIALNOSCI. Bledy w tlumaczeniu strony podrecznika prosimy zglaszac na adres listy dyskusyjnej . Linux man-pages 6.9.1 13 czerwca 2024 r. mount(2)