# O manual do &kdesu;

&Geert.Jansen; &Geert.Jansen.mail;
Marcus Gama

    marcus_gama@uol.com.br

Tradução
2000 &Geert.Jansen;
&FDLNotice;
2002-01-18
1.00.00

O &kdesu; é um frontend gráfico para o comando &UNIX; `su`.

KDE su senha root

## Introdução

Bem vindo ao &kdesu;! O &kdesu; é um frontend gráfico para o comando &UNIX; `su` no Ambiente de Desktop K. Ele permite-lhe executar um programa como um usuário diferente fornecendo a senha deste usuário. O &kdesu; é um programa se privilégios especiais; ele usa o `su` do sistema.

O &kdesu; possui um recurso adicional: ele pode lembrar-se da senha para você. Se você usar este recurso, você somente precisará inserir a senha uma vez para cada comando. Veja para mais informações sobre isto e uma análise de segurança.

Este programa deve ser iniciado a partir da linha de comando ou de arquivos `.desktop`. Apesar dele solicitar pela senha do root usando um diálogo &GUI;, eu o considero mais como uma linha de comando <-> colada a uma &GUI; do que um programa puramente &GUI;.

## Usando o &kdesu;

O uso do &kdesu; é fácil. A sintaxe é parecida com isto:

`kdesu` USUÁRIO -n -t -q -d -f ARQUIVO -c COMANDO ARG1 ARG2 `kdesu` -v -h -s

As opções de linha de comando são explanadas abaixo.

`-c PROGRAMA`

  Isto especifica o programa a executar como root. Ele deve ser passado em um argumento. Logo se, por exemplo, você deseja iniciar um novo gerenciador de arquivo, você deverá inserir no console: ``kdesu `-c kfm -sw```

`-f ARQUIVO`

  Esta opção permite o uso eficiente do &kdesu; em arquivos `.desktop`. Ela diz ao &kdesu; para examinar o arquivo especificado por ARQUIVO. Se este arquivo é gravável pelo usuário atual, o &kdesu; executará o comando como usuário atual. Se ele não for gravável, o comando será executado como usuário USUÁRIO (o padrão para root).

  ARQUIVO é avaliado da seguinte maneira: se ARQUIVO inicia com um `/`, ele é tomado como um nome de arquivo absoluto. Caso contrário, ele é tomado como o nome de um arquivo global de configuração do &kde;. Por exemplo: para configurar o gerenciador de tela K, kdm, você deve digitar `kdesu `-c kdmconfig -f kdmrc``

`-t`

  Habilita a saída para o terminal. Isto desabilita a manutenção da senha. Isto é largamente usado para fins de depuração; se você deseja executar um aplicativo no modo console, use o `su` padrão de preferência.

`-n`

  Não mantém a senha. Isto desabilita a caixa de verificação manter senha no diálogo de senha.

`-q`

  Seja silencioso.

`-d`

  Mostre informações de depuração.

`-v`

  Imprime informações da versão e sai.

`-h`

  Imprime alguma ajuda.

`-s`

  Para o serviço do kdesu. Veja .

## Configuração

O &kdesu; vem com um módulo de controle chamado kcmkdesu. Você pode encontrá-lo no menu K em Configurações Aplicativos su do KDE. Você pode mudar as seguintes coisas:

Modo de Eco

  Este é como os caracteres que você digita são ecoados na tela. Possíveis escolhas são: um asterisco por caracter, três asteriscos ou nenhum eco. O padrão é um asterisco por caracter.

Mantendo senhas

  Você pode instruir ao &kdesu; para se lembrar das senhas inseridas habilitando a caixa de verificação manter senha. Se ela estiver habilitada, você pode inserir um valor de espera no campo abaixo dela. Este é a quantidade de tempo, em minutos, que a senha será lembrada. O padrão é não lembrar senhas.

## Mecanismos Internos

### Autenticação X

O programa que você executa rodará com o id do usuário root e normalmente não terá permissão de acesso ao seu terminal X. O &kdesu; contorna isto adicionando um cookie de autenticação para seu terminal para um arquivo `.Xauthority` temporário. Após o comano terminar, este arquivo será removido.

Se você não usa cookies X, você estará em seu próprio. O &kdesu; detectará isso e não adicionará um cookie, mas você terá que certificar-se de que o root tem permissão de acesso ao seu terminal.

### Interface para o `su`

O &kdesu; usa o `su` do sistema para adquirir privilégios. Nesta seção, eu explanarei os detalhes de como o &kdesu; faz isso.

Por causa de algumas implementações do `su` (&ie; a do &RedHat;) não permitirem a leitura de senhas a partir do `stdin`, o &kdesu; cria um par de pty/tty e executa o `su` com seus descritores de arquivo padrão conectados ao tty.

Para executar o comando o usuário selecionado, ao contrário de um shell interativo, o &kdesu; usa o argumento `-c` com o `su`. Este argumento é entendido por todo shell que eu conheço de modo que ele deve funcionar corretamente. O `su` passa este argumento `-c` para o shell alvo do usuário, e o shell executa o programa. Comando exemplo: `su `root -c o_programa``.

Ao invés de executar o comando do usuário diretamente com o `su`, o &kdesu; executa um pequeno programa chamado kdesu_stub. Este programa (executado como usuário alvo), solicita algumas informações do &kdesu; através do canal pty/tty (o stdin e stdout do programa) e então executa o programa do usuário. A informação passada é: o terminal X, um cookie de autenticação X (se disponível), o `PATH` e o comando a executar. A razão pela qual este pequeno programa é usado é que o cookie X é uma informação privada e deste modo não pode ser passado através da linha de comando.

### Verificação da Senha

O &kdesu; verificará a senha que você inseriu e fornecerá uma mensagem de erro se ela não estiver correta. A verificação é feita executando um programa de teste: `/bin/true`. Se ele funcionar, a senha é assumida como correta.

### Mantendo a Senha

Para seu conforto, o &kdesu; implementou um recurso para manter senha. Se você está preocupado com a segurança, você deve ler este parágrafo.

Permitindo ao &kdesu; lembrar-se da senha abre uma (pequena) janela na segurança de seu sistema. Obviamente, o &kdesu; não permitirá ninguém além de seu id de usuário usar as senhas, mas, se feito com cautela, isto diminuirá o nível de segurança do root para o de um usuário normal (você). Um hacker que quebre sua conta, poderá obter acesso de root. O &kdesu; tenta evitar isto. O esquema de segurança que ele usa é, em minha opinião pelo menos, razoavelmente segura e está explanado aqui.

O &kdesu; usa um serviço, chamado kdesud. O serviço procura num soquete &UNIX; no `/tmp` por comandos. O modo do soquete é 0600 de modo que somente seu id de usuário pode conectar à ele. Se a manutenção de senha estiver habilitada, o &kdesu; executa comandos através deste serviço. Ele escreve o comando e a senha do root no soquete e o serviço executa o comando usando o `su`, como descrito anteriormente. Após isso, o comando e a senha não são jogados fora. Ao invés disso, eles são mantidos por um determinado período de tempo. Este é o valor do tempo de espera do módulo de controle. Se outra solicitação para o mesmo comando vier dentro deste período de tempo, o cliente não precisará fornecer a senha. Para impedir que hackers que possam quebrar sua conta roubem senhas do serviço (por exemplo, atacando um depurador), o serviço é instalado com o id de grupo nogroup. Isto deve evitar que todos os usuários normais (incluindo você) obtenha a senha a partir do processo kdesud. Além disso, o serviço configurar a variável de ambiente `DISPLAY` para o valor que ela tinha quando ele iniciou. A única coisa que o hacker pode fazer é executar um aplicativo em sua tela.

Um ponto fraco neste esquema é que os programas que você executa provavelmente não foram escritos com a segurança em mente (como programas setuid root). Isto significa que eles podem ter sobrecargas de buffer ou outros problemas e um hacker pode explorá-los.

O uso do recurso de manter a senha é um disputa entre segurança e conforto. Eu o encorajo a pensar no que foi dito acima e decidir por si mesmo se deseja usá-lo ou não.

## Autor

&kdesu;

Direito de cópia 2000 &Geert.Jansen;

O &kdesu; é escrito por &Geert.Jansen;. Ele foi em parte baseado no &kdesu; versão 3.0 de Pietro Iglio. Pietro e eu concordamos em manter este programa no futuro.

O autor pode ser encontrado através do email em &Geert.Jansen.mail;. Por favor, relate qualquer erro que encontrar para mim de modo que eu possa concertá-lo. Se você tiver uma sugestão, sinta-se à vontade para contatar-me.

&underFDL; &underArtisticLicense;