# Manual do &kdesu;

## Introdução

Bem vindo ao &kdesu;! O &kdesu; é uma interface gráfica para o comando Unix `su` para o ambiente de trabalho K. Permite-te executar um programa como um utilizador diferente fornecendo a senha desse utilizador. O &kdesu; é um programa sem privilégios, usa o `su` do sistema.

O &kdesu; tem uma função adicional: permite-te recordar as palavras-chave. Se estas a usar esta funcionalidade, necessitas apenas de introduzir a senha uma vez para cada comando. Vê sec-password-keeping para mais informações e uma análise à segurança.

Este programa pretende ser executado a partir da linha de comandos ou de ficheiros `.desktop`. Embora seja pedida a senha do `root` usando uma janela gráfica, eu considero-o como sendo mais uma linha de comando <-> gráfica em vez de um puro programa gráfico.

## Usando o &kdesu;

A utilização do &kdesu; é fácil. A sintaxe é a seguinte:

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

    	  COMMAND
    	  ARG1
    	  ARG2

          kdesu

    	-v
    	-h
    	-s

As opções da linha de comandos são explicadas em baixo:

`-c `PROGRAM``

- Isto especifica que o programa é executado como root. Tem de ser passado um argumento. Assim se, por exemplo, queres iniciar um novo gestor de ficheiros, introduzias no prompt: ``kdesu`-c `kfm -sw````

`-f `FILE``

- Esta opção permite um uso eficiente do &kdesu; em ficheiros `.desktop`. Isto diz ao &kdesu; para examinar o ficheiro especificado por `FILE`. Se este ficheiro poder ser alterado pelo utilizador corrente, o &kdesu; executará o comando como utilizador corrente. Se não puder ser alterado, o comando é executado como o utilizador `USER` (root por omissão)

  O `FILE` é avaliado da seguinte maneira: se `FILE` começar com um "/", é tomado como um nome de ficheiro absoluto. De outra maneira, é tomado como o nome de um ficheiro de configuração global do &kde;. Por exemplo: para configurar o gestor de autenticação do KDE, kdm, podes emitir um: `kdesu `-c kdmconfig -f kdmrc``

`-t`

- Permite enviar para o terminal. Isto desactiva a memorização de palavras-chave. Isto é largamente usado para efeitos de depuração; se quiseres executar uma aplicação em modo consola, usa o "`su`" padrão.

`-n`

- Não memorizar a senha. Isto desactiva a opção "Guardar a senha" na janela correspondente.

`-q`

- Silêncio.

`-d`

- Mostra informações sobre a depuração.

`-v`

- Imprime informação versão e sai.

`-h`

- Mostra alguma ajuda.

`-s`

- Para o daemon kdesu. Veja sec-password-keeping.

## Configuração

O &kdesu; vem com um módulo de controlo chamado kcmkdesu. Podes encontrá-lo no menu KDE em Configuração Aplicações KDE su. Podes mudar as seguintes coisas:

Modo de Eco

- Isto define como os caracteres que teclas são ecoados no ecrã. As escolhas possíveis são: uma estrela por letra, três estrelas ou sem eco. O valor por omissão é uma estrela por letra.

Guardar senhas

- Podes indicar ao &kdesu; para recordar as senhas que introduzes, activando a caixa de activação Guardar a senha. Se estiver activada, podes introduzir um tempo-limite no campo de texto por debaixo. Este é o tempo total, em minutos, pelo qual a senha será recordada. O valor por omissão é não guardar senhas.

## Internos

### Autenticação X

O programa que executas correrá como utilizador root e geralmente não terá autorização para aceder ao teu ecrã X. O &kdesu; contorna isto adicionando uma 'cookie' de autenticação para o teu ecrã para um ficheiro temporário `.Xauthority`. Assim que o comando é terminado, o ficheiro é removido.

Se não usas cookies X, estas por tua conta. O &kdesu; detectará isto e não adicionará uma cookie, mas deves certificar-te que é permitido ao root aceder ao teu ecrã.

### Interface para o `su`

O &kdesu; usa o comando `su` do sistema para obter privilégios. Nesta secção, explico os detalhes de como o &kdesu; faz isso.

Porque algumas das implementações do `su` (ex.: a da &RedHat;) não querem ler a senha a partir do `stdin`, o &kdesu; cria um par PTY/TTY e executa o `su` com os seus descritores de ficheiros padrão ligados ao TTY.

Para executar o comando seleccionado pelo utilizador, em vez de uma linha de comandos interactiva, o &kdesu; usa o argumento `-c` com o `su`. Este argumento é entendido por todas as linhas de comando conhecidas, por isso deve funcionar sem problemas. O `su` passa o argumento `-c` para a linha de comandos de destino do utilizador, para que esta execute o programa. Um comando de exemplo: `su`root -c `programa```.

Em vez de executar o comando do utilizador directamente com o `su`, o &kdesu; executa uma pequena porção de programa chamada kdesu_stub.Esta porção (correndo como utilizador de destino), pede alguma informação ao &kdesu; sobre o canal pty/tty (a porção stdin e stdout) e a seguir executa o programa do utilizador. A informação recebida é: o ecrã X, uma cookie de autenticação X (se disponível), o `PATH` e o comando a executar. A razão porque é usada uma porção de programa é que a cookie X contém informação privada, e por consequente não pode ser passada na linha de comandos.

### Verificação de Senhas

O &kdesu; verificará a senha que introduziste e dá uma mensagem de erro se não for correcta. A verificação é feita executando um programa de teste: /bin/true. Se obtiver sucesso, a senha é assumida como correcta.

### Guardar Senhas

Para o teu conforto, o &kdesu; implementou a função Guardar a senha. Se estás interessado em segurança, deves ler este parágrafo.

Permitir que o &kdesu; guarde senha abre um buraco (pequeno) na segurança do seu sistema. Obviamente, o KDE não permite que qualquer um use as senhas mas apenas o teu id de utilizador mas, se isto for feito sem precauções, irá diminuir o nível de segurança do `root` para um utilizador normal (como tu). Um 'hacker' que entrar na tua conta, obterá acesso de `root`. O &kdesu; tenta prevenir isto. O esquema de segurança que usa é razoavelmente seguro e é explicado aqui.

O &kdesu; usa um servidor, chamado kdesud. O servidor espera num 'socket' UNIX em `/tmp` por comandos. O modo do 'socket' é 0600 de maneira a que apenas a tua id de utilizador pode ligar-se a ele. Se a opção Guardar a senha estiver activada, o &kdesu; executa os comandos através deste servidor. Escreve o comando e a senha do `root` para o 'socket' e o servidor executa o comando usando o `su`, como descrito anteriormente. Depois disto, o comando e a senha não são deitados fora. Em vez disso, são mantidas durante um espaço de tempo. Este é o tempo limite do módulo de controlo. Se outro pedido para o mesmo comando chegar dentro deste período de tempo, o cliente não tem de fornecer a senha. Para não deixar que 'hackers' entrem na tua conta roubar senhas do servidor (por exemplo, anexando um depurador), o servidor é instalado com set-group-id nogroup. Isto deve fazer com que os utilizadores normais (incluindo tu próprio) não consigam obter senhas do processo kdesud. O servidor define ainda a variável de ambiente `DISPLAY` para o valor que tinha quando foi iniciado. A única coisa que um 'hacker' pode fazer é executar uma aplicação no teu ecrã.

Um ponto fraco neste esquema é que os programas que executas não são escritos provavelmente tendo em mente a segurança (como os programas que definem um setuid `root`). Isto significa que eles podem ter sobrecargas de 'buffers' ou outros problemas, que um 'hacker' pode explorar.

O uso da função guardar senha é um compromisso entre conforto e segurança. És encorajado a pensar sobre isto e decidir por ti, se queres usar esta função ou não.

## Autor

&kdesu;

Copyright 2000 Geert Jansen

O &kdesu; foi escrito por Geert Jansen. É de alguma maneira baseado no &kdesu; versão 0.3 de Pietro Iglio. O Pietro e eu acordamos que eu faria a manutenção deste programa no futuro.

O autor por ser contactado através do email em g.t.jansen@stud.tue.nl. Por favor relata quaisquer erros que encontrares a mim, de maneira a que eu os possa arranjar. Se tens uma sugestão, sente-te á vontade para me contactar.

&underFDL; &underArtisticLicense;

## Instalação

### Descarregando

&install.intro.documentation;

### Compilando

&install.compile.documentation;