Conteúdos da cadeira

Controlo de acessos e fluxos

Matriz de acessos, papéis e permissões Unix resolvidas, incluindo um caso que nega por defeito.

Markdown

Perguntar sobre esta página

ChatGPTClaudePerplexityGeminiCopiar e abrir

Envia o link e pede à IA para ler a página. No Gemini, cola a pergunta copiada.

Ver pergunta para copiar
Nesta página

A autenticação responde a “quem és?”, provando a identidade. O controlo de acessos responde à pergunta seguinte: “já sei quem és, e agora, o que podes fazer?”. Esta página organiza essa resposta em modelos e termina a decidir acessos concretos numa tabela de permissões Unix.

Modelos: matriz, papéis e níveis

O modelo mental base é a matriz de acessos: linhas de sujeitos (utilizadores, processos), colunas de objetos (ficheiros, tabelas, impressoras) e em cada célula as operações permitidas (ler, escrever, executar). Tudo o resto é uma forma compacta de representar esta matriz.

Duas representações dominam. As ACL (access control lists) guardam, junto de cada objeto, quem pode o quê: é a coluna da matriz, e é o que as permissões Unix fazem. As capacidades (capabilities) guardam, junto de cada sujeito, os bilhetes de acesso que possui: é a linha da matriz, como um descritor de ficheiro aberto que já não volta a perguntar.

Sobre quem decide, há três políticas. No controlo discricionário (DAC), o dono do objeto decide quem acede, como nas permissões de ficheiros. No controlo obrigatório (MAC), o sistema impõe níveis, como “confidencial” contra “público”, e nem o dono pode baixar a classificação. No controlo por papéis (RBAC), as permissões vão para papéis como “vendas” ou “contabilidade” e os utilizadores recebem papéis: quando a Ana muda de equipa, troca-se-lhe um papel em vez de dezenas de permissões.

Para fluxos de dados, a regra sensata é simples: a informação só flui para níveis iguais ou superiores de confiança, nunca para baixo sem desinfeção. Um relatório confidencial pode alimentar um resumo público depois de anonimizado; o caminho inverso, dados públicos a contaminar decisões confidenciais sem verificação, é uma fuga ou uma injeção à espera de acontecer.

Mecanismos no sistema operativo

No Unix, cada ficheiro tem dono, grupo e três trios de permissões: leitura (r), escrita (w) e execução (x), para dono, grupo e outros. Nas pastas, o x significa atravessar: sem x na pasta, nem chegas aos ficheiros de dentro, sejam quais forem as permissões deles. É a mediação completa em ação.

O bit setuid é a exceção controlada: um programa com setuid corre com as permissões do dono do ficheiro, não de quem o executa. O comando passwd precisa de escrever no ficheiro de senhas, por isso corre momentaneamente como root. É privilégio mínimo cirúrgico, um programa em vez do utilizador, mas cada programa setuid é uma aposta: um erro nele é um erro com poderes de root.

Exemplo: tabela de permissões resolvida

O ficheiro /srv/loja/precos.csv tem dono loja com rw-, grupo vendas com r-- e outros sem nada. A pasta /srv/loja tem rwx para root, r-x para vendas e nada para outros. Decide quatro pedidos:

PedidoDecisãoPorquê
A Ana, do grupo vendas, quer ler os preçosSimAtravessa a pasta com o x do grupo e lê com o r do grupo
O Bruno, do grupo vendas, quer corrigir um preçoNãoO grupo só tem r no ficheiro. O que não foi permitido é proibido: nega por defeito
O Carlos, de fora das vendas, quer ler os preçosNãoA pasta fecha-lhe a passagem antes sequer de olhar para o ficheiro. Cada acesso é verificado, sem atalhos
O script de atualização, com setuid do dono loja, quer escreverSimCorre com as permissões do dono, que tem w. Só este programa ganha esse poder, não o utilizador que o corre

Repara no caso do Bruno: é o negar por defeito da página anterior a trabalhar. E repara no Carlos: a proteção da pasta torna irrelevante a permissão do ficheiro, o que mostra por que razão camadas independentes contam. Se um dia o grupo vendas precisar de escrever, a resposta certa é um papel novo ou uma permissão explícita e registada, nunca abrir a pasta a toda a gente.

Ver o ficheiro no GitHub

À tua maneira

Escolhe como preferes ler.

Aparência
Ajustar cores e largura
Cor de destaque do tema FEUP
Tipo de letra

Álgebra, lógica e uma ideia de cada vez.

As tuas escolhas ficam guardadas neste navegador.

Pesquisar

Escreve para pesquisar em todo o site.

para escolher · Enter para abrir · Esc para fechar

Atalhos de teclado

Clica numa tecla para a mudar. Esc cancela. Backspace desativa.

PesquisarCtrl / Cmd K

Os atalhos não interferem enquanto escreves. Tab e Enter funcionam sempre.