O documento discute permissões de acesso em sistemas Linux, definindo dono, grupo e outros usuários para arquivos e diretórios. Ele explica como visualizar e modificar permissões usando os comandos chmod, chown e chgrp.
Sistemas Operacionais - Gnu/Linux Permissões de Arquivos Diretórios
1. 1 Sistemas Operacionais Luiz Arthur
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 que eles podem utilizar. Estes
recursos podem ser desde um simples arquivo até uma impressora ou um
gravador de CD-ROM.
Dono Grupo Outros
d r w x r w x r w x
Tipos de arquivo: Escrita
Gravação
d diretório
- arquivo Leitura
l link
b dispositivo de bloco
c dispositivo de caracteres
Cada arquivo no Linux tem definido seu controle de acesso. Este controle é
definido por três classes:
●Permissão de usuário: Definem a permissão para o usuário que é o “dono” do
arquivo, quem o criou e o mantém.
●Permissão de grupo: Definem a permissão para o grupo de usuários ao qual ele
pertence.
●Permissão para outros usuários: Definem a permissão para todos os outros
usuários (não dono e de outro grupo).
2. 2 Sistemas Operacionais Luiz Arthur
Todos os recursos representados por arquivos e diretórios têm suas permissões
relacionadas. Podemos visualizar as permissões com instruções específicas, e elas
são sempre representadas por combinações de 9 caracteres (por exemplo: rwxr-
xrw-).
As três primeiras posições representam as permissões para o usuário. As três
outras representam as permissões relativas a um grupo e as três ultimas são
referentes os outros usuários que não o dono e o grupo.
As definições de leitura (r - read) , escrita (w - write) e execução (x - execute) têm
nuances diferentes se estamos trabalhando com arquivos ou diretórios.
Objetivo Leitura (r) Gravação (w) Execução (x)
Arquivo Permite ler o Permite alterar o Permite executar
conteúdo do arquivo conteúdo do arquivo o arquivo como um
programa
Diretório Permite listar o Permite criar e apagar Permite ler e
conteúdo do diretório. Arquivos no diretório. gravar arquivos no
diretório.
3. 3 Sistemas Operacionais Luiz Arthur
As permissões dos arquivos e diretórios são gravadas de forma binária com 12
bits de tamanho.
Leitura (Dono) Leitura (Dono)
Gravação (Dono) Gravação (Dono)
Execução (Dono) Execução (Dono)
0 0 0 0 0 0 0 0 0 0 0 0
Execução (Dono)
SUID
Gravação (Dono)
SGID
Leitura (Dono)
Sticky
Os três primeiros bits da esquerda para a direita são bits de atributos especiais, e
representam:
SUID (Set User ID): O bit de SUID afeta somente os arquivos executáveis.
Normalmente 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 importa quem o
chamou. O SUID geralmente é utilizado para dar ao 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.
4. 4 Sistemas Operacionais Luiz Arthur
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 colado na
memória faz com que os programas permaneçam na memória mesmo depois de
terminados. Isto faz 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.
Octal Binário Letras Descrição
0 000 --- Sem acesso
1 001 --x Somente execução
2 010 -w- Somente escrita
3 011 -wx Somente escrita e execução
4 100 r-- Somente leitura
5 101 r -x Somente leitura e execução
6 110 rwx Somente leitura e escrita
7 111 r wx Leitura, escrita e execução
5. 5 Sistemas Operacionais Luiz Arthur
Em adição as três permissões básicas (rwx), existem permissões de acesso
especiais (stX) que afetam arquivos executáveis e diretórios:
s – Substitui o bit de execução (x) do dono e neste caso representa o SUID.
Quando o s substitui o bit de execução (x) do grupo ele indica o uso do SGID.
Ambos SUID e SGID podem aparecer ao mesmo tempo no mesmo
arquivo/diretório. A permissão de acesso especial s somente pode aparecer no
campo Dono e Grupo. O S (s caixa alta) indica que não existe permissão de
execução.
t – Representa o stick bit, a permissão especial t, pode ser especificada somente
no campo outros usuários das permissões de acesso. O T assim como o S indica
que não existe permissão de execução (x) naquela posição.
6. 6 Sistemas Operacionais Luiz Arthur
chmod
Muda a permissão de acesso a um arquivo ou diretório. Com este comando você
pode escolher se os usuários terão permissões para ler, gravar, executar um
arquivo ou arquivos.
Sempre que um arquivo é criado, seu dono é o usuário que o criou e seu grupo é
o grupo do usuário.
chmod [opções] [permissões] [diretório/arquivo]
Onde:
diretório/arquivo - Diretório ou arquivo que terá sua permissão mudada.
Opções:
-v, --verbose
Mostra todos os arquivos que estão sendo processados.
-f, --silent
Semelhante a opção -v, mas só mostra os arquivos que tiveram as permissões
alteradas.
7. 7 Sistemas Operacionais Luiz Arthur
-R, --recursive
Muda permissões de acesso do diretório/arquivo no diretório atual e sub-
diretórios.
ugoa+-=rwxXst
ugoa: Controla que nível de acesso será mudado. Especificam, em ordem,
usuário (u), grupo (g), outros (o), todos (a).
+-=: + coloca a permissão, - retira a permissão do arquivo e = define a permissão
exatamente como especificado.
rwx - r permissão de leitura do arquivo. w permissão de gravação. x permissão
de execução (ou acesso a diretórios).
chmod não muda permissões de links simbólicos, as permissões devem ser
mudadas no arquivo alvo do link.
É possível copiar permissões de acesso do arquivo/diretório, por exemplo, se o
arquivo teste.txt tiver a permissão de acesso r-xr----- e você digitar chmod
o=u, as permissões de acesso dos outros usuários (o) serão idênticas ao do dono
(u). Então a nova permissão de acesso do arquivo teste.txt será r-xr--r-x
8. 8 Sistemas Operacionais Luiz Arthur
Exemplos de permissões de acesso:
chmod g+r *
Permite que todos os usuários que pertençam ao grupo dos arquivos (g) tenham
(+) permissões de leitura (r) em todos os arquivos do diretório atual.
chmod o-r teste.txt
Retira (-) a permissão de leitura (r) do arquivo teste.txt para os outros
usuários (usuários que não são donos e não pertencem ao grupo do arquivo
teste.txt).
chmod uo+x teste.txt
Inclui (+) a permissão de execução do arquivo teste.txt para o dono e outros
usuários do arquivo.
chmod a+x teste.txt
Inclui (+) a permissão de execução do arquivo teste.txt para o dono, grupo e
outros usuários.
chmod a=rw teste.txt
Define a permissão de todos os usuários exatamente (=) para leitura e gravação
do arquivo teste.txt.
9. 9 Sistemas Operacionais Luiz Arthur
Modo de permissão octal com o chmod
Ao invés de utilizar os modos de permissão +r, -r, etc, pode ser usado o modo
octal para se alterar a permissão de acesso a um arquivo. O modo octal é um
conjunto de oito números onde cada número define um tipo de acesso diferente.
Um modo fácil de entender como as permissões de acesso octais funcionam, é
através da seguinte tabela:
1 = Executar
2 = Gravar
4 = Ler
Basta agora fazer o seguinte:
Somente permissão de execução, use 1.
Somente a permissão de leitura, use 4.
Somente permissão de gravação, use 2.
Permissão de leitura/gravação, use 6 (equivale a 2+4 / Gravar+Ler).
Permissão de leitura/execução, use 5 (equivale a 1+4 / Executar+Ler).
Permissão de execução/gravação, use 3 (equivale a 1+2 / Executar+Gravar).
Permissão de leitura/gravação/execução, use 7 (equivale a 1+2+4 /
Executar+Gravar+Ler).
10. 10 Sistemas Operacionais Luiz Arthur
Exemplos:
chmod 764 teste
Os números são interpretados da direita para a esquerda como permissão de
acesso aos outros usuários (4), grupo (6), e dono (7). O exemplo anterior faz os
outros usuários (4) terem acesso somente leitura (r) ao arquivo teste, o grupo (6)
ter a permissão de leitura e gravação (w), e o dono (7) ter permissão de leitura,
gravação e execução (rwx) ao arquivo teste.
chmod 40 teste
O exemplo anterior define a permissão de acesso dos outros usuários (0) como
nenhuma, e define a permissão de acesso do grupo (4) como somente leitura (r).
Note com somente dois números a permissão de acesso do dono do arquivo não é
modificada (leia as permissões de acesso da direita para a esquerda!).
chmod 751 teste
O exemplo anterior define a permissão de acesso dos outros usuários (1) para
somente execução (x), o acesso do grupo (5) como leitura e execução (rx) e o
acesso do dono (7) como leitura, gravação e execução (rwx).
11. 11 Sistemas Operacionais Luiz Arthur
chown
Muda dono de um arquivo/diretório. Opcionalmente pode também ser usado para
mudar o grupo.
chown [opções] [dono.grupo] [diretório/arquivo]
Onde:
dono.grupo
Nome do dono.grupo que será atribuído ao diretório/arquivo. O grupo é
opcional.
diretório/arquivo
Diretório/arquivo que o dono.grupo será modificado.
Opções:
-v, --verbose
Mostra os arquivos enquanto são alterados.
-f, --supress
Não mostra mensagens de erro durante a execução do programa.
12. 12 Sistemas Operacionais Luiz Arthur
-c, --changes
Mostra somente arquivos que forem alterados.
-R, --recursive
Altera dono e grupo de arquivos no diretório atual e sub-diretórios.
O dono.grupo pode ser especificado usando o nome de grupo ou o código
numérico correspondente ao grupo (GID).
Você deve ter permissões de gravação no diretório/arquivo para alterar seu
dono/grupo.
chown joao teste.txt - Muda o dono do arquivo teste.txt para joao.
chown joao.users teste.txt - Muda o dono do arquivo teste.txt para joao e
seu grupo para users.
chown -R joao.users * - Muda o dono/grupo dos arquivos do diretório atual e
sub-diretórios para joao/users (desde que você tenha permissões de gravação
no diretórios e sub-diretórios).
13. 13 Sistemas Operacionais Luiz Arthur
chgrp
Muda o grupo de um arquivo/diretório.
chgrp [opções] [grupo] [arquivo/diretório]
Onde:
grupo
Novo grupo do arquivo/diretório.
arquivo/diretório
Arquivo/diretório que terá o grupo alterado.
opções:
-c, --changes
Somente mostra os arquivos/grupos que forem alterados.
-f, --silent
Não mostra mensagens de erro para arquivos/diretórios que não puderam ser
alterados.
14. 14 Sistemas Operacionais Luiz Arthur
-v, --verbose
Mostra todas as mensagens e arquivos sendo modificados.
-R, --recursive
Altera os grupos de arquivos/sub-diretórios do diretório atual.
Atividade
1. Com o usuário aula crie o diretório /tmp/permissao.
2. Copie o diretório /usr/share/doc/samba-3.0.10/ e todo o seu conteúdo para
o diretório /tmp/permissao, conservando as permissões originais.
3. Agora altere o dono do diretório de forma recursiva /tmp/permissao/samba-
3.0.10/ para o usuário aula.
4. Mova todo o conteúdo do diretório /tmp/permissao/samba-3.0.10/docs para
o diretório /tmp/permissao/
5. Altere o grupo do diretório /tmp/permissao/doc para root.
15. 15 Sistemas Operacionais Luiz Arthur
6. Altere a permissão do diretório /tmp/permissao/doc de forma que: o dono
tenha permissão de leitura e gravação em todos os arquivo/diretórios, o grupo
não tenha permissão alguma, e os outros usuários tenham permissão total.
7. Com o usuário aluno, altere o arquivo /tmp/permissao/docs/THANKS,
apagando todo texto da linha 18 para frente e acrescentando no final deste
arquivo seu nome e e-mail.
8. Com o usuário aluno, apague o diretório /tmp/permissao/docs/registry/,
bem como todo o seu conteúdo. Caso as permissões não permitam isto atribua
permissões de forma que este usuário possa fazer tal operação.