# Il Manuale di &kdesu;

## Introduzione

Benvenuti in &kdesu;! &kdesu; è un'interfaccia grafica per il comando `su` di &UNIX; per l'Ambiente Desktop KDE. Ti permette di lanciare un programma come se tu fossi un altro utente fornendo la password per quell'utente. &kdesu; è un programma senza privilegi; utilizza il comando di sistema `su`.

&kdesu; ha una funzionalità aggiuntiva: può ricordare le password per te. Se stai usando questa funzionalità, devi solo inserire la password una volta per ogni comando. Guarda sec-password-keeping per maggiori informazioni al riguardo ed un'analisi sulla sicurezza.

Questo programma è pensato per essere lanciato dalla linea di comando o dai file `.desktop`. Anche se chiede la password di `root` utilizzando una finestra di dialogo &GUI;, lo considero più come un collante linea di comando <> &GUI; che come un puro programma &GUI;.

## Usare &kdesu;

L'utilizzo di &kdesu; è semplice. La sintassi è la seguente:

    kdesu UTENTE -n -t -q -d -f FILE -c   COMANDO ARG1 ARG2

    kdesu  -v -h -s

Le opzioni della linea di comando sono spiegate sotto.

`-c `PROGRAMMA``

- Specifica il programma da lanciare come root. Deve essere passato come unico argomento. Così se, per esempio, vuoi lanciare un nuovo file manager, dovresti inserire alla riga di comando: ``kdesu `-c `kfm -sw````

`-f `FILE``

- Questa opzione permette un uso efficiente di &kdesu; nei file `.desktop`. Dice a &kdesu; di esaminare il file specificato da `FILE`. Se questo file è scrivibile dall'utente corrente, &kdesu; esegue il comando con l'utente corrente. Se non è scrivibile, il comando viene eseguito con l'utente `UTENTE` (valore predefinito impostato a root).

  `FILE` è valutato in questo modo: se `FILE` comincia con una `/`, viene interpretato come un nome di file assoluto. Altrimenti, viene preso come nome di un file di configurazione globale di &kde;. Per esempio: per configurare il K display manager, kdm, puoi invocare `kdesu `-c kdmconfig -f kdmrc``

`-t`

- Abilita l'output del terminale. Ciò disabilita la memorizzazione della password. È principalmente per scopi di debug; se vuoi lanciare un'applicazione della modalità console, usa piuttosto lo standard `su`.

`-n`

- Non memorizzare la password. Disabilita la casella ricorda password nella finestra di dialogo della password.

`-q`

- Sii silenzioso.

`-d`

- Visualizza le informazioni di debug.

`-v`

- Stampa le informazioni sulla versione ed esci.

`-h`

- Stampa un po' di aiuto.

`-s`

- Ferma il demone di kdesu. Guarda sec-password-keeping.

## Configurazione

A &kdesu; è abbinato un modulo di controllo chiamato kcmkdesu. Lo puoi trovare nel menu K sotto a Preferenze Sicurezza e Privacy Password. Potete modificare le seguenti cose:

Modalità Echo

- Come vengono rappresentati i caratteri che digitate sullo schermo. Le scelte possibili sono: un asterisco per carattere, tre asterischi per carattere o nessuna rappresentazione del tutto. L'impostazione predefinita è un asterisco per carattere.

Ricordati le password

- Puoi comandare a &kdesu; di ricordare le password che inserisci selezionando la casella ricordati le password. Se è selezionata, puoi inserire un valore di timeout nella casella di testo sotto di questa. Questo è la quantità di tempo, in minuti, per cui la password verrà ricordata. L'impostazione predefinita è di non ricordare le password.

## Funzionamento interno

### Autenticazione di X

Il programma che eseguirai girerà sotto l'id dell'utente root e non avrà generalmente l'autorità di accedere al tuo schermo di X. &kdesu; vi gira intorno aggiungendo un cookie di Autenticazione per il tuo schermo al file temporaneo `.Xauthority`. Dopo che il comando termina, questo file viene rimosso.

Se non utilizzi i cookie di X, è lasciato a te il lavoro. &kdesu; riconoscerà questa situazione e non aggiungerà un cookie ma dovrai assicurarti che l'utente root abbia il permesso di accedere al tuo schermo.

### Interfaccia a `su`

&kdesu; utilizza il comando di sistema `su` per acquisire privilegi. In questa sezione, spiegherò i dettagli di come &kdesu; fa ciò.

Dato che alcune implementazioni di `su` (ad esempio quella di &RedHat;) non vogliono leggere la password da `stdin`, &kdesu; crea una coppia pty/tty ed esegue `su` con i suoi descrittori di file standard connessi alla tty.

Per eseguire il comando che l'utente seleziona, piuttosto che in una shell interattiva, &kdesu; utilizza l'argomento `-c` con `su`. Questo argomento è compreso da ogni shell che conosco quindi dovrebbe funzionare in maniera portabile. `su` passa l'argomento `-c` alla shell dell'utente target, e la shell esegue il programma. Esempio di comando: `su `root -c `il_programma```.

Invece di eseguire il comando dell'utente direttamente con `su`, &kdesu; esegue un piccolo programma di comodo chiamato kdesu_stub. Questo programma di comodo (che gira come utente target), richiede alcune informazioni da &kdesu; attraverso il canale pty/tty (lo stdin e stdout del programma di comodo) e poi esegue il programma dell'utente. Le informazioni che vengono passate sono: il display X, un cookie di Autenticazione di X (se disponibile), il `PATH` ed il comando da lanciare. La ragione per cui è usato un programma di comodo è che il cookie di X è un'informazione privata e non può quindi essere passata sulla linea di comando.

### Verifica della Password

&kdesu; verificherà la password che immetti e restituirà un messaggio di errore se non è corretta. La verifica viene effettuata eseguendo un programma di test: `/bin/true`. Se ciò ha successo, la password è considerata corretta.

### Memorizzare la Password

Per comodità, &kdesu; implementa una funzionalità di ricorda password. Se ti interessa la sicurezza, dovresti leggere questo paragrafo.

Permettere a &kdesu; di ricordare le password apre un (piccolo) buco di sicurezza nel tuo sistema. Ovviamente, &kdesu; non permette a chiunque ma solo al tuo id utente di usare le password, ma, se fatto senza cautela, ciò abbasserebbe il livello di sicurezza di `root` a quello dell'utente normale (tu). Un hacker che irrompe nel tuo account, otterrebbe l'accesso di `root`. &kdesu; cerca di prevenire ciò. Lo schema di sicurezza che utilizza, almeno secondo me, è ragionevolmente sicuro ed è qui spiegato.

&kdesu; utilizza un demone, chiamato kdesud. Il demone sta in ascolto di comandi ad un socket &UNIX; in `/tmp`. I permessi del socket sono 0600 così che solo il tuo id utente può connettervisi. Se è attivata la memorizzazione delle password, &kdesu; esegue il comando attraverso questo demone. Scrive il comando e la password di `root` a questo socket e il demone esegue il comando utilizzando `su`, come descritto sopra. Fatto questo, il comando e la password non sono gettati via. Sono, invece, memorizzati per una quantità di tempo specificata. Questo è il valore di timeout del modulo di controllo. Se un'altra richiesta per lo stesso comando arriva entro questo periodo di tempo, il client non deve fornire nuovamente la password. Per evitare che gli hacker che irrompono nel tuo account rubino le password dal demone (per esempio, connettendo un debugger), il demone è installato con l'id di gruppo nogroup. Questo previene tutti i normali utenti (inclusi tu) dall'ottenere password dal processo kdesud. Inoltre il demone imposta la variabile di ambiente `DISPLAY` al valore che aveva quando è stato lanciato. L'unica cosa che un hacker può fare è eseguire un applicazione sul tuo display.

Un punto debole in questo schema è che i programmi che esegui, probabilmente, potrebbero non essere stati scritti con la sicurezza in mente (come i programmi `setuid` root). Questo significa che potrebbero avere dei buffer overrun o altri problemi ed un hacker potrebbe sfruttarli.

L'utilizzo della memorizzazione delle password è un compromesso tra la sicurezza e la comodità. Ti incoraggio a pensarci e a decidere tu stesso se vuoi usarlo o no.

## Autore

&kdesu;

Copyright 2000 &Geert.Jansen;

&kdesu; è scritto da &Geert.Jansen;. È in qualche modo basato su &kdesu; di Pietro Iglio, versione 0.3. Io e Pietro siamo d'accordo che io manterrò il programma nel futuro.

L'autore può essere raggiunto via email a&Geert.Jansen.mail;. Per favore, riferiscimi ogni bug che trovi così che li possa riparare. Se hai dei suggerimenti, sentiti libero di contattarmi.

&underFDL; &underArtisticLicense;