# Het &kdesu;-handboek

Geert
Jansen

    g.t.jansen@stud.tue.nl

Lauri
Watts

    lauri@kde.org

Nalezer
&Niels.Reedijk;
2000
Geert Jansen
&FDLNotice;
2002-01-18
1.00.00

&kdesu; is een grafische frontend voor het &UNIX; `su` commando.

KDE
su
wachtwoord
root

## Inleiding

Welkom bij &kdesu;! &kdesu; is een grafische frontend voor het UNIX `su` commando voor de K Bureaublad Omgeving. Hiermee kan u een programma als een andere gebruiker draaien door het wachtwoord voor die gebruiker in te voeren. &kdesu; doet zelf niets; het gebruikt het `su` commando van het systeem.

&kdesu; heeft één bijkomstige mogelijkheid: het kan wachtwoorden voor u onthouden. Als u deze mogelijkheid gebruikt, hoeft u het wachtwoord slechts één keer voor elk commando in te typen. Zie voor meer informatie hierover en een beveiligingsanalyse.

Dit programma moet gestart worden vanaf de commandoregel of vanuit `.desktop` bestanden. Hoewel het root-wachtwoord via een &GUI; dialoogvenster wordt gevraagd, wordt het meer als commandoregel <-> &GUI; lijm, in plaats van een puur &GUI; programma, gezien.

## &kdesu; gebruiken

Het gebruik van &kdesu; is makkelijk. De syntaxis is zo:

          kdesu
          USER
          -n
          -t
          -q
          -d
          -f FILE
          -c

    	  COMMAND
    	  ARG1
    	  ARG2

          kdesu

    	-v
    	-h
    	-s

De commandoregel opties zijn hieronder uitgelegd.

`-c PROGRAM`

  Dit specificeert het programma dat gedraaid moet worden als root. Er moet één argument in. Dus, als u, bijvoorbeeld, een nieuwe bestandsbeheerder wilt starten, kan u op de prompt het volgende invoeren: ``kdesu `-c kfm -sw```

`-f FILE`

  Deze optie zal u &kdesu; efficiënt laten gebruiken in `.desktop` bestanden. Het vertelt &kdesu; om het bestand gespecificeerd door de `FILE` te lezen. Als dit bestand schrijfbaar is door de huidige gebruiker, zal &kdesu; het commando als de huidige gebruiker uitvoeren. Als het niet schrijfbaar is, zal het commando uitgevoerd worden door de gebruiker `USER` (standaard is dat root).

  `FILE` wordt op de volgende manier bekeken: als `FILE` met een "/" begint, wordt het gezien als een bestandsnaam. Anders wordt het gezien als de naam van een globaal &kde; configuratiebestand. Bijvoorbeeld: om de K display manager te configureren, kdm, moet u het volgende commando uitvoeren: `kdesu `-c kdmconfig -f kdmrc``

`-t`

  Schakelt terminal uitvoer in. Dit schakelt het bewaren van wachtwoorden uit. Dit is vooral voor debug doeleinden; als u een console mode programma wilt draaien, gebruik dan het standaard `su` commando.

`-n`

  Sla het wachtwoord niet op. Dit schakelt de keep password checkbox in het wachtwoord dialoogvenster uit.

`-q`

  Wees stil.

`-d`

  Geef debuginformatie weer.

`-v`

  Debug informatie weergeven.

`-h`

  Print wat hulp.

`-s`

  Stop de kdesu daemon. zie .

## Configuratie

&kdesu; komt met een configuratiemodule genaamd kcmkdesu. U kan het vinden in het K menu onder Voorkeuren Programma's KDE su. U kan de volgende dingen wijzigen:

Echo Mode

  Dit is hoeveel karakters er op het scherm getoond worden in het paswoord invoerveld. Mogelijke keuzes zijn: één ster per karakter, drie sterren per karakter of geen echo. De standaardkeuze is één ster per karakter.

Wachtwoorden opslaan

  U kunt &kdesu; wachtwoorden die u invoert voor u laten onthouden. U schakelt dit in door de wachtwoorden onthouden aan te vinken. Als dit aangevinkt is, kunt u een timeout waarde in het tekstveld daaronder invoeren. Dit is de hoeveelheid tijd in minuten, dat het wachtwoord onthouden wordt. De standaardinstelling is dat er geen wachtwoorden onthouden worden.

## Onder de motorkap

### X authenticatie

Het programma dat u uitvoert zal gedraaid worden onder de root gebruikers-id en zal in het algemeen geen toegang hebben tot uw X-scherm. &kdesu; werkt hier omheen door een authenticatie cookie voor uw scherm toe te voegen aan een tijdelijk `.Xauthority` bestand. Nadat het commando is beeindigd, zal het bestand verwijderd worden.

Als u geen X-cookies gebruikt, moet u het zelf opzoeken. &kdesu; zal dit detecteren en zal geen cookie toevoegen, maar u moet er zeker voor zorgen root toegang heeft tot het scherm.

### Interface voor `su`

&kdesu; gebruikt het `su` van het systeem om de privileges te verkrijgen. In deze sectie wordt uitgelegd hoe &kdesu; dit doet.

Omdat sommige `su` implementaties (zoals die van &RedHat;) het wachtwoord niet van de `stdin` willen lezen, zal &kdesu; een pty/tty paar aanmaken en zal het `su` met zijn standaard bestandsdescriptors van daaruit oproepen.

Om een door de gebruiker geselecteerd commando uit te voeren in plaats van een interactieve shell, gebruikt &kdesu; het `-c` argument met `su`. Dit argument wordt ondersteund door elke shell die bestaat dus is het platform onafhankelijk. `su` geeft dit `-c` argument aan de shell van de doelgebruiker door, en de shell zal het programma uitvoeren. Bijvoorbeeld: `su `root -c het_programma``.

In plaats van het gebruikerscommando direct uit te voeren met `su`, draait &kdesu; een klein stub programmaatje genaamd kdesu_stub. Deze stub (draaiend als de doelgebruiker), vraagt wat informatie van &kdesu; over het pty/tty kanaal (de stdin en de stdout van de stub) en draait dan het gebruikersprogramma. De informatie die overgebracht wordt is: het X-scherm, een X-authenticatie cookie (als deze beschikbaar is), de `PATH` en het te draaien commando. De reden waarom een stub programma wordt gebruikt, is dat het cookie geheime informatie bevat en daarom niet over de commandoregel mag doorgegeven worden.

### Wachtwoordcontrole

&kdesu; zal het wachtwoord dat u ingevoerd heeft contreleren en geeft een foutmelding als het niet correct is. De controle wordt uitgevoerd door een testprogramma: `/bin/true`. Als deze succesvol is, is het wachtwoord correct.

### Wachtwoord bewaren

Voor uw gemak implementeert &kdesu; een wachtwoord bewaren functie. Als u geïnteresseerd bent in beveiliging, kunt u deze paragraaf lezen.

Als u &kdesu; wachtwoorden laat onthouden opent u een (klein) beveiligingsgat in uw systeem. Het is duidelijk dat &kdesu; niet iemand anders dan uw eigen gebruikers-id toestaat om de wachtwoorden te gebruiken, maar, als het zonder voorzichtigheid gedaan is, zal dit de beveiliging van root verlagen tot het niveau van een normale gebruiker (u). Een hacker die in uw account breekt, zal dan root-toegang krijgen. &kdesu; probeert dit te voorkomen. Het beveiligingsschema dat wordt gebruikt, is in mijn ogen vrij veilig en wordt hier uitgelegd.

&kdesu; gebruikt een daemon, genaamd kdesud. De daemon luistert naar een &UNIX; socket in `/tmp` voor commando's. De mode van de socket is 0600, zodat alleen uw gebruikers-id ermee kan verbinden. Als wachtwoorden onthouden is ingeschakeld, zal &kdesu; commando's uitvoeren door deze daemon. Het schrijft het commando en het root wachtwoord naar de socket en de daemon voert het commando uit met behulp van `su`, zoals hierboven vermeld. Hierna worden het commando en het wachtwoord niet weggegooid. Ze worden voor een bepaalde tijd bewaard. Dit is de time-out waarde in de configuratiemodule. Als een andere vraag voor hetzelfde commando in deze periode gemaakt wordt, zal de cliënt het wachtwoord niet hoeven te geven. Om hackers die in uw account gebroken hebben niet de wachtwoorden van de daemon te laten stelen (bijvoorbeeld, door middel van een debugger), is de daemon geïnstalleerd in set-group-id nogroup. Dit zal ervoor zorgen dat alle normale gebruikers (inclusief u) geen wachtwoorden uit het kdesud proces kunnen halen. De daemon zet ook de `DISPLAY` omgevingsvariabele gelijk aan de waarde die het had toen het gestart werd. Het enige dat een hacker kan doen is een programma in het huidige scherm uitvoeren.

Een zwakke plek in dit schema is dat programma's die u uitvoert waarschijnlijk niet geschreven zijn met beveiliging in gedachte (zoals setuid root programma's). Dit betekent dat ze buffer overruns of andere problemen zouden kunnen hebben waarvan een hacker gebruik kan maken.

Het gebruik van de wachtwoord bewaringsfunctie is een afweging van comfort tegen beveiliging. I raad u aan om er goed over na te denken en om zelf te besluiten of u het wel al dan niet gebruikt.

## Auteur

&kdesu;

Copyright 2000 Geert Jansen

&kdesu; is geschreven door Geert Jansen. Het is een beetje gebaseerd op Pietro Iglio's &kdesu;, versie 0.3. Pietro en ik besloten dat ik dit programma in de toekomst zal onderhouden.

De auteur kan bereikt worden via e-mail op g.t.jansen@stud.tue.nl. Rapporteer alstublieft fouten zodat ik ze kan repareren. als u een suggestie heeft, neem dan alstublieft contact met me op.

&underFDL; &underArtisticLicense;

## Installatie

### Downloaden

&install.intro.documentation;

### Compileren

&install.compile.documentation;