Começar pelo processo que falha
Num incidente fictício de batch, uma leitura funciona como administrador e falha no serviço. Antes de mudar permissões, identifica UID efetivo, grupos, caminho e operação: ler conteúdo, criar nome, remover entrada ou executar programa. Os testes desta aula isolam DAC quando o enunciado exclui ACLs, MAC, capabilities e restrições de montagem. Num sistema real, esses controlos continuam relevantes. O teste como root não demonstra acesso do serviço. Regista a identidade e o contexto observados para que outro operador consiga reproduzir a verificação sem depender da tua sessão.
Atravessar todos os componentes
Ler um ficheiro pelo caminho completo exige pesquisa nos diretórios necessários. O direito r no ficheiro não concede x nos pais. Se /srv/report não permite pesquisa ao processo, result.csv pode continuar inacessível apesar do seu modo parecer correto. Distingue também listar nomes de atravessar um diretório conhecido. Verifica cada componente e a identidade efetiva antes de aplicar uma mudança recursiva. Uma correção demasiado ampla pode abrir outros dados no mesmo ramo. O objetivo é permitir a operação aprovada no caminho certo e verificar também acessos que devem continuar recusados.
Selecionar a classe, depois avaliar direitos
As classes owner, group e other não são somadas para escolher a mais permissiva. Se o UID efetivo corresponde ao dono, avalia-se a entrada do proprietário. No exemplo 0460, o dono tem r-- e não escreve, mesmo pertencendo ao grupo com rw-. Uma mudança de proprietário pode por isso alterar acesso de forma inesperada. Com ACL nomeada, segue o algoritmo específico: a entrada correspondente pode ser limitada pela máscara. Não assumes fallback para other depois de uma entrada aplicável negar o pedido. Explica a classe selecionada ao justificar a decisão.
Intersetar ACL e máscara
Para uma utilizadora nomeada que não é proprietária, r-x intersectado com mask::rw- resulta em r--. A máscara retira x e não cria w ausente na entrada. Num diretório, isso pode permitir observar nomes em condições adequadas sem conseguir atravessar o caminho para abrir um ficheiro. Antes de aumentar a máscara, revê as outras entradas abrangidas, porque também podem ganhar direitos efetivos. Default ACL trata a criação de objetos; não corrige retroativamente todos os existentes. Confirma a ACL efetiva depois da alteração e ensaia com a identidade que precisa do acesso.
Separar herança de grupo e criação de modos
Setgid num diretório Linux pode fazer novos objetos herdarem o seu grupo. Não concede por si escrita ao grupo. Um ficheiro criado 0640 com grupo ops continua apenas legível por esse grupo. Sem default ACL, o modo pedido é limitado pela umask: 0666 & ~0027 resulta em 0640. Não é uma subtração decimal nem parte sempre de 0777. Quando existe default ACL, a regra de criação é diferente e o modo pedido continua a limitar direitos. No runbook, identifica qual mecanismo realmente controla os ficheiros criados pela aplicação.
Distinguir conteúdo, nome e inode
Remover um nome é uma operação sobre o diretório que o contém. No exercício sem sticky bit ou outras restrições, w+x nesse diretório pode permitir unlink de um ficheiro 0444. Por outro lado, dois hard links no mesmo filesystem partilham o inode: conteúdo e modo alterados através de um nome são observados pelo outro. Um hard link chamado backup não guarda uma versão anterior. Para recuperação, exige uma cópia ou mecanismo independente com consistência verificada. Nem independência do ficheiro garante, por si só, consistência durante uma escrita concorrente.
Responder ao erro efetivamente observado
Read-only file system aponta para uma condição diferente de simples falta de escrita no modo. Inspeciona a montagem efetiva e eventos do kernel ou storage antes de ampliar permissões. Uma remount automática após erros pode exigir investigação da integridade e não uma repetição cega de escrita. Mantém evidência e coordena a recuperação com os responsáveis da aplicação. Depois de corrigir a causa, verifica leitura, escrita e restrições com a identidade real. Os modelos de bits desta aula explicam decisões limitadas; não executam ACLs Linux nem validam um filesystem de produção.
Owner r-- com group rw- não dá escrita ao proprietário; 0666 com umask 0027 cria 0640 quando não existe default ACL.
Armadilhas comuns
Somar classes, confundir máscara com concessão, setgid com escrita ou hard link com versão histórica.
Tópicos relacionados: Identidades e ACLs · Recuperação de storage
A decisão de acesso depende do processo, do caminho e da operação; o nome do ficheiro não conta toda a história.
Referência: acl(5) · LFCS current five-domain outline; exact edition date unconfirmed