Victor3D

Capítulo 12. Controle de acesso de arquivos

Conceito de Permissões

Num certo momento, você deve ter pensado: “ - O que significa esses rwx-wx- na frente dos arquivos ?” Bom…essas são as permissões de arquivos para usuários. Tanto no Unix como no Linux, podemos (superusuário) controlar quem pode ler, alterar, apagar, gravar e executar nossos arquivos. As permissões são classificadas quanto ao nível do usuário, grupo e outros. Cada arquivo tem um tem um UID (User ID), e um GID (Group ID), que mostra quem é o dono do arquivo.

Segue o exemplo:

[root@guarani /]# ls -l
-rwxr-xr--   1   jose operador    21    Nov   08	  16:06  .profile

O arquivo .profile tem 21 bytes, o dono do arquivo é o usuário José, que pertence ao grupo operador.

As permissões são divididas da seguinte forma:

Chmod

Todo arquivo determina quais usuários têm acesso a ele e com que finalidade. Cada categoria de usuários possui um conjunto distinto de permissões de acesso ao arquivo. Cada conjunto de permissões de acesso significa presença ou ausência de permissões para: leitura (r); escrita (w); execução (x).

Cada usuário do sistema possui três conjuntos (rwx) de permissão para cada arquivo. O sistema de permissões dá ao usuário mais segurança, pois permite que ele tenha um maior controle ao acesso de seus arquivos e diretórios. Isto dá mais segurança não só ao usuário, mas a todo o sistema.

Para o arquivo acima, o dono possui permissão de leitura(r), escrita(w) e execução(x). O grupo possui permissão de leitura(r) e execução(x). Outro usuário que não o dono e não pertencente ao grupo do dono possui permissão somente de leitura(r).

Mudando Permissões

chgrp - Este comando muda o grupo dos arquivos/diretórios dados como argumento. O parâmetro group pode ser tanto um número (gid - identificador de grupo), como um nome de grupo encontrado no arquivo de grupos do sistema /etc/group. O usuário deve ser membro do grupo especificado e dono do arquivo (ou o superusuário). O formato do comando é simplesmente:

chgrp <novo grupo> <arquivo>

chown - Muda o dono dos arquivos e diretórios para um novo dono, que pode ser um nome de acesso ou a identificação de usuário (número associado ao nome do usuário). Nota: o comando chown pode tanto mudar o dono dos arquivos, bem como o próprio grupo de arquivos. Formato:

chown <id do novo usuário> <arquivo>

chmod - O comando chmod é usado para alterar as permissões associadas ao objeto. O que você realmente está fazendo é alterar o modo do arquivo. Existem duas maneiras de especificar as permissões do objeto. Você pode usar o sistema de código numérico ou o sistema de codificação alfabético. Usando o sistema alfabético, usaremos as letras u(usuário), g(grupo), o(outros) e a(all > todos). As permissões podem ser alteradas usando os sinais +(mais) e -(menos). Por exemplo, para acrescentar as permissões ler e executar ao proprietário e grupo do arquivo .profile, usaremos o comando da seguinte forma:

[root@guarani /]# ls -l
--w-w-rwx   1   jose operador    21    Nov   08	  16:06  .profile

[root@guarani /]# chmod ug+rx .profile
[root@guarani /]# ls -l
-rwxrwxrwx  1   jose operador    21    Nov   08	  16:06  .profile

Para remover as permissões ler e executar de usuário e de grupo do arquivo .profile, simplesmente iremos trocar o sinal de +(mais) pelo de -(menos):

[root@guarani /]# chmod ug-rx .profile
[root@guarani /]# ls -l
--w-w-rwx   1   jose operador    21    Nov   08	  16:06  .profile

Usando o sistema de codificação numérico, você tem sempre de informar o valor absoluto da permissão, independente das suas permissões prévias. O sistema numérico é baseado em três conjuntos de números de base dois. Existe um conjunto para cada categoria de usuário, grupo e outros. Os valores são 4(ler), 2(gravar) e 1(executar). Esses valores são acrescentados juntos para fornecer o conjunto de permissões para aquela categoria. Com o sistema numérico você sempre especifica todas as três categorias. Portanto, para que o proprietário do arquivo .profile tenha permissões de ler, gravar e executar o arquivo e ninguém mais tenha qualquer permissão, você deve usar o valor 700, da seguinte forma:

chmod 700 .profile

Para tornar o mesmo arquivo legível e gravável para o usuário e legível pelo grupo e outros, você segue a mesma lógica matemática: para o primeiro conjunto de permissões, o usuário, o valor para legível é 4, e o valor para gravável é 2. A soma desses dois é 6. O próximo conjunto de permissões, o grupo, é read-only, portanto é 4. As definições para os outros, assim como o grupo, é 4. Portanto o comando seria chmod 644 .profile.