# &kppp; in vprašanja varnosti

Ta razdelek je v glavnem za superuporabnike (`root`), ljudi s pomembnimi varnostnimi vprašanji ali za preprosto tehnično zainteresirane ljudi. Ni vam potrebno prebrati tega, če uporabljate &Linux; samo doma za vaše potrebe (čeprav se lahko naučite kaj novega, če to preberete).

## Omejevanje dostopa do &kppp;

Sistemski administrator bo mogoče želel omejiti dostop, komu je dovoljeno uporabljati &kppp;. Za to obstajata dva načina:

### Omejevanje dostopa z dovoljenji za skupine

Ustvarite novo skupino (mogoče jo boste hoteli poimenovati `dialout` ali podobno), dodajte vse uporabnike, ki naj bi imeli dovoljenje za uporabo &kppp;-ja v to skupino in vtipkajte:

    # chown root.dialout /opt/kde/bin/kppp
    # chmod 4750 /opt/kde/bin/kppp

Tukaj se privzame, da je bil &kde; nameščen v `/usr/local/kde`in vaša nova skupina se imenuje `dialout`.

### Omejevanje dostopa na &kppp;-jev način

Preden se karkoli naredi, &kppp; preveri, če obstaja datoteka imenovana `/etc/kppp.allow`. Če ta datoteka obstaja, bodo SAMO uporabniki imenovani v tej datoteki imeli dovoljenje za klicanje. Ta datoteka mora biti berljiva vsakemu uporabniku (seveda NE zapisljiva). Prepoznana so samo imena s katerimi se uporabniki prijavijo, zato ne morete uporabiti UID-jev v tej datoteki. Tukaj je kratek primer:

    # /etc/kppp.allow
    # comment lines like this are ignored
    # as well as empty lines

    fred
    karl
    daisy

V zgornjem primeru samo uporabniki `fred`, `karl` in `daisy` lahko kličejo, kot tudi vsak uporabnik z UID nastavljen na 0. Zato vam ni potrebno postaviti uporabnika root v to datoteko.

## &kppp; ima nastavljen SUID bit. Kaj pa varnost?

Navidezno je nemogoče napisati program za klicanje brez SUID bita, ki je istočasno varen in preprost za uporabo za neizkušene uporabnike. &kppp; odgovarja na varnostna vprašanja z naslednjo strategijo:

- Takoj ko se program zažene, se &kppp; razveji.

- Glavni proces (master process) (kateri skrbi za vse GUI stvari, uporabniško medsebojno delovanje in podobno) takoj za tem prekine SUID način in teče z navadnimi uporabniškimi privilegiji.

- Podrejeni proces (slave process) ohrani svoje privilegije in je odgovoren za akcije, ki potrebujejo privilegije `root`-a. Da ohranimo ta del varen, se tukaj ne uporabijo nobeni klici &kde; ali &Qt; knjižnic, ampak samo preprosti klici C knjižnic. Izvorna koda za ta proces je kratka (okrog 500 vrstic) in dobro dokumentirana, zato jo je lahko preveriti, če vsebuje varnostne luknje.

- Glavni in podrejeni proces komunicirata s standardnim &UNIX; IPC.

Resnično hvala Harriju Portenu, da je napisal ta odlični del kode. Jaz sem mislil, da je nemogoče - on pa jo je napisal v enem tednu.