Bruno Tinoco | IT Professional

----| BT Info | Bussiness Technology |----------| Microsoft | Linux |-----




Permissões de Arquivos e Diretórios no Linux


Todos sabemos que tudo no linux é reconhecido como um arquivo, e todo arquivo ou diretório tem propriedades que restrigem o seu uso, como o Linux é um sistema operacional multi-usuário, muitos usuários poderão estar logados e com acessos aos arquivos e diretórios do sistema, assim arquivos e diretórios tem de pertencer à um usuário e grupo para uma melhor segurança e controle de acessos.

Ex: O diretório /root pertence ao usuário root e ao grupo root, apenas o usuário root poderá entrar e mexer nesse diretório.


O Controle de acesso ao sistema de arquivos nativo do linux é implementado usando um conjunto de propriedades, mantidas separadamente para um grupo de arquivos, essas propriedades são chamadas de modo de acesso, o modo controla os acessos por essas três classes de usuários:

Usuário (User)
Usuário dono do arquivo.
Grupo (Group)
Grupo dono do arquivo.
Outro (Other)
Todos usuários do Sistema.

Com o comando ls -l aprendemos que depois do primeiro caracter (tipo de arquivo), os próximos 9 caracteres são uma sequência de permissões. Podemos dizer que temos 3 variações de letras:

Letra r – leitura (read)
Permissão para Arquivo: Examinar o Conteúdo do Arquivo.
Permissão para Diretório: Listar o Conteúdo do Diretório.

Letra w – escrita (write)
Permissão para Arquivo: Escrever n o ou modificar o Arquivo.
Permissão para Diretório: Criar e remover arquivos do Diretório.

Letra x – execucão (execute)

Permissão para Arquivo: Rodar um arquivo como um programa.
Permissão para Diretório: Acessar o diretório (com 'cd' para dentro dele).

Estas três letras se encaixam em 3 campos:

{rwx}{rwx}{rwx}

Ex: drwxrwxrwx 2 root root 4096 2010-02-09 19:37 btpteste

Campo 1: Permissões do usuário dono
Campo 2: Permissões do grupo dono
Campo 3: Permissões para todos os outros

Sendo assim um arquivo com a permissão rwxrwxrwx informa que o usuário dono pode ler,escrever e executar assim como o grupo e outros usuários do sistema.
Alem dos nove bits existentes de acessos para usuários, grupos e outros, existem mais três bits que contém atributos especiais para arquivos e diretórios executaveis, são os bits SUID, SGID e Sticky.

SUID: O bit SUID serve somente para arquivos executaveis e não tem efeito sobre diretórios, geralmente quando um arquivo é executado no Linux o processo recebe o nome do proprietário do arquivo, com o bit SUID definido no arquivo o processo feito iniciado recebe o nome do proprietário desse arquivo independente de quem iniciou o processo. Um exexplo do programa SUID é passwd, este comando precisa de acesso especial para manipular o arquivo de senhas shadow (/etc/shadow) assim ele roda como usuário root, usar o bit SUID em casos como o de passwd aprimora a segurança, por outro lado, SUID pode causar risco na segurança caso usado de forma incorreta.

SGID:
Esse bit é parecido com o SUID mas sendo para diretórios, com esse bit definido no diretório qualquer arquivo criado dentro do diretório recebe a mesma propriedade de grupo do diretório, por exemplo, se o diretório /home/btp tiver o grupo btp e tiver o SGID habilitado, todos os arquivos que forem criados dentro dele recebem as mesmas configurações de grupo do diretório, isso garante que quando for compartilhado o diretório todos usuário do grupo btp terão acesso sem restrições tanto no diretório como nos arquivos.

Sticky:
Quando esse bit é aplicado em um diretório, oferece uma segurança adicional para os arquivos que estão dentro do diretório, independete das permissões dos arquivos com esse bit ativado somente poderá ser feito alterações tipo: renomear ou excluir se o usuario for o proprietário do arquivo, em ambiente de equipe (setores) o bit sticky permite que os grupos criem e modifiquem arquivos, mas somente o proprietário dos arquivos podem apagá-los ou renomeá-los.

Essas propriedades são binarias e são consideradas como bits de modo de acesso.
As permissões especiais, de proprietário de grupo e de outros podem ser definidas em 12 bits binários e são:


Para fazer alterações nos modos de acessos à arquivos no Linux usamos o chmod (change mode), para fazer alteração nas propriedades de usuários e grupos usamos o comando chown (change owner) e para alterar os grupos donos de arquivos e diretórios usamos o chgrp (change group), vejamos algumas ilustrações abaixo:
Modos para o Comando chmod:

Classe de Usuários:
u = Usuários
g = Grupos
o = Outros
a = Todas as classes

Classe de Operação:
- : Retira a permissão
+ : Adciona a permissão
= : Defini a permissão

Classe de Permissão:
r = Leitura
w = Gravação
x = Execução
s = Premissões SUID e SGID
t = Sticky bit

Usando o chmod:

$ chmod u+x nis_test.txt

Adiciona permissão de execução pelo dono ao arquivo.

$ chmod u+wx,g-w,o=r nis_test.txt

Adiciona permissão de escrita e execução para o dono, retira permissão de escrita para o grupo e, para os outros usuários permite apenas leitura.

$ chmod 750 btp_nis.sh

Permissão de leitura, escrita e execução para o dono, leitura e execução para o grupo e nenhuma permissão aos outros usuários.

$ chmod 0750 btp_nis.sh

Equivalente ao anterior.
$ chmod 1777 /home/btp

Liga o bit sticky do diretório e dá permissão de leitura, escrita e execução para todos os usuários.

Usando o Chown

$ chown tinoco btp.txt

Muda apenas do dono do arquivo.

$ chown tinoco.btpinfo nis_test.txt

Muda o dono e o grupo do arquivo.



Usando o Chgrp

$ chgrp btpinfo nis_test.txt

Muda o grupo do arquivo nis_test para btpinfo.

UMASK


A Umask altera o valor da máscara de criação dos arquivos. Os valores da umask padrão para arquivos quando criados é 666 e para diretórios é 777, a máscara padrão no Linux é 022 e pode ser alterada em /etc/profile, é feito uma subtração no momento em que arquivo ou diretório é criado, um exemplo:
Quando criamos um arquivo no linux ele tem a permissão de criação de 666 e o linux tem a permissão padrão de 022, assim faremos 666-022=644 (rw-r—r--), isso informa que o usuário dono tem o direito de ler e escrever enquanto o grupo dono e outros usuários só podem ler o arquivo.

Uso:
umask [máscara]

Exemplos

$ umask 022

A permissão é 666-022=644. O usuário pode ler e escrever; o grupo e outros usuários podem somente ler.

$ umask 002

A permissão é 666-002=664. O usuário e o grupo podem ler e escrever; outros usuários podem apenas ler.

------------------------------------------------------------------------------------------------------------------------


Bom, isso é uma pequena parte bem resumida de como aplicar permissões em diretórios e arquivos no Linux, protegendo assim a segurança de seus dados.

Fontes de pesquisa:
Certificação Linux LPI-1 – Guia de referência O`Reilly – AltaBooks
http://www.vivaolinux.com.br

Bruno Tinoco - IT Professional

Espero ter ajudado.
;)