Problem z limitami i rozwiązanie (?)
Michal Kochanowicz
michal w michal.waw.pl
Czw, 19 Lip 2001, 21:15:44 CEST
Cześć
Mamy trochę niedorobioną obsługę limitów, przez którą można narobić
sobie problemów.
Suicide-HOWTO:
Ustawiamy mały limit procesów na usera (via limits.conf). Następnie
logujemy się, np. przez ssh jako user, limit procesów zaczyna działać.
Robimy 'su'. Limit pozostaje, ale nie obowiązuje root'a. Z tej sesji
robimy restart daemona ssh. W tym momencie limity propagują na proces
daemona ssh, a więc będą później propagować na procesy obsługujące
poszczególne sesje. I nawet jeśli później limit (w limits.conf) zostanie
zwiększony, na użytkownika będzie działał ten obowiązujący daemona ssh.
Prawdopodobnie sshd ustawia limity już po przyjęciu ID użytkownika, a
tym samym może limity jedynie zaostrzyć.
Udało mi się tak ustawić limity, że np po otworzeniu vim, już nie mogłem
otworzyć manuala. Dobrze że dało się 'su' zrobić. Proponuję dodać do
daemon() w /etc/rc.d/init.d/functions wywołanie 'ulimit -p unlimited'.
To powinno zapewnić daemonom swobodę działania, a limity dla
użytkowników i tak będą nakładane poprzez pam'a. Jeśli nie będzie
protestów to to zrobię.
Jest jeszcze druga dziwna rzecz. Otóż programy SGID zachowują się
dziwnie przy obecności limitów. Sytuacja:
- limit 20 procesów
- niecałe 20 procesów roota (18, 19).
Próba uruchomienia przez root'a manuala kończy się "can't fork". Wygląda
na to, że fakt iż program ma EGID != 0 wystarcza, aby limity zaczęły
działać na proces, ale do zliczania ilości procesów używany jest EUID,
co powoduje, że jedyny proces manuala już ma "resources temp.
unavailable". Bug czy feature?
--
--= Michal Kochanowicz==--==--==BOFH==--==--==michal w michal.waw.pl =--
--= finger me for PGP public key or visit http://michal.waw.pl/PGP =--
--==--==--==--==--==-- Vodka. Connecting people.--==--==--==--==--==--
Więcej informacji o liście dyskusyjnej pld-devel-pl