Gerenciamento de Permissões de Arquivo e Propriedade no Linux [Guia Básico]
Como o Linux é um sistema operacional multiusuário, as permissões de acesso a arquivos, diretório e outros dispositivos são necessárias para garantir que os usuários tenham acesso somente aos recursos para os quais eles podem utilizar.
O Gerenciamento de Permissões de Arquivo e Propriedade no Linux é bem fácil, ao contrário do que parece.
Estes recursos podem ser desde um simples arquivo até uma impressora ou um gravador de CD-ROM.
Cada arquivo no Linux tem definido o seu controle de acesso. Este controle é definido por três classes:
- Permissões de usuário: Definem a permissão para o usuário que é o “dono” do arquivo, quem o criou e o mantém;
- Permissões de grupo: Definem a permissão para o grupo de usuários ao qual o arquivo pertence;
- Permissões para outros usuários: Definem a permissão para todos os outros usuários (não dono e não faz parte do grupo).
Classes de Permissões |
E para cada classe podemos definir três tipos de acesso: leitura (r), escrita (w) e execução (x). Quando não há o acesso para aquele determinado tipo, o sistema sinaliza com um traço “-“.
As três primeiras posições da esquerda representam as permissões para o usuário dono do arquivo. Quem cria o arquivo é seu dono.
As três outras representam as permissões relativas a um grupo (pode ser que o usuário dono pertença ao grupo ou não).
As três últimas permissões representam os outros (que não é o usuário dono do recurso e não pertence ao grupo).
Então, ao tentar acessar um recurso, ou você é o dono do arquivo, ou faz parte do grupo a qual o arquivo pertence, ou você é “os outros”.
Como no Linux tudo é um arquivo, isto facilita muito trabalhar com as permissões, já que o esquema é o mesmo para tudo. Não importa se você está falando de um arquivo, diretório, ou recurso de hardware.
Esta divisão cobre praticamente todas as necessidades em termos de segurança.
A opção “-l” do comando ls mostra as permissões dos arquivos:
Como ler a saída do comando ls |
Os arquivos podem ser classificados pelo seu tipo:
- (-) Arquivo comum
- (d) Diretório
- (b) Dispositivo de Bloco
- (c) Dispositivo de Caractere
- (s) Socket
- (p) Pipe (condutores)
- (l) Link Simbólico
A primeira letra que aparece na esquerda do “ls -l” indica o tipo de arquivo. Quando não há letra, mas um traço, o arquivo é comum.
As definições de leitura, escrita e execução têm nuances diferentes para arquivos e diretórios. Veja o quadro a seguir:
Objeto | Leitura (r) | Escrita (w) | Execução (x) |
Arquivo | Permite ler o conteúdo do arquivo. | Permite alterar o conteúdo do arquivo. | Permite executar o arquivo como um programa |
Diretório | Permite listar o conteúdo do diretório. | Permite criar, mover, renomear e apagar arquivos no diretório. | Permite ler e gravar arquivos no diretório, bem como mudar o diretório corrente para o diretório com “cd”. |
As permissões são gravadas em forma binária, com 12 bits para cada arquivo no sistema, e esses bits podem ser representados na forma octal, conforme a figura a seguir:
Bits de Permissões |
Bits de permissões especiais no Linux
Os três primeiros bits da esquerda para a direita são bits de atributos especiais, a saber:
SUID (Set User ID): O bit de SUID afeta somente os arquivos executáveis. Normalmente os programas são executados com a permissão do usuário que os executou. O SUID muda esta condição, fazendo com que o programa seja executado sob as permissões do usuário Dono do arquivo, não importando quem o chamou. O SUID geralmente é utilizado para dar a um programa permissões de root. É preciso que o administrador tenha muito cuidado ao utilizar o SUID, pois um programa mal-intencionado pode ter acesso elevado ao sistema;
SGID (Set Group ID): O bit de SGID funciona como o bit SUID. Ele faz com que os programas executem sob a permissão de grupo do dono do arquivo. Se aplicado em um diretório, o SGID vai fazer com que todos os arquivos criados debaixo deste diretório tenham o mesmo grupo do diretório;
Sticky (Colado na memória): O bit especial chamado de sticky ou bit de colado na memória originalmente fazia com que os programas permaneçam na memória mesmo depois de terminados. Isto fazia com que os programas executem mais rapidamente da próxima vez que forem chamados. Este bit quando aplicado em diretórios faz com que somente o dono do diretório, o dono do arquivo ou o root possam renomear ou apagar arquivos neste diretório.
Nas implementações recentes no Linux e Unix este bit já não é mais usado para “colar na memória”, mas para evitar que arquivos que o tenham habilitado de serem apagados por usuários que não sejam seu dono. Se habilitado em um diretório este bit confere que seu conteúdo possa somente ser apagado pelos respectivos donos dos arquivos nele contidos, o próprio dono do diretório ou o root.
Logicamente, o administrador não precisa escrever as permissões em 12 bits. Desta forma, as permissões podem ser representadas por letras ou em octetos conforme a tabela a seguir:
Octal | Binário | Letras | Descrição |
0 | 000 | — | Sem acesso |
1 | 001 | —x | Somente Execução |
2 | 010 | -w- | Somente Escrita |
3 | 011 | -wr | Somente Escrita e Execução |
4 | 100 | r— | Somente Leitura |
5 | 101 | r-x | Somente Leitura e Execução |
6 | 110 | rw- | Somente Leitura e Escrita |
7 | 111 | rwx | Leitura, Escrita e Execução |
Esta representação pode ser utilizada para cada classe (Dono, Grupo e Outros), bem como para os bits especiais (SUID, SGID, Sticky).
Exemplo:
rwxr-x--- root users Script.sh
No exemplo, o arquivo Script.sh tem permissões de leitura, gravação e execução (rwx) para o usuário root, permissões de leitura e execução (r-x) para o grupo users e nenhuma (—) permissão para outros usuários que não sejam do grupo users.
As permissões do arquivo Script.sh podem ser representadas pelos octetos 750, sendo 7 (4+2+1) para as permissões do dono do arquivo (rwx), 5 (4+1) para as permissões do Grupo (r-x) e 0 (—) para as permissões de Outros.
Desta forma, leitura (r) terá o valor de 4, gravação (w) terá valor 2, e execução terá valor (1). Então, para cada classe de permissão – dono, grupo, ou outros – soma-se os valores da permissão, da forma que rwxr-x—, quando somados por grupo, terão a permissão 750 (4+2+1, 4+0+1, 0+0+0).
Como os bits de permissão especiais são utilizados com pouca frequência, e sob condições especiais, eles são representados pela letra (s) no lugar do (x) de execução para os bits SUID e SGID nas classes de Dono do arquivo e Grupo, e (t) no lugar do (x) para o bit sticky na classe de Outros.
Veja o Exemplo:
rwsr-x--- root users Firewall
O arquivo Firewall tem permissão de leitura, escrita e execução (rws) para o usuário root, leitura e execução (r-x) para usuários do grupo users e nenhuma permissão (—) como Outros.
E ainda possui o bit de SUID habilitado (o “s” no lugar de “x” para o Dono do arquivo).
Desta forma, o programa Firewall tem poderes de superusuário quando executado, já que o seu dono é o root. As permissões dele também podem ser representadas pelo octeto 4750.
Conheça o Curso Online de Pfsense da Certificação Linux!
Você não precisa decorar a tabela de permissões
Basta decorar que as permissões de Leitura têm sempre o valor 4.
As permissões de Gravação têm sempre o valor 2 e as permissões de execução sempre o valor 1.
As três classes de permissões (Dono, Grupo e Outros) são representadas por 3 números.
Se você decompuser cada número, vai encontrar as permissões de cada classe. Veja a figura a seguir:
Permissões em Octetos |
Aprenda muito mais sobre Linux em nosso curso online. Você pode efetuar a matrícula aqui. Se você já tem uma conta, ou quer criar uma, basta entrar ou criar seu usuário aqui.
Gostou? Compartilhe
Tag:/dev, bash, certificaçãolinux, code, Comptia, developer, empreendedorismo, freesoftware, gnu, hack, Linux, linux essentials, linuxfan, linuxfun, linuxmint, lovelinux, LPI, management, nerd, opensource, php, shell, software, softwarelivre, sql, tech, ti, unix