Capítulo 5. Listas de controle de acesso no Linux

Sumário

5.1. Permissões de arquivo tradicionais
5.2. Vantagens das ACLs
5.3. Definições
5.4. Gerenciando ACLs
5.5. Suporte a ACL em aplicativos
5.6. Mais informações

Resumo

As ACLs (listas de controle de acesso) POSIX podem ser usadas como expansão do conceito tradicional de permissão para objetos do sistema de arquivos. Com as ACLs, as permissões podem ser definidas com mais flexibilidade do que permite o conceito de permissão tradicional.

O termo ACL POSIX sugere que este é um verdadeiro padrão POSIX (portable operating system interface). Os respectivos padrões de rascunho POSIX 1003.1e e POSIX 1003.2c foram removidos por vários motivos. Contudo, as ACLs, como encontradas em vários sistemas pertencentes à família UNIX, são baseadas nesses rascunhos, e a implementação das ACLs do sistema de arquivos, como descrita neste capítulo, também segue esses padrões. Elas podem ser vistas em http://wt.xpilot.org/publications/posix.1e/.


5.1. Permissões de arquivo tradicionais

Os fundamentos básicos das permissões de arquivo tradicionais do Linux são explicadas na Seção 3.2, “Usuários e permissões de acesso” (↑Inicialização). Mais recursos avançados são setuid, setgid e sticky bit.

5.1.1. setuid Bit

Em determinadas situações, as permissões de acesso podem ser muito restritivas. No entanto, o Linux possui configurações adicionais para permitir a mudança temporária do usuário atual e da identidade do grupo para uma ação específica. Por exemplo, o programa passwd normalmente requer permissões de root para acessar /etc/passwd. Este arquivo contém algumas informações importantes, como os diretórios pessoais de usuários e IDs de usuário e grupo. Sendo assim, um usuário normal não poderia mudar passwd, já que seria muito arriscado conceder a todos os usuários acesso direto a este arquivo. Uma possível solução para esse problema é o mecanismo setuid. O setuid (definir ID do usuário) é um atributo de arquivo especial que instrui o sistema a executar programas marcados adequadamente com um ID de usuário específico. Considere o comando passwd:

-rwsr-xr-x  1 root shadow 80036 2004-10-02 11:08 /usr/bin/passwd

Você pode ver o s que denota que setuid bit está definido para a permissão do usuário. Por meio do setuid bit, todos os usuários iniciando o comando passwd o executam como root.

5.1.2. setgid Bit

O setuid bit se aplica a usuários. Entretanto, existe também uma propriedade equivalente para grupos: o setgid bit. Um programa para o qual esse bit foi definido é executado com o ID do grupo no qual ele foi gravado, independentemente do usuário que iniciou o programa. No entanto, em um diretório com o setgid bit, todos os arquivos e diretórios criados recentemente são atribuídos ao grupo ao qual o diretório pertence. Considere o seguinte diretório de exemplo:

drwxrws--- 2 tux archive 48 Nov 19 17:12  backup

Você pode ver o s que denota que o setuid bit está definido para a permissão do usuário. O proprietário do diretório e membros do grupo archive poderão acessar este diretório. Os usuários que não são membros deste grupo são “mapeados” para o grupo respectivo. O ID de grupo efetivo de todos os arquivos gravados será archive. Por exemplo, um programa de backup que é executado com o ID de grupo archive é capaz de acessar este diretório mesmo sem privilégios de root.

5.1.3. Sticky Bit

Também existe o sticky bit. Existe uma diferença caso ele pertença a um programa executável ou a um diretório. Se ele pertencer a um programa, qualquer arquivo marcado dessa forma será carregado na memória RAM a fim de evitar a necessidade de obtê-lo no disco rígido toda vez que for usado. Esse atributo é usado raramente, pois os discos rígidos modernos são muito rápidos. Se este bit estiver designado a um diretório, ele impedirá que usuários apaguem arquivos de outros usuários. Exemplos típicos incluem os diretórios /tmp e /var/tmp:

drwxrwxrwt 2 root root 1160 2002-11-19 17:15 /tmp