Como gerenciar permissões no Linux

Nesse artigo pretendo desmistificar e esclarecer de forma bem didática e usando um vocabulário simples, o funcionamento do gerenciamento das permissões no mundo Linux. Esse texto tem como público alvo os administradores Linux e até mesmo aqueles que estão tendo seu primeiro contato com esse maravilhoso mundo. Acredito que muitas dúvidas serão tiradas ao longo desse artigo.

[ Hits: 70.800 ]

Por: Armando Martins de Souza em 10/05/2010


Manipulando as permissões



Modificando permissões

Antes de falarmos dos comandos que nos possibilitam mudar as permissões de acesso de usuários, grupos e outros. Falaremos das duas formas de modificá-las através das notações octal e simbólica. Elas são usadas para modificar cada um dos níveis de permissões.

Níveis de permissão:
Notação octal:

Modificamos diretamente os 3 níveis de permissão. Para modificarmos as permissões através dessa forma, devemos especificar explicitamente o conjunto de permissões. Isto significa que iremos modificar de uma vez só os três níveis de permissão (dono, grupo e outros).

Não temos como modificar apenas 1 nível de permissão, quando usamos esta notação. Se a intenção é apenas modificar um nível de permissão, é mais simples optarmos pela notação simbólica ou especificarmos os outros 2 níveis usando o octal que representa o mesmo conjunto de permissões atuais.

Sua representação é um conjunto de oito números, onde cada um deles significa um conjunto de permissões diferente.

Tabela notação octal:
Tabela notação simbólica:
Linux: Como gerenciar permissões no Linux
Em adição as opções simbólicas descritas acima, temos 3 formas de trabalho:
Para iniciarmos nossos exemplos vamos criar a seguinte árvore de diretórios, contendo alguns arquivos e diretórios:
Como já tínhamos o diretório "/documentos" e o arquivo "bugiganga.txt".

# cd /documentos
# touch organograma.odc
# cd Documentos/
# touch credores.xls
# touch contas_pagar.odc


Agora de dentro do diretório /documentos vamos dar o comando "ls -l".

# ls -l
-rw-r--r-- 1 root root    0 2010-05-04 14:33 bugiganga.txt 
drwxr-xr-x 2 root root 4096 2010-05-04 17:31 Documentos 
-rw-r--r-- 1 root root    0 2010-05-04 17:30 organograma.odc

Como podemos ver, o dono dos arquivos é o superusuário "root" e o grupo dono deles é o grupo "root". As permissões são de escrita(w) e leitura(r) para o dono (root), leitura(r) para o grupo (root) e leitura(r) para os outros, isso para os arquivos. No caso do diretório temos o bit de execução (x) ligado, além de todos os outros bits estarem com as permissões iguais as dos arquivos.

Agora estamos preparados para estudarmos os comandos que nos permitem manipular as permissões. Os comandos "chmod", "chgrp" e "chown" serão descritos a seguir.

Comando chmod

Usado para modificar as permissões de acesso de um arquivo ou diretório. Quando criamos um arquivo, seu dono (proprietário) é o usuário que o criou, seu o grupo é o grupo padrão do seu proprietário. Como vimos anteriormente existe uma exceção a essa regra. Caso o diretório onde esse arquivo/diretório esteja sendo criado possua o bit especial "setgid" ativado. Nesse caso o grupo passa a ser o mesmo grupo do diretório "pai".

Sintaxe:

chmod [opções] [permissões] [arquivo/diretório]

Opções:
Segue abaixo exemplos do comando chmod:

Ex.1: Vamos dar direito de escrita para o grupo dono do arquivo bugiganga.txt.

# ls -l
-rw-r--r-- 1 root root    0 2010-05-04 14:33 bugiganga.txt 
drwxr-xr-x 2 root root 4096 2010-05-04 17:31 Documentos 
-rw-r--r-- 1 root root    0 2010-05-04 17:30 organograma.odc

# chmod g+w bugiganga.txt
# ls -l
-rw-rw-r-- 1 root root    0 2010-05-04 14:33 bugiganga.txt 
drwxr-xr-x 2 root root 4096 2010-05-04 17:31 Documentos 
-rw-r--r-- 1 root root    0 2010-05-04 17:30 organograma.odc

Ex.2: Iremos agora remover direito de escrita para o grupo dono do arquivo bugiganga.txt.

# chmod g-w bugiganga.txt
# ls -l
-rw-r--r-- 1 root root    0 2010-05-04 14:33 bugiganga.txt 
drwxr-xr-x 2 root root 4096 2010-05-04 17:31 Documentos 
-rw-r--r-- 1 root root    0 2010-05-04 17:30 organograma.odc

Ex.3: Vamos incluir o direito de escrita para os "outros" no diretório "Documentos" de forma recursiva, isso significa que arquivos/diretórios abaixo do diretório Documentos irão receber direito de escrita para os "outros".

# chmod -R o+w Documentos
# ls -l
-rw-r--r-- 1 root root    0 2010-05-04 14:33 bugiganga.txt 
drwxr-xrwx 2 root root 4096 2010-05-04 17:31 Documentos 
-rw-r--r-- 1 root root    0 2010-05-04 17:30 organograma.odc

# ls -l Documentos/
-rw-r--rw- 1 root root 0 2010-05-04 17:31 contas_pagar.odc 
-rw-r--rw- 1 root root 0 2010-05-04 17:31 credores.xls

Ex.4: Usaremos um exemplo de notação octal. Faremos com que o arquivo organograma só tenha direto de leitura e escrita para o dono do arquivo, nesse caso o "root".

# chmod 600 organograma.odc
# ls -l
-rw-r--r-- 1 root root    0 2010-05-04 14:33 bugiganga.txt 
drwxr-xrwx 2 root root 4096 2010-05-04 17:31 Documentos 
-rw------- 1 root root    0 2010-05-04 17:30 organograma.odc

Como acabamos de ver, podemos modificar as permissões de arquivos/diretórios de diversas formas.

Você deve estar se perguntando, qual será a melhor forma de mudarmos as permissões de arquivos e diretório? Senhores, isso é uma questão de adaptação, se você conseguir trabalhar melhor com a notação simbólica, esta será a melhor forma, mas se você se identificar melhor com a notação octal, ela será melhor.

Comando chgrp

Comando nativo do Unix é usado para modificar o grupo dono do arquivo/diretório. Hoje em dia não é muito mais utilizado, pois o comando chown além de mudar a propriedade do arquivo/diretório, também muda o grupo. Como iremos mostrar como um pouco mais adiante.

Sintaxe:

chgrp [opções] [grupo] [arquivo/diretório]

Opções:
Daremos alguns exemplos do uso do comando "chgrp". Continuaremos a usar a estrutura de arquivos/diretórios que foram criados anteriormente. Apenas iremos acrescentar dois grupos um chamado administracao e outro chamado contabilidade.

# groupadd administracao
# groupadd contabilidade


Agora vamos para dentro do diretório "/documentos" e vamos listar o conteúdo.

# ls -l
-rw-r--r-- 1 root root    0 2010-05-04 14:33 bugiganga.txt 
drwxr-xrwx 2 root root 4096 2010-05-04 17:31 Documentos 
-rw------- 1 root root    0 2010-05-04 17:30 organograma.odc

Ex.1: Vamos trocar o grupo (root) dono do arquivo bugiganga.txt para contabilidade. Estamos utilizando a opção "-v" para mostrar o arquivo que esta sendo modificado.

# chgrp -v contabilidade bugiganga.txt
changed group of `bugiganga.txt' to contabilidade

Ex2.: Agora iremos trocar o grupo (contabilidade) do arquivo bugiganga.txt para o grupo (administracao).

# chgrp administracao bugiganga.txt
# ls -l
drwxr-xrwx 2 root root          4096 2010-05-03 13:13 administracao 
-rw-r--rw- 1 root administracao    0 2010-05-03 11:07 bugiganga.txt 
-rw------- 1 root root             0 2010-05-03 13:11 organograma.odc

Ex3.: E por fim modificaremos o grupo administração para ser dono do diretório administracao.

# chgrp administracao administracao/
# ls -l
drwxr-xrwx 2 root administracao 4096 2010-05-03 13:13 administracao 
-rw-r--rw- 1 root administracao    0 2010-05-03 11:07 bugiganga.txt 
-rw------- 1 root root             0 2010-05-03 13:11 organograma.odc

Comando chown

Usado para modificar a propriedade de um arquivo/diretório.O interessante é que como mencionado anteriormente, ele tem a opção de modificar também o grupo proprietário da arquivo/diretório, conforme mostraremos mais adiante.

Sintaxe:

chown [opções] [dono:grupo] [arquivo/diretório]

Opções:
Usando ainda a mesma árvore de diretórios criada para exemplos iremos demonstrar alguns exemplos do comando "chown". Antes de mais nada criaremos dois usuários (castro e pamela).

# useradd castro
# useradd pamela


Inicialmente vamos listar o conteúdo, para podermos ver como esta atualmente o diretório.

# ls -l
drwxr-xrwx 2 root administracao 4096 2010-05-03 13:13 administracao 
-rw-r--rw- 1 root administracao    0 2010-05-03 11:07 bugiganga.txt 
-rw------- 1 root root             0 2010-05-03 13:11 organograma.odc 

Ex1: Vamos passar a propriedade do arquivo organograma.odc para o usuário castro.

# chown castro organograma.odc
# ls -l
drwxr-xrwx 2 root   administracao 4096 2010-05-03 13:13 administracao 
-rw-r--rw- 1 root   administracao    0 2010-05-03 11:07 bugiganga.txt 
-rw------- 1 castro root             0 2010-05-03 13:11 organograma.odc

Ex2: Agora vamos além de mudar a propriedade do arquivo organograma.odc do usuário castro para o usuário pamela, passaremos o grupo contabilidade para o grupo dono do arquivo.

# chown pamela:contabilidade organograma.odc
# ls -l
drwxr-xrwx 2 root   administracao 4096 2010-05-03 13:13 administracao 
-rw-r--rw- 1 root   administracao    0 2010-05-03 11:07 bugiganga.txt 
-rw------- 1 pamela contabilidade    0 2010-05-03 13:11 organograma.odc

Conclusão

Espero que tenha conseguido passar como Gerenciar as permissões de arquivos/diretórios e como manipular suas propriedades. Temos que ter me mente que as fontes de informações do Linux devem sempre complementar os estudos de um bom administrador de sistemas.

Nos exemplos desse artigo, usamos apenas algumas opções que os comandos proporcionam. É importante usarmos as páginas de manuais dos comandos (páginas man).

Página anterior    

Páginas do artigo
   1. Introdução
   2. Conjunto de permissões
   3. Permissões de acesso
   4. Manipulando as permissões
Outros artigos deste autor

Como gerenciar usuários e grupos

Desvendando as regras de Firewall Linux Iptables

Leitura recomendada

Boot Linux - o que acontece quando ligamos o computador

Flatpak: usar ou não usar?

Shell Script Para Iniciantes - Parte I

Usando cron e crontab para agendar tarefas

Ética na Programação

  
Comentários
[1] Comentário enviado por nicolo em 11/05/2010 - 10:44h

Sugiro o comando
sudo nautilus --browser
Botão direito do mouse na pasta ou arquivo
Escolha propriedades e permissões.
Pode mudar o que quiser sem saber letra nenhuma.- Muito melhor que o Windows.

[2] Comentário enviado por dastyler em 11/05/2010 - 11:53h

nicolo,

E se vc estiver usando um server sem interface gráfica? Como seria? :-P

hehehehe:D:D:D

[]´s

[3] Comentário enviado por amsouza em 11/05/2010 - 12:11h

Olá nicolo,
Em se tratando de interface gráfica você pode usar este recurso, contudo minha intenção é mostrar como você gerencia as permissões tanto na interface texto, quanto na gráfica.

É mostrar como o gerenciamento de permissões é feito, entendeu?

E dastyler, muito obrigado pela colocação.

Abraços,

Armando

[4] Comentário enviado por maran em 11/05/2010 - 14:54h

Muito bom o artigo,
mais achei que teria mais didatica, não que não tinha apenas, mais exercicios ou exemplos,
afinal se propos a tirar todas as duvidas, no indice do artigo e achei que ficou um pouco, vago esta parte:

Caso alguem tambem queira outras fontes segue um artigo que fiz do genero:

http://www.vivaolinux.com.br/artigo/Leia-grave-e-execute/

Abraço e parabéns ao autor

[5] Comentário enviado por amsouza em 11/05/2010 - 16:11h

Olá maran,

Em primeiro lugar, obrigado pelo comentário! Agora gostaria de saber qual foi a parte que ficou vaga, pois no caso de eu ter deixado passar algo ou até mesmo expressado de forma vaga, tenho a possibilidade de ajustar.

Ahh... e muito bom seu artigo! =D

Abraços,

Armando

[6] Comentário enviado por murderb13 em 12/05/2010 - 13:02h

otimo artigo..

descreve detalhadamente oq estamos fazendo com as permissões...num fika só ensinando
chmod 777

parabéns autor.!

[7] Comentário enviado por amsouza em 12/05/2010 - 13:59h

Olá murderb13,

Obrigado pelo comentário.

Abraços

Armando

[8] Comentário enviado por heepz em 18/02/2011 - 13:04h

Uma dúvida quando aparece drwxr:

d indica que é diretório
r leitura
w escrita
x execução

e o último "r" é o que ????

[9] Comentário enviado por amsouza em 18/02/2011 - 13:36h

Olá heepz,

Vamos lá.... quando executamos o comando ls -l, e olharmos da esqueda para a direita, veremos uma seguencia inicial de 10 bits, que significam:

bit 1 --> tipo de arquivo (se é um diretório, link simbólico, arquivo regular etc)
do bit 2 ao 4 --> permissão do usuário dono dos arquivo/direitorio
do bit 5 ao 7 --> são as permissões do grupo a que pertence o arquivo/direitório
do bit 8 ao 10 --> são as permissões conhecidas como os outros, isto é, se não for dono ou pertencer ao grupo dono do arquivo ou diretório as permissões que incidirão serão as desse conjunto de bits.

Então, respondendo sua pergunta... você apresentou 5bits "drwxr"

d --> bit de tipo
rwx --> bits referentes ao dono do arquivo/diretório
r --> bit de leitura do grupo dono do arquivo/diretório.

provavelmente você tem ainda na sequencia aos valores de wx do conjunto de permissões de grupo e rwx dos outros. O que pode estar acontecendo é que o arquivo/diretório não tenha essas permissões e no lugar de rwx, apareça apenas --- (ausência de permissões).

Espero ter ajudado e fico a disposição para quaisquer esclarecimentos,

Abrs,

Armando



[10] Comentário enviado por iagorafael em 28/02/2013 - 17:45h

poderia dar um exemplo criando um usuário??

[11] Comentário enviado por amsouza em 01/03/2013 - 11:55h

Olá iagorafael,

Quando criamos um usuário é importante ter em mente que as permissões que cada arquivo / diretório criado, tem como base a "umask". Isso significa que as permissões no momento da criação do arquivo / diretório, fica completamente transparente ao administrador.

Não sei se entendi corretamente sua pergunta, mas de qualquer forma me informe e detalhe se sua dúvida persistir, abs,

Armando

[12] Comentário enviado por noitso em 24/02/2015 - 16:19h

Muito bom, realmente da para leigos entenderem.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts