Tipos de permissão de acesso
Temos 3 tipos básicos de permissão que são aplicáveis para o dono, o grupo e outros. São elas, permissão de leitura, escrita e execução. Cada uma dessas permissões é representada por 3 bits cada. Temos a representação de um bit para leitura, um bit para escrita e um bit para execução.
Tabela de comparativa de permissões em arquivos e diretórios.
É importante deixar bem claro que a criação e a remoção de um arquivo/diretório depende exclusivamente da permissão de escrita que foi setada no diretório "PAI", pois o mapeamento de nome para o espaço de dados é armazenado nele.
Permissões de acesso especiais ou bits especiais
Além das permissões básicas ainda existem três permissões especiais que modificam o comportamento de arquivos e diretórios. São elas: setuid, setgid e sticky bit.
Detalharemos cada um deles a seguir.
Setuid
Esse bit especial é representado pela letra "s" no conjunto de bits destinados ao proprietário do arquivo (- --s --- ---). Tem como função fazer o ajuste das permissões de usuário durante a execução de um programa para o proprietário do arquivo. Isso significa que no momento em que o programa é executado, ele será executado como se o proprietário do arquivo o estivesse executando e não a o usuário que o executou.
A posição em que a letra "s" é a mesma posição do bit básico de execução (x). Você deve estar se perguntando, como saberei se o bit de execução esta ativado? É bem simples, quando tivermos a letra "s" minúscula, significa que teremos ativado além do setuid o bit de execução, mas se "S" for maiúsculo significa que apenas teremos setuid ativado.
Devemos ter muito cuidado ao ligarmos o Setuid em arquivos (scripts) onde o proprietário é o root, porque isso pode trazer problemas sérios de segurança, já que durante da execução o script ele executado como se o "superuser" o fizesse.
Quando nos referimos a diretórios o setuid não tem nenhuma funcionalidade.
Em formato octal, é representado por: 4000
Setgid
Esse bit especial tem a mesma funcionalidade do setuid no que se refere a arquivos, sua representação também é um "s" (- --- --s ---), quando trabalha em conjunto com o bit de execução. Da mesma forma que o setuid, ele é representação por um "S" maiúsculo quando o bit de execução não esta ativado.
Ao ativarmos o setgid em diretórios, ele tem uma funcionalidade bem interessante. Todos os arquivos ou diretórios criados dentro dele, passam a ignorar o grupo padrão do usuário e pertencer ao mesmo grupo do diretório "pai".
Em formato octal, é representado por: 2000
Sticky bit
Sua funcionalidade para arquivos era salvar uma imagem do programa na swap, fazendo com que ele fosse carregado com mais velocidade. Hoje em dia ela tornou-se obsoleta e os sistemas atuais a ignoram.
Quando ativado em um diretório, faz com que só o proprietário do arquivo ou diretório consiga os remover ou editar.
Sua representação e feita através do caractere "t" ( - --- --- --t , bit de execução esta ativado) e "T" ( - --- --- --T , bit de execução não ativado).
Um bom exemplo da utilização desse bit é o /tmp, esse diretório é utilizado por programas/usuários para criar arquivos e diretórios temporários.
Em formato octal, é representado por: 1000
Tabela demonstrativa bits especiais:
Umask
São as permissões iniciais que um arquivo/diretório. Isto significa que a "umask" é responsável pelas permissões no momento da criação do arquivo ou diretório. Ao digitarmos "umask" sem acrescentarmos nenhum parâmetro, teremos como resultado do valor atual dela.
O comportamento na criação de arquivos texto e binários é diferente. Conforme demonstrado na tabela a seguir
O valor padrão da umask é 022 na maioria das distribuições que estão atualmente no mercado. Ao se modificar a umask de um usuário temos que ter muito cuidado, pois podemos causar problemas de acesso de arquivos/diretórios.