Proprietário, grupo e permissões

Proprietário, grupo e permissões#

Antes de estudar chown, chgrp e chmod, é necessário compreender como o Linux associa arquivos a usuários e grupos.

Proprietário e grupo proprietário#

Cada arquivo possui, em condições usuais, um proprietário identificado por um UID (User Identifier) e um grupo proprietário identificado por um GID (Group Identifier).

O Linux utiliza esses identificadores numéricos para verificar a propriedade e aplicar as regras tradicionais de permissões. Os nomes apresentados por ls -l são obtidos a partir dos cadastros de usuários e grupos disponíveis ao sistema.

Por exemplo:

-rw-r----- 1 ana professores [...]
|\_/\_/\_/ | \_/ \_________/ 
1 2  3  4  5  6       7

Nesse exemplo:

  • ana é o usuário proprietário (6).

  • professores é o grupo proprietário (7).

  • O proprietário tem permissão de leitura e escrita (2).

  • Os usuários pertencentes ao grupo professores têm permissão de leitura (3).

  • Os demais usuários não têm nenhuma dessas permissões sobre o arquivo.

O grupo proprietário não é necessariamente o único grupo ao qual o usuário pertence. Um usuário pode pertencer a diversos grupos, e sua associação aos grupos é considerada durante a verificação de acesso.

As três categorias de permissões#

O modelo tradicional de permissões divide os usuários em três categorias:

Símbolo

Categoria

Significado

u

User

Proprietário do arquivo

g

Group

Usuários que se enquadram no grupo proprietário

o

Others

Demais usuários

a

All

Todas as categorias: u, g e o

Cada categoria pode receber três permissões básicas:

Símbolo

Nome

Significado em arquivo regular

Significado em diretório

r

Read

Ler o conteúdo

Listar os nomes das entradas

w

Write

Modificar o conteúdo

Criar, remover ou renomear entradas, conforme as demais condições de acesso

x

Execute

Executar o arquivo como programa, se aplicável

Atravessar o diretório e acessar entradas por seus nomes

A distinção entre arquivo e diretório é fundamental. Em um diretório, x significa permissão de travessia, e não execução de um programa. A remoção de um arquivo, por exemplo, depende principalmente das permissões no diretório que contém sua entrada, e não apenas das permissões do próprio arquivo.

As permissões tradicionais também não são a única camada possível de controle de acesso: ACLs (Access Control Lists), atributos de segurança e mecanismos como SELinux podem impor restrições adicionais.