Kui sul on kasutajaid, võib sul tekkida soov nende süsteemikasutust piirata. FreeBSD pakub mitmeid meetodeid, mille abil administraator saab piirata kasutajale eraldatavaid süsteemi ressursse. Need limiidid on jagatud kahte ossa: kettakasutus- ja muud ressursilimiidid.
Kettakasutuse limiidid piiravad kasutaja kõvakettakasutust ja võimaldavad seda kiirelt vaadata, ilma et iga kord peaks uuesti arvutama. Kettalimiitidest räägib peatükk .
Teised limiidid võimaldavad piirata protsessoriaega, mälu ja teisi ressursse, mida kasutaja võib tarbida. Need piirangud on defineeritud login-klasside abil ja neist räägime järgnevalt.
Login-klassid on defineeritud failis /etc/login.conf. Täpne semantika ei mahu selle peatüki ulatusse, kuid neid klasse kirjeldab põhjalikult man-leht login.conf(5). Piisab, kui öelda, et iga kasutaja kuulub login-klassi (vaikimisi default) ja iga klassiga on seotud hulk logimisvõimekusi. Logimisvõimekus on väärtuste paar kujul nimi=väärtus, kus nimi on üldtuntud identifikaator ja väärtus on suvaline string, mida töödeldakse vastavalt identifikaatori nimi väärtusele. Login-klasside ja logimisvõimekuste määramine on üsna lihtne ja ka seda kirjeldab login.conf(5).
Ressursilimiidid on tavalistest loginvõimekustest erinevad kahes punktis. Esiteks on igal limiidil pehme (antud hetkel aktuaalne) ja kõva limiit. Pehmet limiiti saab muuta kasutaja või rakendus, kuid see ei saa olla suurem kui kõva limiit. Kõva limiiti saab kasutaja küll lasta allapoole, kuid ta ei saa seda tõsta. Teiseks rakenduvad enamus limiite kasutajale protsessipõhiselt, siis mitte kasutajale tervikuna. Tuleb tähele panna, et need erinevused tulenevad spetsiifilisest limiitide käsitlemisest, mitte aga login-võimekuste süsteemi teostusest (st. nad ei ole tegelikult login-võimekuste erijuht).
Allpool on toodud kõige tihedamini kasutatavad ressursilimiidid (teised, koos muude login-võimetekusga on kirjeldatud man-lehel login.conf(5)).
Programmi poolt loodava core-faili suurus allub ilmselgetel põhjustel kõvaketta kasutuse limiitidele (st. filesize või kõvaketta piirangud). Sellegipoolest kasutatakse seda kõvakettakasutuse pehmema kontrollimismeetodina: kuna kasutajad ei loo core-faile ise ja tihti ka ei kustuta neid, siis võib selle seade kasutamine säästa neid ruumilimiitide otsa sattumisest, kui mõni suur programm (näiteks emacs) juhtub kokku kukkuma.
See on maksimaalne hulk protsessoriaega, mida kasutaja protsess võib tarbida. Limiidi ületajad tapab kernel.
Note: See on limiit protsessori aja kasutusele, mitte aga protsendile protsessorikasutusest, nagu seda näitavad mõned top(1) ja ps(1) väljad. Selle peatüki kirjutamise ajal pole viimatimainitule limiidi seadmine võimalik ja oleks ka üsna kasutu: kompilaator, mis on tõenäoliselt üsna normaalne protsess, võib vabalt kasutada mingi aja jooksul peaaegu 100% protsessoriajast.
See on maksimaalne faili suurus, mida kasutaja omada võib. Erinevalt kettakasutuse limiitidest põhineb see limiit üksikutel failidel ja mitte kasutaja failide koguhulgal.
See on maksimaalne korraga töötavate protsesside arv, mis
kasutajal olla võib. Siia kuuluvad nii ees- kui ka
tagaplaaniprotsessid. Ilmselgel põhjusel ei saa see arv olla suurem
kui kern.maxproc sysctl(8) väärtus.
Ühtlasi tuleb tähele panna, et selle arvu määramine liiga väikseks
võib piirata kasutaja produktiivsust: tihtipeale on kasulik
olla korraga mitmekordselt sisselogitud või käivitada käskusid
toruga ühendatult. Mõned ülesanded, nagu näiteks suure
programmi kompileerimine, võivad tekitada mitmeid protsesse
(nagu näiteks make(1), cc(1) ja teised eelprotsessorid).
See on maksimaalne mälu hulk, mille protsess võib paluda põhimälusse lukustada (näiteks vaata mlock(2)). Mõned süsteemikriitilised programmid, nagu näiteks amd(8), lukustavad ennast põhimällu, et väljasaalimise puhul mitte suurendada niigi kehvas olukorras oleva süsteemi trashimist.
See on maksimaalne mälu hulk, mida protsess ükskõik millisel ajahetkel kasutada võib. See hõlmab nii põhimälu kui ka saaleala. Tegu pole küll kõikepüüdva limiidiga mälukasutuse piiramiseks, kuid algatuseks sobib see üsna hästi.
See on maksimaalne failide hulk, mida protsess võib
korraga avatuna hoida. FreeBSD-s on failidena esitatud ka
soketid ja IPC kanalid, seega vaata, et sa ei sätiks seda
limiiti liiga madalaks. Vastavat kogu süsteemi hõlmavat
limiiti näitab kern.maxfiles sysctl(8).
See on võrgu mälukasutuse limiit, seega limiteerib ta mbuf-ide arvu, mida kasutaja saab kasutada. Algselt tekkis see vastukaaluks vanale DoS-rünnakule hulga soketite loomise teel, kuid seda saab kasutada ka üldiseks võrguliikluse piiramiseks.
See on suurus, milleni protsessi stäkk võib maksimaalselt kasvada. Sellest üksi ei piisa programmi poolt kasutatava mälu piiramiseks, järelikult tuleb seda kasutada koos teiste piirangutega.
On veel mõned asjad, mida tasub ressursilimiitide määramisel meeles pidada. Järgnevad mõned üldised vihjed, soovitused ja mitmesugused kommentaarid.
Protsessid, mis käivitatakse süsteemi alglaadimisel /etc/rc poolt, omistatakse login-klassile daemon.
Kuigi süsteemiga kaasa tulev /etc/login.conf on üsna hea allikas leidmaks mõistlikud väärtused enamikule limiitidele, tead siiski ainult sina süsteemi administraatorina, mis on sinu süsteemile sobiv. Limiidi määramine liiga kõrgeks võib võimaldada su süsteemi väärkasutamist, samas liiga madalad limiidid võivad piirata produktiivsust.
Tõenäoliselt tuleb X-aknaüsteemi (X11) kasutajatele anda rohkem ressursi kui teistele kasutajatele. X11 võtab ise palju ressursse ja julgustab ka kasutajaid rohkem programme korraga kasutama.
Pane tähele, et paljud limiidid kehtivad üksikule protsessile,
mitte kasutajale tervikuna. Näiteks väärtuse openfiles
seadmine 50 peale tähendab, et iga protsess, mille kasutaja käivitab,
võib avada kuni 50 faili. Seega kokku võib kasutaja avada
openfiles korda maxproc
faili. Sama kehtib ka mälukasutuse kohta.
Täpsema informatsiooni saamiseks ressursilimiitide, login-klasside ja võimekuste kohta üldiselt loe järgnevaid man-lehti: cap_mkdb(1), getrlimit(2), login.conf(5).