table of contents
proc_sys_fs(5) | File Formats Manual | proc_sys_fs(5) |
NAZWA¶
/proc/sys/fs/ - zmienne jądra odnoszące się do systemów plików
OPIS¶
- /proc/sys/fs/
- Katalog zawierający pliki i podkatalogi do zmiennych jądra związanych z systemami plików.
- /proc/sys/fs/aio-max-nr i /proc/sys/fs/aio-nr (od Linuksa 2.6.4)
- aio-nr jest sumą bieżącą liczby zdarzeń określonych przez wywołania io_setup(2), dla wszystkich aktualnie aktywnych kontekstów AIO. Jeśli aio-nr osiągnie aio-max-nr, to io_setup(2) zawiedzie z błędem EAGAIN. Zwiększenie aio-max-nr nie powoduje alokacji wstępnej ani zmiany jakichś struktur danych jądra.
- /proc/sys/fs/binfmt_misc
- Dokumentacja plików z tego katalogu znajduje się w źródłach jądra Linux w pliku Documentation/admin-guide/binfmt-misc.rst (lub Documentation/binfmt_misc.txt w starszych jądrach).
- /proc/sys/fs/dentry-state (od Linuksa 2.2)
- Plik zawiera informacje o statusie bufora katalogu (dcache). Zawiera sześć liczb: nr_dentry, nr_unused, age_limit (wiek w sekundach), want_pages (strony żądane przez system) i dwie nieużywane wartości.
- •
- nr_dentry jest liczbą przydzielonych dentries (wpisów dcache). To pole jest nieużywane w Linuksie 2.2.
- •
- nr_unused jest liczbą nieużywanych dentries.
- •
- age_limit jest wiekiem w sekundach, po którym wpisy dcache mogą być przydzielone ponownie, gdy jest zbyt mało pamięci.
- •
- want_pages jest niezerowa, gdy jądro wywołało shrink_dcache_pages(), ale dcache nie zostały jeszcze przycięte.
- /proc/sys/fs/dir-notify-enable
- Plik ten może służyć do wyłączania lub włączania interfejsu dnotify opisanego w fcntl(2) dla całego systemu. Wartość 0 w tym pliku wyłącza interfejs, a wartość 1 go włącza.
- /proc/sys/fs/dquot-max
- Zawiera maksymalną liczbę buforowanych wpisów kwot (przydziałów) dyskowych. W niektórych (2.4) systemach nie występuje. Gdy liczba wolnych zbuforowanych kwot dyskowych jest bardzo mała, a jest przerażająca liczba jednoczesnych użytkowników systemu, może istnieć potrzeba zwiększenia tego ograniczenia.
- /proc/sys/fs/dquot-nr
- Zawiera liczbę przydzielonych wpisów kwot dyskowych oraz liczbę wolnych wpisów kwot dyskowych.
- /proc/sys/fs/epoll/ (od Linuksa 2.6.28)
- Katalog zawiera plik max_user_watches, którego można użyć, aby ograniczyć ilość pamięci jądra używanej przez interfejs epoll. Więcej szczegółów można znaleźć w epoll(7).
- /proc/sys/fs/file-max
- Zawiera ogólnosystemowe ograniczenie liczby plików otwartych przez wszystkie procesy. Wywołania systemowe które zawiodą przy napotkaniu tych limitów nie powiodą się z błędem ENFILE. (Zobacz także setrlimit(2), które może służyć procesom do ustawiania ograniczenia dla procesu, RLIMIT_NOFILE, jako liczby plików, które proces może otworzyć). Gdy otrzymuje się mnóstwo komunikatów w dzienniku jądra o przekroczeniu liczby uchwytów plików (opisów otwartego pliku) (należy szukać komunikatów takich jak „VFS: file-max limit <liczba> reached”), to można spróbować zwiększyć tę wartość:
-
echo 100000 > /proc/sys/fs/file-max
- Procesy uprzywilejowane (CAP_SYS_ADMIN) mogą przesłonić limit file-max.
- /proc/sys/fs/file-nr
- Jest to plik (tylko do odczytu) zawierający trzy liczby: liczbę przydzielonych uchwytów plików (tzn. liczbę opisów otwartego pliku; zob. open(2)), liczbę wolnych uchwytów plików i maksymalną liczbę uchwytów plików (tzn. tę samą wartość co w /proc/sys/fs/file-max). Jeśli liczba przydzielonych uchwytów plików zbliża się do maksimów, należy rozważyć zwiększenie ich. Przed Linuksem 2.6 jądro dynamicznie przydzielało uchwyty, lecz nie zwalniało ich. Wolne uchwyty były przechowywane w liście do ponownego przydzielenia, wartość „wolne uchwyty plików” wskazywała na rozmiar tej listy. Duża liczba wolnych uchwytów plików wskazywała, że w przeszłości był moment dużego użycia otwartych uchwytów plików. Od Linuksa 2.6 jądro zwalnia wolne uchwyty plików, a wartość „wolne uchwyty plików” zawsze wynosi zero.
- /proc/sys/fs/inode-max (obecny jedynie do Linuksa 2.2)
- Ten plik zawiera maksymalną liczbę i-węzłów w pamięci. Wartość ta powinna być 3–4 razy większa niż wartość w file-max, gdyż stdin, stdout i gniazda sieciowe również potrzebują i-węzłów, aby można było na nich operować. Gdy systematycznie brakuje i-węzłów, istnieje potrzeba zwiększenia tej wartości.
- Od jądra Linux 2.4 nie występuje statyczny limit liczby i-węzłów, w związku z czym usunięto ten plik.
- /proc/sys/fs/inode-nr
- Zawiera dwie pierwsze wartości z inode-state.
- /proc/sys/fs/inode-state
- Plik zawiera siedem liczb: nr_inodes, nr_free_inodes, preshrink i cztery nieużywane wartości (wynoszące zawsze zero).
- nr_inodes jest liczbą przydzielonych przez system i-węzłów. nr_free_inodes jest liczbą wolnych i-węzłów.
- preshrink jest niezerowe, gdy nr_inodes > inode-max i gdy system musi przyciąć listę i-węzłów zamiast przydzielić ich więcej; od Linuksa 2.4 to pole jest wartością - atrapą (wynosi zawsze zero).
- /proc/sys/fs/inotify/ (od Linuksa 2.6.13)
- Ten katalog zawiera pliki max_queued_events, max_user_instances i max_user_watches, których można użyć, aby ograniczyć ilość pamięci jądra używanej przez interfejs inotify. Więcej szczegółów można znaleźć w inotify(7).
- /proc/sys/fs/lease-break-time
- Określa okres ulgi, przez jaki jądro zapewnia procesowi utrzymanie dzierżawy pliku (fcntl(2)), a po którym wyśle do tego procesu sygnał zawiadamiający go, że inny proces oczekuje na otwarcie pliku. Jeśli utrzymujący dzierżawę nie usunie jej lub nie ograniczy swoich praw do niej w przeciągu tego czasu, jądro wymusi zerwanie dzierżawy.
- /proc/sys/fs/leases-enable
- Ten plik może służyć do ogólnosystemowego włączania lub wyłączania dzierżaw plików (fcntl(2)). Gdy plik ten zawiera wartość 0, dzierżawy są wyłączone. Wartość niezerowa włącza dzierżawy.
- /proc/sys/fs/mount-max (od Linuksa 4.9)
- Wartość w tym pliku określa maksymalną liczbę montowań, jakie mogą istnieć w przestrzeni nazw montowań. Domyślną wartością w tym pliku jest 100 000.
- /proc/sys/fs/mqueue/ (od Linuksa 2.6.6)
- Ten katalog zawiera pliki msg_max, msgsize_max i queues_max, kontrolujące zasoby używane przez kolejki komunikatów POSIX. Szczegółowe informacje można znaleźć w mq_overview(7).
- /proc/sys/fs/nr_open (od Linuksa 2.6.25)
- Plik ten określa pułap, do którego można podnieść limit zasobów RLIMIT_NOFILE (zob. getrlimit(2)). Pułap ten jest wymuszany zarówno na nieuprzywilejowanych i uprzywilejowanych procesach. Domyślną wartością w pliku jest 1048576 (przed Linuksem 2.6.25, pułap RLIMIT_NOFILE był zakodowany na sztywno i wynosił tyle samo).
- /proc/sys/fs/overflowgid and /proc/sys/fs/overflowuid
- Te pliki umożliwiają zmianę wartości ustalonego UID-u i GID-u. Wartością domyślną jest 65534. Niektóre systemy plików wspierają jedynie 16-bitowe UID-y i GID-y, podczas gdy linuksowe UID-y i GID-y są 32-bitowe. Gdy któryś z takich systemów plików jest zamontowany z możliwością zapisu, to wszystkie UID-y i GID-y przekraczające 65535 są zastępowane podanymi tu wartościami przed zapisem na dysk.
- /proc/sys/fs/pipe-max-size (od Linuksa 2.6.35)
- Patrz pipe(7).
- /proc/sys/fs/pipe-user-pages-hard (od Linuksa 4.5)
- Patrz pipe(7).
- /proc/sys/fs/pipe-user-pages-soft (od Linuksa 4.5)
- Patrz pipe(7).
- /proc/sys/fs/protected_fifos (od Linuksa 4.19)
- Wartość w tym pliku jest/może być ustawiona na jedną z poniższych:
- 0
- Zapisywanie do FIFO jest nieograniczone.
- 1
- Nie zezwala na O_CREAT open(2) na potokach FIFO, których wywołujący nie jest właścicielem, w zapisywalnych dla wszystkich katalogach z bitem lepkości, chyba że właściciel katalogu jest też właścicielem FIFO.
- 2
- Jak przy wartości 1, lecz ograniczenie dotyczy również zapisywalnych dla grupy katalogach z bitem lepkości.
- Powyższe zabezpieczenia mają pomóc uniknąć sytuacji nieoczekiwanego zapisu do potoku FIFO kontrolowanego przez atakującego, gdy program chciał jedynie utworzyć zwykły plik.
- /proc/sys/fs/protected_hardlinks (od Linuksa 3.6)
- Gdy w pliku zapisana jest wartość 0, to w odniesieniu do tworzenia dowiązań zwykłych (twardych) nie wprowadza się żadnych ograniczeń (jest to historyczne zachowanie przed Linuksem 3.6). Gdy wartość wynosi 1, to dowiązania zwykłe mogą być tworzone do pliku docelowego jedynie wówczas, gdy spełniony jest jeden z poniższych warunków:
- •
- Proces wywołujący ma przywilej CAP_FOWNER w swojej przestrzeni nazw użytkownika, a UID pliku ma przypisanie w tej przestrzeni nazw.
- •
- UID systemu plików dotyczący procesu tworzącego dowiązanie pasują do właściciela (UID) pliku docelowego (zgodnie z opisem w podręczniku credentials(7), UID systemu plików procesu jest zwykle taki sam jak jego efektywny UID).
- •
- Wszystkie poniższe warunki zostaną spełnione:
- •
- cel jest zwykłym plikiem,
- •
- plik docelowy nie ma ustawionego bitu set-user-ID,
- •
- plik docelowy nie ma ustawionych obu z bitów set-group-ID i bitu wykonywalności dla grupy,
- •
- wywołujący ma uprawnienie do odczytu i zapisu pliku docelowego (albo dzięki uprawnieniom pliku albo ze względu na posiadane przywileje).
- Domyślną wartością w tym pliku jest 0. Ustawienie 1 rozwiąże występujące od dawna problemy z bezpieczeństwem wykorzystujące wyścig między czasem sprawdzenia a czasem użycia dowiązania zwykłego, zwykle spotykanych w katalogach dostępnych do zapisu dla wszystkich (np. /tmp). Częstym sposobem wykorzystywania tej wady jest skrzyżowanie ograniczeń w uprawnieniach przy podążaniu za danym dowiązaniem zwykłym (np. gdy proces root podąża za dowiązaniem stałym utworzonym przez innego użytkownika). W systemach bez wydzielonych partycji, rozwiązuje się w ten sposób również problem nieautoryzowanych użytkowników „przypinających” dziurawe pliki z ustawionymi bitami set-user-ID i set-group-ID wobec aktualizowanych przez administratora a także dowiązywaniu do plików specjalnych.
- /proc/sys/fs/protected_regular (od Linuksa 4.19)
- Wartość w tym pliku jest/może być ustawiona na jedną z poniższych:
- 0
- Zapis do zwykłych plików jest nieograniczony
- 1
- Nie zezwala na O_CREAT open(2) na zwykłych plikach, których wywołujący nie jest właścicielem, w zapisywalnych dla wszystkich katalogach z bitem lepkości, chyba że właściciel zwykłego pliku jest też właścicielem FIFO.
- 2
- Jak przy wartości 1, lecz ograniczenie dotyczy również zapisywalnych dla grupy katalogach z bitem lepkości.
- Intencja utworzenia powyższych zabezpieczeń jest podobna do protected_fifos, lecz w tym przypadku chodzi o uniknięcie zapisu do zwykłego pliku kontrolowanego przez atakującego, gdy program chciał go utworzyć.
- /proc/sys/fs/protected_symlinks (od Linuksa 3.6)
- Gdy w pliku zapisana jest wartość 0, to w odniesieniu do tworzenia dowiązań symbolicznych nie wprowadza się żadnych ograniczeń (jest to historyczne zachowanie przed Linuksem 3.6). Gdy wartość wynosi 1, to dowiązania symboliczne mogą być tworzone jedynie gdy spełnione są następujące warunki:
- •
- UID systemu plików dotyczący procesu podążającego za dowiązaniem pasują do właściciela (UID) dowiązania symbolicznego (zgodnie z opisem w podręczniku credentials(7), UID systemu plików procesu jest zwykle taki sam jak jego efektywny UID),
- •
- dowiązanie nie znajduje się w katalogu dostępnych dla wszystkich do zapisu z bitem lepkości lub
- •
- dowiązanie symboliczne i katalog w którym się ono znajduje mają tego samego właściciela (UID)
- Wywołanie systemowe które nie podąży za dowiązaniem symbolicznym ze względu na powyższe ograniczenia zwróci w errno błąd EACCES.
- Domyślną wartością w tym pliku jest 0. Ustawienie 1 rozwiąże występujące od dawna problemy z bezpieczeństwem wykorzystujących wyścig między czasem sprawdzenia a czasem użycia przy uzyskiwaniu dostępu do dowiązań symbolicznych.
- /proc/sys/fs/suid_dumpable (od Linuksa 2.6.13)
- Wartość w tym pliku jest przypisana do flagi „dumpable” („zrzucalny”) w sytuacjach opisanych w prctl(2). W konsekwencji, wartość w tym pliku określa, czy pliki zrzutów pamięci są tworzone dla programów mających ustawiony bit set-user-ID albo chronionych w jakiś inny sposób. Ustawienie „zrzucalności” wpływa również na własność plików w katalogu /proc/pid procesu, jak opisano wyżej.
- Można podać trzy różne wartości liczbowe:
- 0 (domyślna)
- Jest to tradycyjne zachowanie (sprzed Linuksa 2.6.13). Zrzut pamięci nie będzie tworzony dla procesu, który zmienił swoje uprawnienia (wywołując seteuid(2), setgid(2) lub podobną funkcję albo gdy program miał ustawiony bit set-user-ID lub set-group-ID) albo gdy uprawnienia nadane plikowi binarnemu programu zabraniają jego odczytywania.
- 1 („debug”)
- Jeżeli jest to możliwe, to wszystkie procesy wykonują zrzut pamięci (powody, dla których proces może mimo wszystko nie zrzucić pamięci, opisano w podręczniku core(5)). Właścicielem pliku zrzutu jest użytkownik, którego uprawnienia do systemu plików ma proces wykonujący zrzut. Nie są stosowane żadne mechanizmy bezpieczeństwa. Jest to przeznaczone tylko do celów debugowania: tryb ten jest niebezpieczny, ponieważ pozwala użytkownikom nieuprzywilejowanym na sprawdzanie zawartości pamięci procesów uprzywilejowanych.
- 2 („suidsafe”)
- Zrzut pamięci programu, dla którego w normalnej sytuacji taki zrzut nie zostałby wykonany (patrz wyżej „0”), może być odczytany tylko przez administratora (root). Pozwala to użytkownikowi usunąć plik ze zrzutem, ale nie pozwala na jego odczytanie. Z powodów bezpieczeństwa w tym trybie pliki zrzutu nie nadpisują istniejących plików. Ten tryb jest odpowiedni, gdy administrator będzie chciał debugować problemy w naturalnym środowisku.
- Dodatkowo, od Linuksa 3.6, /proc/sys/kernel/core_pattern musi być absolutną ścieżką lub poleceniem potokowym (zob. core(5)). Do dziennika jądra zapisane zostaną ostrzeżenia, jeśli core_pattern nie będzie się stosowało do tych reguł i nie utworzy się zrzut pamięci.
- Szczegóły odnośnie wpływu ustawienia „zrzucalności” procesu na sprawdzanie trybu dostępu ptrace opisano w podręczniku ptrace(2).
- /proc/sys/fs/super-max
- Plik steruje maksymalną liczbą superbloków, a więc i maksymalną liczbą systemów plików, które jądro może zamontować. Potrzeba zwiększenia wartości super-max występuje tylko wtedy, gdy chce się zamontować więcej systemów plików, niż na to pozwala aktualna wartość super-max.
- /proc/sys/fs/super-nr
- Plik zawiera liczbę obecnie zamontowanych systemów plików.
ZOBACZ TAKŻE¶
TŁUMACZENIE¶
Autorami polskiego tłumaczenia niniejszej strony podręcznika są: Przemek Borys <pborys@dione.ids.pl>, Robert Luberda <robert@debian.org> i Michał Kułach <michal.kulach@gmail.com>
Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.
Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej manpages-pl-list@lists.sourceforge.net.
2 maja 2024 r. | Linux man-pages 6.8 |