Permissionamento
Last updated
Last updated
Todo arquivo ou diretório no Linux, possui permissões de Leitura, Escrita e Execução, que são atribuídas ao Owner (usuário que criou), Group (usuários que fazem parte de um grupo de usuários) e Others (que são os demais usuários do SO).
Para vermos tais permissões, vamos executar o comando ls -lh
e analisar a saída:
EXPLICAÇÃO: ls = Lista os arquivos -lh = Exibe detalhes dos arquivos e de forma mais amigável
Já na primeira coluna, podemos ver as permissões do arquivo meu_arquivo.txt e do diretório meu_diretorio. Vamos então dividí-la em 4 partes, sendo a primeira parte, o primeiro caractere e mais 3 partes contendo 3 caracteres cada, ficando assim:
A primeira parte pode ser um dos seguintes:
CARACTERE
DESCRIÇÃO
-
Arquivo
d
Diretório
l
Link Simbólico (atalho)
As demais partes seguem sempre o mesmo padrão, seguindo exatamente a ordem rwx
. O caracter -
é o único que pode aparecer em qualquer lugar.
CARACTERE
DESCRIÇÃO
r
Read - Leitura
w
Write - Escrita
x
Execução
-
Denied - Sem Acesso
ATENÇÃO:
O conteúdo de um diretório pode ser listado se tiver permissão r
(leitura), porém só poderá acessar um arquivo dentro desse diretório, se o diretório tiver permissão x
(execução).
Segue abaixo uma imagem para melhor descrever:
Atribuindo permissões de leitura para o Group (g
) e Others (o
)
Removendo permissões de escrita para Others (o
)
Adicionando permissões de leitura, escrita e execução para o proprietário (owner) do arquivo
Removendo permissão de escrita e execução para "grupo" e "outros"
Outra forma de alterarmos as permissões, é configurando todos os bits de uma só vez. Iremos utilizar 3 números (que vai de 0 a 7), o primeiro representa o User, o segundo representa o Group e o último representar Others. Cada número define o tipo de permissão, como podemos ver abaixo:
NÚMERO
REPRESENTAÇÃO
DESCRIÇÃO
0
-
Sem Permissão
1
--x
Apenas Execução
2
-w-
Apenas Escrita
3
-wx
Escrita e Execução
4
r--
Apenas Leitura
5
r-w
Leitura e Execução
6
rw-
Leitura e Escrita
7
rwx
Leitura, Escrita e Execução
Seguindo essa tabela, podemos atribuir permissão de "Leitura e Escrita" para o User e "Somente Leitura" para Group e Others.
É comum vermos profissionais (inclusive administradores de redes inexperientes) que atribuem permissão total ao arquivo para todos os usuários do sistema, utilizando o comando chmod 7777 <arquivo>
. Pior do que isso, muitas vezes o comando é feito em um determinado diretório e de forma recursiva, como em: chmod -R 7777 <directory>
.
Quando fazemos o processo acima, os executáveis tem um s
no lugar do x
. Isso indica que o executável é setuid, o que significa que, ao executar o programa, o dono do arquivo, e não você, será o usuário que irá realizar a execução. Esse tipo de permissionamento pode gerar falhas de segurança e permitir até PrivEsc, como veremos mais adiante.
ATENÇÃO:
Nunca dê esse tipo de permissão caso não haja necessidade, principalmente em arquivos expostos, como arquivos de um sistema web.
Isso pode ser útil quando precisamos fazer com que determinado arquivo ou diretório, passe a ser proprietário de outro User ou Group.