Permissões Linux
Permissões Linux
Permissões Linux
Neste artigo falarei sobre como distinguir níveis e tipos de permissão em arquivos e
diretórios, utilizar os comando chmod e chown para modificar propriedades e
permissões, distinguir os modos octal e textual para os parâmetros dos comandos de
mudança de permissões, entender o que é máscara de um arquivo e como modificá-la,
entender e utilizar permissões especiais, como stick bit e suid bit.
Conceito de permissão
O Linux é um sistema multi-usuário. É necessário ter uma conta de acesso para utilizá-
lo.
Além da autenticação para acesso ao sistema, uma outra funcionalidade relativa aos
conceitos de usuários e grupos é o de permissões de arquivos, onde é definido quem
pode acessar bem como quais arquivos e diretórios.
O sistema que arquivos do Linux possibilita que sejam atribuídos direitos de acesso
diferenciados para os usuários do sistema. A cada arquivo ou diretório do sistema é
associado um proprietário, um grupo e seus respectivos direitos de acesso, ou
permissões.
3) outros - aplica-se a qualquer outro usuário, que não se encaixa nos níveis anteriores.
2) escrita (w) - permissão para alterar o conteúdo do arquivo, simbolizada por "w" (do
inglês write).
3) execução (x) - permissão para executar o arquivo, simbolizada por "x" (do inglês
execution).
Estas propriedades são atribuídas com o objetivo de determinar quem pode acessá-lo,
ler seu conteúdo ou mesmo executar algum programa.
Verificando permissões
Para visualizar as permissões de um arquivo, pode-se utilizar o comando "ls -l", que
listará os arquivos do diretório atual com uma série de informações adicionais,
incluindo colunas com as permissões, nome do usuário e do grupo donos do arquivo.
A primeira coluna (da esquerda para a direita) é a que contém todas as permissões; a
segunda indica os links diretos do arquivo, a terceira e quarta colunas especificam o
nome do usuário e grupo ao qual pertencem o arquivo. As demais colunas mostram
informações adicionais sobre o arquivo.
Adiciona leitura e escrita para o dono, adiciona escrita para o grupo e remove todas as
outras permissões pra outros usuários no arquivo arquivo2.txt.
Octal
No formato octal, as permissões são representadas por números na base octal, onde
leitura é representado pelo valor 4, a escrita por 2 e execução por 1. Somando-se os
valores obtem-se a permissão desejada para cada nível. Exemplo:
É importante lembrar que o usuário root tem permissões ilimitadas, ou seja, ele poderá
visualizar ou modificar permissão de qualquer usuário, em qualquer diretório.
chmod
Permite que se alterem as permissões e propriedades de um ou mais arquivos (change
mode). É importante ressaltar que o usuário deve ter permissões para fazer as alterações
(por exemplo: deve ser o usuário root, deve ser dono do arquivo, ou deve estar no grupo
do arquivo, com permissão de escrita). Pode utilizar tanto a notação textual como a
octal.
Principais opções:
Nível de Permissão
u Usuário ou dono do arquivo.
g Grupo do arquivo.
Outros usuários que não são donos e não estão cadastrados no
o
grupo.
a Afeta todos os anteriores (u, g, o).
Tipo de Permissão - Notação Textual
r Concede ou remove permissão de leitura.
w Concede ou remove permissão de escrita.
x Concede ou remove permissão de execução.
a Concede ou remove todas as permissões anteriores (all).
Tipo de Permissão - Notação Octal
4 Indica permissão de leitura.
2 Indica permissão de escrita.
1 Indica permissão de execução.
7 Indica todas as permissões.
0 indica sem permissão.
Operadores
+ Concede permissão(ões) especificada(s).
- Remove permissão(ões).
Atribui somente esta(s) permissão(ões) ao arquivo, removendo a(s)
=
que não sem encontra(m) explícita(s).
Exemplos:
Principais opções:
Exemplos:
Altera o grupo de arquivo.txt para eduardo. Note que se o usuário não tiver permissões
suficientes, será mostrada uma mensagem de erro.
Altera o dono do arquivo arquivo2.txt para eduardo e o grupo para eduardo. Lembre-se
que apenas o superusuário (root) pode realizar esta alteração.
Modifica o grupo do diretório dados/ e de todos o seu conteúdo para eduardo.
chgrp
Altera apenas o grupo para os arquivos ou diretórios indicados. Um usuário comum
pode alterar o grupo de um arquivo caso ele pertença tanto ao grupo de origem como ao
grupo de destino. O super-usuário (root) pode alterar o grupo do arquivo para qualquer
grupo válido no sistema.
É equivalente ao comando "chown" somente com o parâmetro :grupo (ou seja, sem
modificar o dono do arquivo, somente o grupo).
Principais opções:
Exemplos:
1) chgrp coisas texto1 texto 2 imagens/ - modifica o grupo associado aos arquivos
texto1 texto2 e ao diretório imagens, associando-os ao grupo coisas. Note que o usuário
deverá ter as permissões suficientes para esta modificação, caso contrário será mostrada
uma mensagem de erro.
Sintaxe:
Permissões em diretórios
Para diretórios, as permissões possuem um significado ligeiramente diferente.
# vi /home
no seu Linux que será aberta uma instância do editor de texto vi com o conteúdo do
arquivo do tipo diretório "/home", onde dentro dele estarão listadas as opções deste
diretório e também o nome de seus arquivos e sub-diretórios.
Exemplos:
1) um diretório que tenha permissão 755, permite que seu dono faça qualquer alteração,
mas outros usuários podem apenas acessá-lo e ler seu conteúdo. Nesse modo, cada
arquivo contido no diretório fica protegido por sua própria permissão. É o modo mais
comum.
2) um diretório com permissão 710 tem como característica interessando permitir que
usuários do grupo a quem ele pertence acessem arquivos em seu interior, mas desde que
saibam seu nome, uma vez que a listagem do conteúdo não é permitida.
3) um diretório com permissões 744 permite que outros listem seu conteúdo, mas não
acessem os arquivos. Nesse modo, muito pouco utilizado, apenas os nomes dos arquivos
estão disponíveis.
Diretórios têm suas permissões alteradas da mesma forma que arquivos, utilizando o
comando chmod.
Permissões especiais
Existem algumas permissões especiais de arquivos/diretórios que oferecem
funcionalidades além das simples permissões de acesso. Os mais importantes cenários
de utilização estão a seguir.
SUID
O bit SUID é utilizado em arquivos executáveis quando se deseja que o programa seja
executado com os privilégios de seu usuário dono.
Isso é útil em situações onde um programa precise acessar determinado recurso, mas os
usuários que o utilizam não o possam fazer diretamente.
Embora a utilidade do bit SUID seja questionável, seu uso deve ser feito com muito
cuidado, pois um problema em sua configuração pode ter conseqüências sérias de
segurança (especialmente se o SUID for para o usuário root).
O bit SUID é representado textualmente por u+s. Por exemplo: $ chmod u+s
arquivo_executável.
SGID
O bit SGID tem a mesma função do bit SUID, mas é aplicado ao grupo, ou seja, o
programa é executado com os privilégios do grupo a que pertence.
O bit SGID também pode ser utilizado em diretórios. Nesse caso, todos os arquivos
criados dentro deste terão como grupo dono o mesmo grupo a que o diretório pertence.
Stick Bit
O stick bit é utilizado em diretórios compartilhados entre vários usuários, em
combinação com permissões de escrita para estes, onde seja desejável que usuários não
acessem os arquivos por outros criados.
Em outras palavras, um diretório com stick bit ativado permite que qualquer usuário
crie arquivos, mas os outros usuários não poderão removê-los. Um exemplo do uso do
stick bit é o diretório /tmp.
$ chmod +t diretório_compartilhado
e
$ chmod 1777 diretório_compartilhado
Conclusão
Espero que este artigo tenha sido esclarecedor na questão de permissões de
arquivos e diretórios, uma vez que saber setar corretamente estas opções é parte
indispensável para a segurança de uma sistema.
A umask pode ser de grande utilidade para programas que criam arquivos/diretórios
temporários, pois desta forma, pode-se bloquear o acesso de outros usuários e a criação
de arquivos, sem precisar recorre ao chmod.
Por padrão, quando um usuário é criado, é criado um grupo com o mesmo dome de
usuário. É possível visualizar estar informações com o comando "id".
O comando chmod não permite a mudança das permissões de links simbólicos, ou seja,
as permissões devem ser mudadas no arquivo alvo do link.
É possível copiar permissões de acesso do arquivo diretamente. Por exemplo: se o
usuário digitar chmod o=u, as permissões de acesso dos outros usuários (o) serão
idênticas ao do dono (u).
Abraços.