Aula #35 - Permissões e Donos de Arquivos



Cada arquivo no Linux tem um dono que tem privilégios para ler, e/ou escrever, e/ou executar o arquivo; Essas permissões são atribuídas de forma independente. 
Tais permissões podem ser concedidas individualmente para usuários, para grupos e para todos os usuários do sistema. 
Este modelo de permissões de arquivo é a parte mais importante do modelo tradicional de segurança.




Quando você faz um ls -l como em:

$ ls -l nome_arquivo

rw-rw-r-- 1 coop aproject 1601 Mar 9 15:04 nome_arquivo

após a primeira letra (que indica o tipo de arquivo), existem mais nove que indicam os direitos de acesso concedidos aos usuários em potencial do arquivo. Estes direitos são divididos em três grupos de três letras:


  •     Dono: o usuário que possui o arquivo (também chamado de usuário).
  •     Grupo: o grupo de usuários que têm acesso.
  •     Outros: todos excluindo o dono e o grupo (também chamado mundo). 


Na listagem acima, o usuário é coop e o grupo é aproject. 


Cada um dos trigêmeos pode ter combinações do seguinte conjunto:

    r: o acesso de leitura é permitido.
    w: acesso de escrita é permitido.
    x: executar é permitido. 

Se a ação não é permitida, um hífen (-) aparece em vez de uma dessas letras.

Além disso, permissões especializadas existem para cada categoria, como as permissões setuid / setgid.

Assim, no exemplo anterior, o usuário coop e membros do grupo aproject têm acesso de leitura e escrita, enquanto os outros tem apenas acesso de leitura. 



As permissões de acesso a arquivos são uma parte importante do sistema de segurança que o Linux usa. Qualquer pedido de acesso a um arquivo requer a comparação das credenciais e da identidade do usuário que solicitou o acesso com as credenciais do arquivo.

A autenticação é concedida, dependendo de um destes três conjuntos de permissões, na seguinte ordem:

    Se o solicitante é o dono do arquivo, as permissões do dono do arquivo são usadas.
    Caso contrário, se o solicitante está no grupo que possui os arquivos, as permissões de grupo são examinadas;
    Se isso não for possível, as permissões para os outros usuários são usadas. 



CHMOD

Alterar permissões de arquivos é feito com comando chmod. Você só pode alterar as permissões dos seus arquivos , ou seja aqueles que são associados ao seu usuário, a menos que você tenha os super poderes do root.

Há maneiras diferentes de utilizar chmod. Por exemplo, para dar ao dono e aos outros a permissão de execução, e ao mesmo tempo remover a permissão de gravação para o grupo:

$ ls -l a_file

-rw-rw-r-- 1 coop coop 1601 Mar  9 15:04 a_file

$ chmod uo+x,g-w a_file

$ ls -l a_file

-rwxr--r-x 1 coop coop 1601 Mar  9 15:04 a_file

onde u representa o usuário (dono), o significa outros (ou mundo), e g representa o grupo. 



As permissões podem ser representados tanto como um bitmap em octal, ou em uma forma simbólica. 
Bitmaps normalmente se parecem com 0755, enquanto representações simbólicas se parace com u+rwx,g+rwx,o+rx.

A sintaxe simbólica pode ser difícil de digitar e lembrar, e por isso a abreviação octal é popular por permitir que você defina todas as permissões em uma única etapa. Isto é feito com um algoritmo simples, e um único número é suficiente para especificar os três bits de permissão para cada entidade. Este número é a soma de:


  •     4 se a permissão de leitura é desejada.
  •     2 se a permissão de gravação é desejada.
  •     1 se a permissão de execução é desejada.


Logo 7 significa ler/gravar/executar, 6 significa ler/escrever, e 5 significa ler/executar.

Ao usar o chmod você deve fornecer um número para cada um dos grupos como em:

$ chmod 755 um_arquivo

$ ls -l um_arquivo

-rwxr-xr-x 1 coop coop 1601 Mar  9 15:04 um_arquivo



Mudar o dono de um arquivo é feito com a ferramenta chown e mudar o grupo de um arquivo é feito com a ferramenta chgrp.

Somente o superusuário pode alterar as propriedades dos arquivos. Da mesma forma, você só poderá mudar as propriedades do grupo do qual você é um membro.

Alterar o grupo de um arquivo é simples:
$ chgrp oprojeto um_arquivo

e mudar o dono também é simples
$ chown coop um_arquivo

você pode mudar os dois ao mesmo tempo com:
$ chown coop:oprojeto um_arquivo

em que você separa o dono do grupo com um ponto.

Estes programas aceitam a opção -R, que significa recursivo. Por exemplo:

$ chown -R coop:oprojeto ./

$ chown -R coop:oprojeto subdir

o primeiro comando vai mudar o dono e o grupo de todos os arquivos no diretório atual e em todos os seus subdiretórios, e apenas no diretório subdir e todos os seus subdiretórios no segundo comando.





Umask


As permissões padrão dadas ao criar um arquivo são de leitura e gravação para o dono, grupo e outros (0666), e para um diretório são leitura/escrita/execução para todos (0777). Entretanto se você fizer:

$ touch afile
$ mkdir adir
$ ls -l | grep -e afile -e adir
drwxrwxr-x 2 coop coop 4096 Sep 16 11:18 adir
-rw-rw-r-- 1 coop coop    0 Sep 16 11:17 afile

você vai perceber que as permissões foram alteradas para 664 para o arquivo e 775 para o diretório. As permissões padrão de criação foram alteradas pelo umask que tem a finalidade de definir quais permissões devem ser negadas. O valor atual pode ser mostrado por:

$ umask
0002

que é o valor mais comum usado para usuários. Este valor é combinado com as permissões de criação padrão para obter o resultado final:

0666 & ~002 = 0664
ou seja:
 rw-rw-r--

Você pode alterar o umask a qualquer momento com o comando umask:

$ umask 0022








ACL de sistemas de arquivo


O Linux contém uma implementação completa das ACLs do POSIX (Access Control Lists ou Listas de controle de Acesso) que estende o modelo de segurança mais simples baseado nas permissões de ler, escrever e executar para usuário, grupo, e outros.

Privilégios específicos podem ser concedidos a usuários ou grupos de usuários que serão avaliados nas tentativas de acesso a determinados objetos ou classes de objetos. Arquivos e diretórios podem ser compartilhadas sem o usar o modo de permissão 777.

Enquanto o kernel do Linux permite o uso de ACLs, é necessário que o sistema de arquivos também suporte este recurso. 
Os principais sistemas de arquivos usados ​​nas distribuições Linux modernas suportam as extensões ACL e pode-se usar a opção -acl durante a montagem. Um conjunto padrão de ACLs é criado durante a instalação do sistema. 




Para ver as ACLs:

$ getfacl arquivo|diretório

Exemplo:

 $ getfacl arquivo1

Para configurar ACLs:

 $ setfacl opções permissões arquivo|diretório

Exemplos:

 $ setfacl -m u:isabelle:rx /home/stephan/arquivo1

 $ setfacl -x u:isabelle    /home/stephan/arquivo

Lembre-se que novos arquivos herdam a ACL padrão (se configurada) do diretório em que os arquivos são criados. 
Também vale lembrar que mv e cp -p preservam as ACLs.


Para remover uma ACL:

$ setfacl -x u:isabel /home/stephan/arquivo1


Para configurar o padrão em um diretório:

$ setfacl -m d:u:isabel:rx somedir

Mais vistos no mês:

As melhores distribuições Linux para 2017

Teste de Performance de Rede com Iperf

TuxMath - Tux, do Comando da Matemática. Ensino e diversão a crianças.

DHCP - Guia Completo

Aula #14 - Os sistemas de arquivos ext2/ext3/ext4

OPNsense - Firewall Open Source

SSD no linux

Ophcrack: Descubra todas as senhas do Windows

Administração de sistema e Deploys: Ansible, Chef, Fabric, Puppet ou Salt?