7.7. Kasutajate Piiramine

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)).

coredumpsize

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.

cputime

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.

filesize

See on maksimaalne faili suurus, mida kasutaja omada võib. Erinevalt kettakasutuse limiitidest põhineb see limiit üksikutel failidel ja mitte kasutaja failide koguhulgal.

maxproc

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).

memorylocked

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.

memoryuse

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.

openfiles

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).

sbsize

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.

stacksize

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.

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).