Esse assunto está dividido em duas partes:
Na primeira, conheceremos melhor o aspecto da permissão de um arquivo, em que ela se baseia, como checar as permissões de determinados objetos do sistema de arquivo e como as máscaras são formadas.
Na segunda, veremos os comandos fundamentais para alterar as permissões dos arquivos ou pastas (chmod, chown, chgrp, umask) e aspecto avançados sobre permissões.
Permissões, são conjuntos de direitos que são aplicados a arquivos ou diretórios do sistema de arquivo. Elas garantem que um usuário que não se enquadre nas permissão atribuídas a um arquivo, não tenha acesso ao mesmo, ou não possa executá-lo, ou ainda alterá-lo.
Desta forma pode-se garantir a integridade e/ou sigilosidade dos arquivos e pastas no sistema de arquivos.
Nos sistemas linux, o modelo de permissão, funciona em três níveis independentes:
- Usuário;
- Grupo;
- Todos os outros usuários.
Para checarmos quis permissões um determinado arquivo ou diretório possuem, podemos usar o comando abaixo:
[fred@notebook tmp]$ ls -all
drwxrwxr-x 3 fred casa 4096 Fev 7 11:52 .
drwxr-xr-x 133 fred casa 8192 Fev 8 09:34 ..
-rw-rw-r-- 1 fred casa 49979 Fev 6 09:22 DSC07854.JPG
-rw-rw-r-- 1 fred casa 154913 Fev 7 11:52 DSC07855.JPG
Na primeira coluna temos o identificador do objeto e as permissões aplicadas a ele, na terceira coluna temos o dono do arquivo e na quarta coluna temos o grupo o qual o arquivo faz parte.
Identificador | Dono | Grupo | Objeto |
drwxrwxr-x | fred | casa | . |
drwxr-xr-x | fred | casa | .. |
-rw-rw-r-- | fred | casa | DSC07854.JPG |
-rw-rw-r-- | fred | casa | DSC07855.JPG |
Tomaremos como exemplo, o identificador do arquivo DSC07854.JPG.
Vamos separá-lo da seguinte forma:
- | Tipo do objeto | ||
rw- | Permissão para o dono do arquivo (owner) | ||
rw- | Permissão para o grupo do arquivo (group) | ||
r-- | Permissão para o outros (others) |
O primeiro caractere '-' especifica o tipo do arquivo, no caso destacado acima, ele é um arquivo regular. É bom frisar que o linux trata os diretórios com arquivos, logo, o modelo aplica-se igualmente a eles. Os tipos possíveis para esse campo são:
Indicador | Significado | ||
d | diretório | ||
l | link | ||
c | arquivo especial de caractere | ||
b | arquivo de bloco | ||
p | canal (fifo) | ||
s | socket | ||
- | arquivo normal |
O resto do campo de permissão, é composto por três grupos de três caracteres, representando o usuário, o grupo e todos os outros, respectivamente.
Os valores convencionais para esses campos são:
r | Read (permissão de leitura) | ||
w | Write (permissão de gravação/deleção) | ||
x | Execution (permissão de execução) | ||
- | Permissão desabilitada |
Com isso, percebemos que o arquivo regular abaixo possui as seguintes permissões:
rw- | O Dono possui permissão de leitura e escrita | ||
rw- | O Grupo possui permissão de leitura e escrita | ||
r-- | Todos os outros possuem apenas permissão de leitura | ||
fred | O Dono do arquivo é o usuário fred | ||
casa | O grupo do arquivo é casa |
Além da forma acima, podemos especificar as permissões de um arquivo, usando o modelo octal abaixo:
Permissão | Binário | Decimal | |
--- | 000 | 0 | |
--x | 001 | 1 | |
-w- | 010 | 2 | |
-wx | 011 | 3 | |
r-- | 100 | 4 | |
r-x | 101 | 5 | |
rw- | 110 | 6 | |
rwx | 111 | 7 |
Poderíamos especificar a permissão do arquivo das seguintes maneiras:
110110100
664 – Mais comum
Com isso, podemos criar o quadro abaixo contendo as permissões em forma decimal:
Permissões | Decimal | ||
-------- | 000 | ||
r-------- | 400 | ||
r--r--r-- | 444 | ||
rw------- | 600 | ||
rw-r--r-- | 644 | ||
rw-rw-r-- | 666 | ||
rwx------ | 700 | ||
rwxr-x--- | 750 | ||
rwxr-xr-x | 755 | ||
rwxrwxrwx | 777 |
O conhecimento da tabela acima é fundamental a administrador de sistemas. No dia a dia é muito comum se depara com a necessidade de alterar as permissões de arquivos e pastas.
Permissões Especiais
Ainda existe três permissões que podem ser atribuídas a um objeto do sistema de arquivos:
Suid
Se o bit de SUID for ativo para um arquivo, sempre que esse arquivo for executado, ele rodará com as permissões do dono do arquivo. Para exemplificar, imaginemos o aplicativo teste.sh cujo dono seja o root. Se o usuário fred executar esse arquivo, ele será executado com as permissões do usuário root.
O bit SUID é representado pela letra s no local do bit de execução w no campo de permissão do usuário. Vejamos o exemplo abaixo:
[root@localhost fred_m]# ls -all /usr/bin/passwd
-rwsr-xr-x 1 root root 29016 2007-09-25 18:28 /usr/bin/passwd
Sgid
De forma semelhante, podemos atribuir o bit SGID no campo da permissão referente ao grupo. Em um diretório que possua o bit SGID setado, todos os arquivos criados dentro dele, pertencerão ao mesmo grupo do diretório corrente ao invés de pertencer ao grupo do usuário que o criou. Veja o exemplo abaixo:
[root@localhost Público]# ls -all
drwxrwsr-x 3 fred_m fred_m 4096 2008-01-11 22:25 teste
Esta permissão é útil quando queremos utilizar um diretório no qual várias pessoas do mesmo grupo compartilharão arquivos nele.
Obs: S = apenas suid ou sgid
s = suid/sgid + x(execução)
Stick
Ao se ativar esse permissão em um diretório, os arquivos criados/contidos nele só poderão ser apagados pelo seu dono. Imaginemos o diretório /tmp no qual todos os usuários possuem acesso total. Neste diretório os usuários só podem apagar os arquivos que eles criaram.
Essa permissão só é aplicada a diretórios e é expressão no bit de execução do campo de permissão de outros. Ela é expressa pela letra t.
[root@localhost /]# ls -all /
drwxrwxrwt 73 root root 20480 2008-01-11 22:11 tmp
Obs: T = apenas stick
t = stick + x(execução)
Da mesma forma que as permissões convencionais, as permissões especiais podem ser representadas pelo modelo octal conforme tabela abaixo:
Digito | SUID | SGID | Stick |
0 | - | - | - |
1 | - | - | sim |
2 | - | sim | - |
3 | - | sim | sim |
4 | sim | - | - |
5 | sim | - | sim |
6 | sim | sim | - |
7 | sim | sim | sim |
Nenhum comentário:
Postar um comentário