Há muito tempo eu queria fazer um tópico sobre o fstab.
Aproveitei esses últimos dias do ano em que fui obrigado a permanecer em casa e fiz.
Como para entender bem algumas opções (quarta coluna) do fstab tive que pesquisar muito sobre permissões, acabei acumulando um material bem grande e, quando vi, já tinha transformado tudo em outro tópico.
Espero que seja útil também para a pesquisa do Fórum.
Utilidade da permissão de acesso a arquivos e diretóriosO sistema Linux trabalha com um modo de permissão que protege o sistema de arquivos (File System) de:
1-Acesso indevido de pessoas ou programas não autorizados.
2-Um programa mal intencionado, por exemplo, apagar um arquivo que não deve, enviar arquivos para outra pessoa ou fornecer acesso da rede para que outros usuários invadam o sistema.
3-Usuários iniciantes (ou mal intencionados) instalarem programas enviados por terceiros sem saber para que eles realmente servem e que causem danos irreversíveis em seus arquivos, seu micro ou sua empresa.
Basicamente são essas as utilidades.
Dono, Grupo, OutrosO sistema Linux define o acesso aos arquivos por donos, grupos e outros usuários:
Dono = O proprietário do arquivo ou criador do arquivo.
Grupo = Usuários que fazem parte do grupo do proprietário.
Outros = Não são os proprietários e nem fazem parte do grupo.
Tipos de permissões. No Linux existem três tipos de permissão para interagir os acessos a um arquivo/diretório com o usuário:
r : Permissão de leitura para um arquivo e, permitir listar o conteúdo de um diretório através do comando ls
<diretório>.
w : Permissão de gravação e exclusão para um arquivo/diretório.
x : Permissão para executar um arquivo, se for um arquivo binário ou um script e, se for um diretório permitir acesso a ele através do comando cd <diretório>.
As permissões Leitura, Escrita e Execução definem o acesso a um arquivo pelo dono, grupo e outros usuários do sistema:
As 3 letras (
rwx) são agrupadas da seguinte forma (total de dez letras ou caracteres) :
Exemplo A :-rwxrwxrwx aluno básico May 08 22:07 teste
Exemplo B : drwxr--r-- aluno básico May 08 22:20 teste
1- O primeiro caractere diz qual é o tipo do objeto .
Principais tipos :
- : para arquivo comum
d : para diretório
Outros :
l : para link simbólico
b : para dispositivos de bloco (oferecem grandes quantidades de dados de cada vez)
c : para dispositivo de caracteres (oferecem dados de um caractere de cada vez)
2- Da segunda à quarta letra diz qual é a permissão de acesso ao dono do arquivo.
3- Da quinta à sétima letra diz qual é a permissão de acesso ao grupo do arquivo.
4- Da oitava à décima letra diz qual é a permissão de acesso para os outros usuários.
No
exemplo A acima trata-se de um arquivo, (
"-" como primeiro caractere).
Da segunda à quarta letra (
rwx) é a permissão de acesso ao dono.
Da quinta à sétima letra (
rwx) é a permissão do grupo.
Da oitava à décima letra (
rwx) é a permissão dos outros usuários.
Nesse exemplo, todos (dono, grupo, outros usuários) tem permissão total (
rwx=leitura, gravação, execução) sobre o arquivo.
No
exemplo B trata-se de um diretório, (
"d" como primeiro caractere).
Do mesmo modo que em A, da segunda à quarta letra (
rwx) corresponde à permisão do dono, da quinta à sétima letra (
r--) à permissão do grupo e, da oitava à décima letra (
r--) à permissão de acesso para outros usuários.
Como se pode ver o dono tem permissão de leitura, gravação e execução e, o grupo e outros usuários só de leitura.
Outras permissões dos arquivos e subdiretórios desse nosso diretório simbólico (comando ls -l):
Permissões dono grupo tamanho Atualização Nome Conclusão
drwxrwxr-x aluno básico 1024 May 10 22:07 teste1 diretório,leitura, escrita e, execução para
dono e grupo e, leitura e execução para outros usuários.
drwx------ aluno básico 1024 May 10 21:50 teste2 diretório,leitura, escrita e execução para o
dono e, nenhuma permissão para o grupo e
outros usuários.
-rw-rw---- aluno básico 4585 May 10 22:07 teste3 arquivo, leitura e escrita para dono e grupo
e, nenhuma permissão para outros usuários.
-rw-rw-r-- aluno básico 5258 Apr 23 12:26 teste4 arquivo, leitura e escrita para dono e grupo
e, escrita para outros usuários.
-rwxrwsr-- aluno básico 4785 Nov 15 10:50 teste7 arquivo, leitura, escrita e, execução para
dono e grupo, escrita para outros usuários.
O usuário root não tem nenhuma restrição de acesso ao sistema.
As permissões de acesso (leitura, gravação, execução) para donos, grupos e outros usuários são independentes.
Isso que dizer que mesmo que você seja o dono do arquivo e definir o acesso do dono (através do comando chmod) como somente leitura (r) mas o acesso dos outros usuários como leitura e gravação (rw), você somente poderá ler este arquivo mas os outros usuários poderão ler e gravar.
Permissões especiais.1-SUID - com esta permissão, o usuário executa o arquivo ou acessa o diretório como se fosse o dono.
2-SGID - com esta permissão, o usuário executa o arquivo ou acessa o diretório como se fosse membro do grupo ao qual pertence o arquivo/diretório.
3-sticky bit - o usuário pode criar/alterar/deletar (apenas) os seus próprios arquivos no diretório que possui esta permissão, mesmo que não seja o dono do diretório e nem membro do grupo ao qual o diretório pertence. Quando o sticky bit é usado em um arquivo, significa que este arquivo é compartilhado por vários usuários.
Maiores detalhes sobre essas permissões podem ser encontradas nos links de consulta disponibilizados aqui no tópico.
Definir (mudar) permissões de acesso a um arquivo ou diretório. 1- chmod (modo literal)Dar e negar acesso a um arquivo ao Dono, Grupo, e a Outros usuários do sistema pelo modo literal é a maneira mais fácil de se entender, usa-se as letras :
u : (User) Proprietário do arquivo;
g : (group) Usuários que fazem parte do grupo do proprietário.
o : (Others) Outros usuários (não é o dono e nem faz parte do grupo).
a : (All) Todos.
e, os símbolos :
+ : Adicionar permissão.
- : Remover permissão.
= : Igualar permissão.
Exemplos :
chmod a+rwx arquivo.sh = Dá controle total (+rwx) sobre o arquivo para o Dono, Grupo, e os outros
usuários do sistema (a).
chmod g-rw arquivo.sh = Remove o acesso (-) à leitura e escrita (rw) aos usuários do grupo (g).
chmod o-r teste.txt = Retira (-) a permissão de leitura (r) do arquivo teste.txt para os outros
usuários (o), 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 (x) do arquivo teste.txt para o dono e
outros usuários do arquivo(uo).
chmod a+x teste.txt = Inclui (+) a permissão de execução (x) do arquivo teste.txt para o dono,
grupo e outros usuários (a).
chmod a=rw teste.txt = Define a permissão de todos os usuários exatamente (=) para leitura e
gravação (rw) do arquivo teste.txt.
Aplicando SUID no modo literal :
chmod u+s programa.sh -rwsr-xr-x
2- chmod (modo octal)Pela tabela :
Valor Octal Significado
0 nenhuma permissão de acesso
1 permissão de execução (x)
2 permissão de gravação (w)
3 permissão de gravação e execução(wx)
4 permissão de leitura (r)
5 permissão de leitura e execução (rx)
6 permissão de leitura e gravação (rw)
7 permissão de leitura, gravação e execução (rwx)
Nenhuma permissão, use 0.
Somente permissão de execução, use 1.
Somente permissão de gravação, use 2.
Permissão de execução/gravação, use 3 (equivale a 1+2 / Executar+Gravar).
Somente a permissão de leitura, use 4.
Permissão de leitura/execução, use 5 (equivale a 1+4 / Executar+Ler).
Permissão de leitura/gravação, use 6 (equivale a 2+4 / Gravar+Ler).
Permissão de leitura/gravação/execução, use 7 (equivale a 1+2+4) / Executar+Gravar+Ler).
Exemplos :
chmod 777 arquivo.sh Dá controle total sobre o arquivo para o Dono (1+2+4=7), Grupo (1+2+4=7), e outros usuários do sistema (1+2+4=7).
chmod 766 arquivo.sh Dá acesso total ao dono do arquivo (1+2+4=7), e o acesso leitura e escrita para o grupo (2+4=6) e outros usuários do sistema (2+4=6).
chmod 640 arquivo.shDá acesso de leitura e escrita para o dono do arquivo (2+4=6), para os usuários do grupo o acesso somente a leitura do arquivo (4) e para os outros usuários do sistema nega qualquer tipo de acesso ao arquivo (0).
chmod 764 testeNesse exemplo o dono tem permissão de acesso total (1+2+4=7), o grupo leitura e gravação (2+4=6) e, os outro usuários, só leitura (4).
chmod 751 testePermissão total para o dono (1+2+4=7), leitura e execução para o grupo (1+4=5) e, somente execução para os outros usuários.
Atenção:
chmod 40 testeO exemplo acima 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).
chmod 64 teste.txtDefine permissão de leitura (4) para os outros usuários do sistema e permissão de leitura e gravação (2+4=6) para os usuários do mesmo grupo do arquivo teste.txt.
Os dois últimos exemplos com apenas dois números são para explicar que deve-se ler da direita para esquerda e que a permissão de acesso do dono do arquivo não foi modificada.
Finalizando : para aplicar a permissão SUID : (só no campo Dono) :
a) modo literal :
chmod u+s programa.sh (s minúsculo) -rwsr-xr-x (s depois)
b) modo octal :
chmod 4750 programa.sh (número 4) -rwsr-x---
Para mais detalhes consultar os links disponibilados no tópico.
O comando
chmod tem também as 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.
-c, --changes = Mostra somente arquivos que forem alterados.
-R, --recursive = Altera dono e grupo de arquivos no diretório atual e sub-diretórios.
3- umask A
umask (user mask) são 3 números que definem as permissões iniciais do dono, grupo e outros usuários que o arquivo/diretório receberá quando for criado ou copiado.
Quando criamos um arquivo ou diretório, os mesmos já vem com uma permissão padrão, para evitar que outros usuários e membros de outros grupos possam modificar os arquivos criados por você.
Para saber qual máscara de arquivo que seu sistema esta usando, bastar digitar o comando umask sem parâmetros.
O valor padrão da umask na maioria das distribuições atuais é 022.
Digitando umask o terminal me retornou o resultado 0022.
Sigificado do número
0 : Indica apenas que é o valor de uma umask.
0 : Dá acesso total ao arquivo criado pelo usuário.
2 : Dá acesso de Leitura e execução do arquivo, no caso de um diretório permite que este seja
acessado através do comando \"cd <diretório>\", ao grupo.
2 : Os mesmos direitos acima, só que para os outros usuários do sistema.
Por padrão,
as permissões iniciais de um arquivo são 666 (leitura e gravação para todo e qualquer usuário do sistema);
as permissões iniciais de um diretório são 777 (leitura, gravação e acesso para todo e qualquer usuário do sistema).
Quando um usuário cria um arquivo (ou diretório), o sistema associa a este arquivo (diretório) as permissões padrão menos o valor do umask.
Para alterar o valor de umask, basta incluir o novo valor após o comando umask. Por exemplo, o comando
umask 002define que, por padrão, novos arquivos terão permissão 664 (666-002), enquanto novos diretórios terão permissão 775 (777-002).
umask 000 arquivos por padrão terão permissão 666 (666-000) e, diretórios permissão 777 (777-000).
Mudando o dono e o grupo de um arquivo/diretórioUsa-se o comando
chown chown aluno teste.txt - Muda o dono do arquivo teste.txt para aluno.
chown aluno.users teste.txt - Muda o dono do arquivo teste.txt para aluno e seu grupo para users.
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.
-c, --changes = Mostra somente arquivos que forem alterados.
-R, --recursive = Altera dono e grupo de arquivos no diretório atual e sub-diretórios.
Suponha, por exemplo, a existência de um diretório de nome aluno. Queremos que este diretório e todo o seu conteúdo passe a pertencer ao usuário josé e ao grupo informática. Podemos, então, digitar o comando :
chown -Rc josé.informatica alunopara alterar o dono e o grupo do diretório teste e de todos os arquivos e diretórios que estão hierarquicamente abaixo do diretório teste. Como o argumento -c é usado, será mostrada a lista dos arquivos e diretórios que foram alterados.
É importante observar que este comando pode ser usado para alterar apenas o dono do arquivo, ou seja, você não é obrigado a especificar o nome do grupo no comando.
Para mudar só o grupo de um arquivo/diretório o comando é
chgrp com as mesmas opções do
chown.
Links consultados :
http://focalinux.cipsga.org.br/guia/iniciante/ch-perm.htmlhttp://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=1541&pagina=4http://renator.wordpress.com/2007/03/20/entendendo-as-permissoes/http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=1812http://www.uniriotec.br/~morganna/guia/umask.htmlhttp://www.uniriotec.br/~morganna/guia/permissao.htmlhttp://www.uniriotec.br/~morganna/guia/chmod.html