quarta-feira, 6 de julho de 2011

Controle de acesso com o PolicyKit

O Policykit é uma ferramenta, em nível de aplicação, que serve para centralizar as decisões de permissão de acesso à dispositivos e aplicações controladas somente pelo administrador. Ou seja, desenvolvido para definir e manipular políticas que permitam processos sem privilégios comunicarem com processos com privilégios. O PolicyKit é especialmente para as aplicações nos ambientes de desktop, em sistemas operacionais do tipo Unix, com muitos usuários.

Atualmente possui suporte a diversas operações administrativas incluindo o NetworkManager, Udisks, PackageKit, Firewall, Serviços, Samba etc. O PolicyKit tem como objetivo proporcionar uma interface simples e centralizada para conceder aos usuários o acesso a administração de dispositivos e ferramentas controladas.

Comparando com outras soluções existentes, o PolicyKit permite um controle mais refinado. Invés de uma política de tudo ou nada, onde um usuário recebe um controle administrativo total sobre todo o sistema, somente para acessar uma ferramenta específica de administração, o PolicyKit pode permitir o acesso apenas para esta ferramenta específica. Todos os outros acessos ficam bloqueados.

Um tipo similar de controle refinado é proporcionado com PAM e sudo, permitindo o acesso a aplicações administrativas específicas, mas a necessidade de senha ainda é requerida e o acesso como superusuário, mesmo que limitado a tal aplicação, ainda é dependente.

Uma nova versão do PolicyKit, polkit-1, é a atualmente utilizada para as operações do PolicyKit. Os arquivos de configuração para estas operações estão localizadas em "/usr/share/polkit-1/". Ainda não há uma ferramenta de desktop para configurar o ambiente. Existem apenas caixas de diálogo para autenticação, quando requerida por uma aplicação ou dispositivo.

Um dos usos do PolicyKit é para permitir o acesso a dispositivos compartilhados gerenciados pelo Udisks. Isto inclui a maioria dos dispositivos de armazenamento no sistema. A configuração e o suporte do PolicyKit costuma estar pronta para o usuário nos casos de dispositivos removíveis. Mas, por exemplo, o acesso à outro disco interno, se existir, pode estar bloqueado por padrão.

Para liberar o acesso à estes dispositivos é necessária uma alteração nas opções do PolicyKit. Se o usuário possui permissão para realizar a ação, então a solicitação é aceita e a ação é executada.

Atualmente, pode-se alterar as configurações com uma edição manual dos arquivos de configuração, localizados no diretório "/usr/share/polkit-1/actions/". Para fazer as alterações é preciso primeiramente saber a ação e a autorização que será configurada. A página manual do polkit contém uma listagem das autorizações possíveis.

As autorizações podem ser "allow_any" para qualquer um, "allow_inactive" para o console inativo e "allow_active" para somente o console ativo (usuário conectado). Estas autorizações podem ser configuradas com valores específicos, os quais são:
auth_admin           Uso administrativo somente, autorização requerida sempre;
auth_admin_keep      Uso administrativo somente, mantida por curto período;
auth_self            Autorização de usuário requerida;
auth_self_keep       Autorização de usuário requerida, mantida por curto período;
yes                  Sempre permite acesso;
no                   Nunca permite acesso.

Também é necessário saber a ação do PolicyKit que será modificada e o respectivo arquivo para editar. O nome da ação é mostrado na caixa de diálogo do PolicyKit, que pede a senha quando o usuário tenta o acesso. O nome do arquivo será os primeiros segmentos do nome da ação com o sufixo "policy" anexado. Por exemplo, a ação para montar discos internos é "org.freedesktop.udisks.filesystem-mount-system-internal", assim o arquivo desta ação será "org.freedesktop.udisks.policy".

O arquivo está localizado no diretório "/usr/share/polkit-1/actions/". O caminho completo será "/usr/share/polkit-1/actions/org.freedesktop.udisks.policy".

Por padrão, o PolicyKit está configurado para requerer autorização usando a senha do administrador, antes de um usuário poder montar uma partição de um disco rígido interno. Se desejar permitir aos usuários montarem as partições, sem uma solicitação de autorização, o arquivo "org.freedesktop.udisks.policy" precisará de uma modificação para alterar o padrão "allow_active", da ação "filesystem-mount-system-internal", de "auth_admin_keep" para "yes".

Localize a identificação da ação, rotulada como:

<action id="org.freedesktop.udisks.filesystem-mount-system-internal">
  <description>Mount a system-internal device</description>

Geralmente é a segunda ação identificada no arquivo. No final da seção desta ação, existe a seguinte linha, localizada na subseção <defaults>:

<allow_active>auth_admin_keep</allow_active>

Substitua "auth_admin_keep" por "yes", ficando:

<allow_active>yes</allow_active>

Salve o arquivo. A partir deste momento, os usuários não precisarão mais digitar uma senha para montar as partições internas.

O PolicyKit é desenvolvido e mantido por David Zeuthen, da Red Hat, e hospedado pelo projeto Freedesktop.org. A distribuição Fedora foi a primeira a incluir o PolicyKit e desde então é utilizado em várias outras distros incluindo Ubuntu e OpenSUSE.

Nenhum comentário:

Postar um comentário