Próbuję podnieść maksymalną wartość deskryptora otwartego pliku dla wszystkich użytkowników na komputerze z systemem Ubuntu.
To pytanie jest poniekąd kontynuacją tego pytania.
poza tym, że dodałem wymagane wpisy „root” w limit.conf
Oto wpisy
* soft nofile 100000
* hard nofile 100000
root soft nofile 100000
root hard nofile 100000
Linie związane z pam_limits.so
zostały skomentowane we wszystkich odpowiednich plikach w /etc/pam.d/ i fs.file-max
zostały poprawnie ustawione w /etc/sysctl.conf
Jednak nadal widzę
abc@machine-2:/etc/pam.d$ ulimit -n
1024
po ponownym uruchomieniu.
Co może być problemem?
Moją domyślną powłoką jest / bin / sh i nie mogę użyć chsh do zmiany mojej domyślnej powłoki, ponieważ mój użytkownik na komputerze jest uwierzytelniany za pomocą jakiegoś rozproszonego schematu uwierzytelniania.
Odpowiedzi:
Miałem podobny problem, ale tylko przy logowaniu SSH. Lokalne dane logowania (przez konsolę) były zgodne z
/etc/security/limits.conf
.Jak się okazało, po ustawieniu:
w
/etc/ssh/sshd_config
pliku, następnie sshd prosi nieuprzywilejowane dziecko, aby skonfigurować środowisko env na koncie. Ponieważ to dziecko jest nieuprzywilejowane, to ustawienie pam_limits.so ustawiania górnych limitów nie miało wpływu.Jak tylko ustawię
w
/etc/ssh/sshd_config
i odbił usługi SSH, to plik limits.conf były przestrzegane z logowania SSH.źródło
UsePAM yes
. (+1 za skierowanie mnie do sshd-config)Podejrzewam, że ulimit jest stosowany przez / etc / profile lub ~ / .bashrc. Fakt, że twój system ma skomplikowaną pamięć, potwierdziłbym, że coś nie idzie nie tak.
Potwierdziłbym również, że nie ma błędnego pliku w /etc/security/limits.d/, który jest analizowany, jak wspomniano w pam_limits (8).
Dodałbym parametr debugowania do wymaganej linii pam_limits.conf, a następnie oglądam /var/log/auth.log podczas logowania.
Jeśli twój miękki limit wynosi 1024, jaki jest twój twardy limit?
su powinien dać ci świeże, nowe logowanie do su za pomocą argumentu -l.
su -l -s / bin / bash
Powodzenia.
źródło
ulimit -Hn
Na serwerze Redhat zalogowany jako root
/etc/security/limits.conf
Komenda strace zalogowana jako root
z innym otwartym loglimitem powłoki
W ten sposób wiem, że załadowano pam_limits i odczytano limit.conf, jeśli twoje pam_limits zostały załadowane, ale nadal widzisz inne wartości za pomocą ulimit -n, sprawdź profil powłoki, jak powiedział @etherfish
źródło
Miałem taki problem, oto co zrobiłem.
Polecenie strace wyświetli wszystkie interakcje, które proces wykonuje z bibliotekami zewnętrznymi, dzięki czemu możemy sprawdzić, czy nasza konfiguracja jest załadowana, czy nie.
Tak, jak sugerowałem powyżej:
W moim wydaniu dziennik śledzenia (strace -o log su - nazwa użytkownika) nie zawiera żadnego wystąpienia tekstu limitów, więc plik limit.conf NIE został załadowany.
Najpierw upewniam się, że pam_limits.so szuka /etc/security/limits.conf
Dlatego upewniam się, że moduł pam_limits.so jest załadowany podczas operacji uwierzytelniania do plików znajdujących się w /etc/pam.d ... na przykład w /etc/pam.d/su, dodałem:
Teraz mogę zrobić „su” dla mojego użytkownika i limity zostaną załadowane. Możesz powtórzyć krok śledzenia, aby się upewnić.
Mój linux to LFS, więc moja wina jest brakiem pam_limits.so w plikach /etc/pam.d. W innych dystrybucjach nie uważam tego za dokładnie ten problem.
Ale mam nadzieję, że to pomaga.
źródło
W moim przypadku (Centos 6.10) strace pokazał, że po ustawieniu limitu z /etc/security/limits.conf później w procesie logowania został zresetowany z /etc/security/limits.d/90-nproc.conf dla wszystkich nie Użytkownicy root:
źródło