# O &kppp; e recomendações de segurança

Esta seção é principalmente para superusuários (`root`), pessoas com grande necessidade de segurança, ou simplesmente pessoas interessadas tecnicamente. Não é necessário ler isto se você somente usa o &Linux; em sua casa para uso pessoal, apesar de sempre ser bom aprender algumas coisinhas a mais sobre o seu sistema.

## Restringindo o acesso ao &kppp;

Um administrador de sistema deve querer restringir o acesso como quem tem permissão de usar o &kppp;. Existem duas maneiras de realizar isto.

### Restringindo o acesso com permissões de grupo

Crie um novo grupo (você pode desejar nomeá-lo como `discagem` ou similar), e coloque cada usuário que deve ter permissão para usar o &kppp; neste grupo. Então digite em um terminal:

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

Isto considera que o &kde; foi instalado em `/opt/kde/` e que seu novo grupo foi nomeado `discagem`.

### Restringindo o acesso através do &kppp;

Antes de fazer qualquer coisa, o &kppp; verifica se existe um arquivo nomeado `/etc/kppp.allow`. Se este arquivo existir, somente os usuários nomeados neste arquivo terão permissão de discar. Este arquivo deve ser legível para todos (mas é claro NÃO gravável). Somente nomes de login são reconhecidos, logo você não pode usar UIDs neste arquivo. Aqui está um exemplo simples:

    # /etc/kppp.allow
    # linhas de comentário como esta são ignoradas
    # bem como linhas vazias

    frederico
    carlos
    diana

No exemplo acima, somente os usuários `frederico`, `carlos` e `diana` tem permissão de discagem, bem como cada usuário com uma UID de 0 (assim você não precisa listar o root explicitamente neste arquivo).

## O &kppp; possui o bit SUID ligado? Qual a implicação para segurança?

É virtualmente impossível escrever um discador sem o bit SUID que seja tanto seguro como fácil de usar para usuários inexperientes. O &kppp; lida com os riscos de segurança com a estratégia a seguir.

- Imediatamente após o programa iniciar, o &kppp; se bifurca.

- O processo mestre, que manipula todas as operações da GUI (como a interação com o usuário), desliga o estado do SUID após a bifurcação, e se executa com privilégios normais do usuário.

- O processo escravo mantém estes privilégios, e é responsável por todas as ações que precisam de privilégios de `root`. Para manter esta parte segura, nenhuma chamada de biblioteca do &kde; ou &Qt; são usadas aqui, apenas chamadas de bibliotecas simples. O código-fonte para este processo é curto (cerca de 500 linhas) e bem documentado, assim é fácil para você verificar por falhas de segurança.

- Os processos mestre e escravo comunicam-se com o padrão &UNIX; IPC.

Agradecimentos especiais para Harri Porten por escrever este excelente pedaço de código. Pensava-se que seria impossível, mas ele dominou-o em uma semana.