3.3. Permissões

FreeBSD, como decendente direto do UNIX® BSD, se baseia em inúmeros conceitos chaves do UNIX. O primeiro e mais citado, é que o FreeBSD é um sistema operacional multi-usuário. O sistema pode gerenciar inúmeros usuários, todos trabalhando simultaneamente em tarefas completamente distintas. O sistema é responsável pelo compartilhamento, e gerencialmente apropriado de pedidos de acesso aos dispositivos de controle de equipamentos, periféricos, de memória, e tempo de processamento, de forma justa entre os usuários.

Pelo fato do sistema poder suportar múltiplos usuários, tudo que o sistema gerencia é composto de um conjunto de permissões que governam quem pode ler, escrever, e executar recursos. Estas permissões são armazenadas como três octetos divididos em três partes, uma para o dono do arquivo, uma para o grupo à que o arquivo pertence, e uma para todos os outros usuários. Sua representação numérica funcionam assim:

Valor Permissões Listagem de diretório
0 Sem leitura, sem escrita, sem execussão ---
1 Sem leitura, sem escrita, com execussão --x
2 Sem leitura, com escrita, sem execussão -w-
3 Sem leitura, com escrita, com execussão -wx
4 Com leitura, sem escrita, sem execussão r--
5 Com leitura, sem escrita, com execussão r-x
6 Com leitura, com escrita, sem execussão rw-
7 Com leitura, com escrita, com execussão rwx

A opção -l pode ser usada junto ao ls(1) para visualizar listagem detalhada do diretório incluindo uma coluna com informações sobre as permissões de cada arquivo, para o dono, grupo, e outros. Por exemplo, a saída do comando ls -l em um diretório qualquer, mostrará:

% ls -l
total 530
-rw-r--r--  1 root wheel     512 Sep 5 12:31 myfile
-rw-r--r--  1 root wheel     512 Sep 5 12:31 otherfile
-rw-r--r--  1 root wheel    7680 Sep 5 12:31 email.txt
...

Aqui está a forma como a primeira coluna do ls -l é dividida:

-rw-r--r--

O primeiro caracter (o mais à esquerda) indica que se este é um arquivo normal, se é um diretório, um dispositivo especial, um socket ou qualquer outro pseudo-dispositivo especial. Nesse caso, o - indica que trata-se de um arquivo regular. Os próximos três caracteres, rw- neste exemplo, indicam as permissões para o dono do arquivo. Os próximos três caracteres, r--, indicam as permissões para o grupo ao qual o arquivo pertence. Os três caracteres finais, r--, indicam as permissoes para o resto do mundo. Um hífen indica que a permissão está desligada. No caso deste arquivo, o dono pode ler e escrever neste arquivo, o grupo pode ler o arquivo e o resto do mundo pode também apenas ler o arquivo. De acordo com a tabela acima, as permissões para o arquivo seriam 644, onde cada dígito representa as três partes das permissões do arquivo.

Isso é muito bonito e legal, mas como o sistema controla as permissões nos dispositivos? FreeBSD na verdade trata a maioria dos dispositivos de hardware como arquivos onde os programas podem ler, abrir, e escrever dados, como se fosse qualquer outro arquivo. Estes arquivos de dispositivos são armazenados no diretório /dev.

Diretórios também são tratados como arquivos comuns. Eles tem permissões de leitura, escrita e execussão. O bit de execussão em um diretório tem uma sutíl diferença quando comparado a um arquivo. Quando um diretório é definido como executável, significa que ele pode ser explorado, ou seja, que é possível entrar neste diretório (``cd''). Também significa que dentro do diretório, pode-se acessar arquivos cujos nomes são conhecidos (de acordo com as permissões dos próprios arquivos, é claro).

Em particular, para realizar a listagem de um diretório, é necessário ter permissões de leitura no mesmo, enquanto para apagar um arquivo cujo nome já é conhecido, é necessário ter permissões de escrita e execussão no diretório onde está o arquivo.

Existem outros bits de permissões, mas eles são utilizados em circustâncias especiais como binários como setuid e diretórios com opção sticky. Se você deseja obter mais informações sobre as permissões de arquivo e como defini-las, dê uma olhada na página de manual do chmod(1).

3.3.1. Permissões simbólicas

Contribução deTom Rhodes.

Permissões simbólicas, as vezes se referem à expressões de permissões, ou o uso de caracteres em substituição aos valores octais que atribuem permissões aos arquivos e diretórios. Expressões simbólicas usam a sintaxe (quem) (ação) (permissões), onde os seguintes valores estão disponíveis:

Opção Letra Representação
(quem) u Usuário
(quem) g Grupo dono
(quem) o Outros
(quem) a Todos (``o mundo'')
(ação) + Adicionar permissões
(ação) - Remover permissões
(ação) = Definir permissões explicitamente
(permissões) r Leitura
(permissões) w Escrita
(permissões) x Execussão
(permissões) t Bit de sticky
(permissões) s Define UID ou GID

Estes valores são usados com o comando chmod(1) exatamente como da forma anterior, mas sem letras. Por exemplo, você pode usar o seguinte comando para impedir que outros usuários deixem de acessar determinado ARQUIVO:

% chmod go= ARQUIVO

Pode-se fazer uso de uma lista separado por vírgula, quando se desejar que mais de uma modificação seja realizada no arquivo. Por exemplo, o comando à seguir remove as permissões de escrita para o grupo e ``todo o mundo'', no ARQUIVO, e então adiciona permissões de execussão à todos:

% chmod go-w,a+x FILE

Este, e outros documentos, podem ser obtidos em ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

Para perguntas sobre FreeBSD, leia a documentação antes de contatar <questions@FreeBSD.org>.
Para perguntas sobre esta documentação, envie e-mail para <doc@FreeBSD.org>.