Entendendo permissões de arquivos e diretórios no Linux
Anderson Irias - 04/09/2020
Neste artigo, vou apresentar de modo básico permissões de arquivos e diretórios no Linux. As permissões de acesso, protegem os arquivos e diretórios do acesso não autorizado de pessoas ou programas. As permissões de acesso no Linux, impedem que alguém mal intencionado, exclua um arquivo que não deve ou mesmo faça o envio de arquivos sensíveis para outras pessoas.
No Linux o acesso aos arquivos e diretórios é definido por donos, grupos e outros usuários.
Dono
É o usuário que criou o arquivo ou diretório. Somente o dono do arquivo ou o usuário root pode modificar suas permissões de acesso.
Grupo
Um usuário pode estar em um ou mais grupos. Assim caso o grupo tenha permissões de acesso ao arquivo ou diretório, todos os usuários que pertençam ao grupo também terão permissão.
Outros Usuários
É um usuário que não é dono e nem mesmo pertence ao grupo do arquivo.
Tipos de permissões
Existem 3 tipos de permissões básicas para arquivos e diretórios.
- r - Permissão de leitura. (read)
- w - Permissão de gravação (write)
- x - Permissão de execução (caso seja um programa executável). (execution)
Para visualizarmos as permissões de arquivos no terminal do Linux utilize o comando: ls -la.
$ ls -l total 0 -rwxrw-r-- 1 anderson anderson 0 set 4 18:28 teste1.txt -rw-rw-r-- 1 anderson www-data 0 set 4 18:28 teste2.txt -rw-rw-r-- 1 root root 0 set 4 18:28 teste3.txt
O comando ls realiza a listagem dos arquivos de um diretório. Na primeira coluna, temos o conjunto de permissões de um arquivo.
rwxrw-r-- rw-rw-r-- rw-rw-r--
Acima as permissões são apresentadas seguindo a ordem: Leitura, gravação e execução (rwx). Onde a permissão está desabilitada temos: “-”. Como é apresentado acima, aparece a permissão junta na ordem: dono, grupo e outros usuários.
Por exemplo nesta permissão temos:
rwxrw-r--
Os três primeiros caracteres são referentes ao dono.
rwx
Ou seja neste caso o dono do arquivo tem permissão de leitura (read), escrita (write) e execução (execution) no arquivo. Os próximos três caracteres são referentes ao grupo.
rw-
Assim o grupo ou seja todos os usuários que estão no grupo, tem permissão de leitura (read) e escrita (write) no arquivo. Neste exemplo o grupo não possui a permissão de execução (execution), já que esta permissão está desabilitada para ele. Podemos ver isso pois ele apresenta o - ao invés de um carácter. Os últimos três caracteres são referentes aos outros usuários.
r--
Com isso os outros usuários têm permissão de leitura (read) no arquivo e mais nenhuma outra, pois neste exemplo apresenta o - no lugar dos outros dois caracteres.
As permissões também podem ser apresentadas de forma numérica. A representação numérica também segue esta mesma lógica. Abaixo uma tabela que apresenta as permissões na representação numérica.
Permissão
Binário
Decimal
---
000
0
Permissão desabilitada
--x
001
1
Execução (x)
-w-
010
2
Escrita (w)
-wx
011
3
Escrita (w) e Execução (x)
r--
100
4
Leitura (r)
r-x
101
5
Leitura (r) e Execução (x)
rw-
110
6
Leitura (r) e Escrita (w)
rwx
111
7
Leitura (r), Escrita (w) e Execução (x)
Para alterar a permissão de um arquivo no terminal do Linux utilize o comando: chmod.
$ chmod 664 teste1.txt
Depois visualize com o comando:
$ ls -l total 0 -rw-rw-r-- 1 anderson anderson 0 set 4 18:28 teste1.txt -rw-rw-r-- 1 anderson www-data 0 set 4 18:28 teste2.txt -rw-rw-r-- 1 root root 0 set 4 18:28 teste3.txt
Acima com o comando chmod alteramos a permissão do arquivo teste1.txt para 664 escrito na representação decimal ou seja:
rw-rw-r--
Como vimos representa que o dono tem permissão de Leitura (r) e Escrita (w). O grupo tem permissão de Leitura (r) e Escrita (w). E os outros usuários têm permissão de Leitura (r).
O comando ls -l também retorna o nome do dono do arquivo e do grupo do arquivo ou diretório.
$ ls -l total 0 -rw-rw-r-- 1 anderson anderson 0 set 4 18:28 teste1.txt -rw-rw-r-- 1 anderson www-data 0 set 4 18:28 teste2.txt -rw-rw-r-- 1 root root 0 set 4 18:28 teste3.txt
Acima ele apresenta logo após as permissões o dono e o grupo. No primeiro arquivo teste1.txt o dono do arquivo é o usuário anderson e o grupo em que o arquivo está é o grupo anderson. No segundo arquivo teste2.txt o dono do arquivo é o usuário anderson e o grupo em que o arquivo está é o grupo www-data. No terceiro arquivo teste3.txt o dono do arquivo é o usuário root e o grupo em que o arquivo está é o grupo root. Para alterar um arquivo de grupo ou de usuário utilize o comando: chown.
$ sudo chown anderson:www-data teste1.txt
Utilizamos o sudo na frente do comando pois este comando precisa de ser executado como administrador. Logo após o comando colocamos o usuário seguido do grupo e no fim o arquivo: chown usuario:grupo arquivo
Com isso concluímos este breve resumo sobre permissões de arquivos e diretórios no Linux. Veja o artigo: Como criar um usuário no Linux pelo terminal onde eu apresento como criar um usuário no Linux e o adicionar a um grupo.