czy zmiany w /etc/security/limits.conf wymagają ponownego uruchomienia?


144

Czy zmiany /etc/security/limits.confwymagają ponownego uruchomienia przed wejściem w życie?

Na przykład, jeśli mam skrypt, który ustawia następujące ograniczenia /etc/security/limits.conf, czy wymaga to ponownego uruchomienia systemu, zanim ograniczenia te zaczną obowiązywać?

* hard nofile 94000
* soft nofile 94000
* hard nproc 64000
* soft nproc 64000

2
wylogowanie powinno wystarczyć
— UVV

Edytuj plik /etc/security/limits.d/90-nproc.conf i zrestartuj system

Odpowiedzi:


108

Nie, ale powinieneś zamknąć wszystkie aktywne okna sesji. Wciąż pamiętają stare wartości. Innymi słowy, wyloguj się i zaloguj ponownie. Każda zdalna nowa sesja lub lokalna bezpieczna powłoka wpływają na zmiany limitów .


17
Co się stanie, jeśli chcę ustawić limity dla użytkownika, który nie ma loginu, na przykład, jeśli chcę ustawić nofilelimit 94000dla mongodbużytkownika? Jak mogłem to zrobić bez restartu? Czy wystarczy zrestartować mongodbusługę?
— Alexej Magura

2
@AlexejMagura Za pomocą polecenia możesz modyfikować ograniczenia uruchomionych procesów prlimit.
— Bratchley,

7
@Gilles, dziękuję za dokładność, zredagowałem swoją odpowiedź, aby uniknąć dwuznaczności. Jednak uruchomienie nowej usługi przy użyciu sudo service mongodb restartwystarcza, aby usługa działała z nowymi wartościami granicznymi.
— Slyx,

6
jeśli używasz Ubuntu, a mongodb jest uruchamiany przez upstart, to zmiana tych limitów nie wpłynie na mongodb. Ponieważ upstartnie czyta / etc / security config bugs.launchpad.net/ubuntu/+source/upstart/+bug/938669 , musisz ustawić sekcjęlimit w pliku konfiguracyjnym upstart.
— HVNSweeting

5
To kolejny problem. upstartz założenia ignoruje ustawione limity /etc/security/limits.conf.
— Slyx,

35

Zastosuj zmiany bezpośrednio do uruchomionego procesu, jeśli masz zainstalowany program prlimit (dostarczany z plikiem util-linux-2.21)

prlimit --pid <pid> --<limit>=<soft>:<hard>

na przykład

prlimit --pid 12345 --nofile=1024:2048

Zobacz tutaj


29

Aby tymczasowo ustawić limit otwartych plików dla użytkownika, na którym jesteś aktualnie zalogowany (np. „Root”): Możesz także użyć ulimitpolecenia, aby zmienić wartości w bieżącej powłoce. Jednak twarde limity można zmienić tylko w dół, chyba że jesteś rootem.

Przykład:

# ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 62449
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 1024
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

Aby zmienić nofiledo 94000 można zrobić:

ulimit -n 94000

15

Limity są dziedziczone z procesu nadrzędnego do jego procesów podrzędnych. Procesy działające jako root mogą dowolnie zmieniać limity; inne procesy nie mogą zwiększyć twardych limitów. Zatem twarde limity ustawione przez proces logowania wpływają na wszystkie procesy w sesji.

Jeśli zmienisz /etc/security/limits.conf, wpłynie to na wszystkie nowe sesje i procesy w tych nowych sesjach. Nie wpłynie to na procesy, które są już uruchomione, ani procesy uruchomione przez procesy, które już działają.

Jeśli więc musisz zwiększyć pewne limity, musisz się wylogować i zalogować ponownie lub rozpocząć kolejną sesję (np. Z ssh localhostlub na innej konsoli).


4

Cytując odpowiedź @ Tombart

Limity te zostaną zastosowane po ponownym uruchomieniu.

Jeśli chcesz zastosować zmiany bez ponownego uruchamiania, zmodyfikuj /etc/pam.d/common-session, dodając ten wiersz na końcu pliku:

session required pam_limits.so
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.