Usuários e Permissões de arquivos no Linux

Para que seja possível restringir ou permitir o acesso e o uso de determinados recursos a uma ou mais pessoas, é necessário que cada uma tenha um usuário devidamente criado no sistema operacional. O usuário root tem poderes de administrador, o que significa que ele tem acesso a todos os recursos do sistema operacional. Cada conta criada fica armazenada no arquivo “/etc/passwd”, que contém várias informações sobre cada usuário – o “/etc/shadow” armazena senhas criptografadas. Veja o exemplo de uma linha/usuário:

  • viniroger – nome do usuário na máquina, deve ser único;
  • x – senha (criptografada ou em outro arquivo);
  • 1000 – número de identificação do usuário;
  • 1000 – número de identificação do grupo do usuário (veja mais abaixo);
  • vinicius,,monolito_nimbus, – informações adicionais sobre o usuário (nome completo, dados de contato, etc);
  • /home/viniroger – diretório base do usuário;
  • /bin/bash – shell padrão (programa que aceitará e executará os comandos digitados pelo usuário).

Um grupo é um conjunto de um ou mais usuários, cujas informações ficam armazenadas no arquivo “/etc/group”. Analisando uma linha/usuário, temos:

  • users – nome exclusivo do grupo;
  • x – senha do grupo (se tiver);
  • 1000 – número de identificação do grupo;
  • viniroger,fulano,sicrano – usuários do grupo.

Gerenciando usuários

É possível criar e administrar usuários através de interfaces gráficas e do modo texto. Para adicionar um usuário, basta digitar o comando “adduser [opções] nome_do_novo_usuário”.  Seu arquivo de configuração (“/etc/adduser.conf”) pode ser usado para definir automaticamente uma cota (espaço em disco) para cada novo usuário. A criação de uma conta povoa o diretório home do usuário com o conteudo do template de “/etc/skel/”: um conjunto padrão de diretórios e arquivos de configuração.

Para ativar as cotas no sistema de arquivo, isso deve ser indicado no arquivo “/etc/fstab” através das opções usrquota e grpquota. O comando “edquota usuário” (ou “edquota -g grupo”) permite alterar os limites (soft, pode ser excedido temporariamente, e hard). A opção “-t” permite definir um período de tolerância máxima autorizado no qual um limite “soft” pode ser excedido – depois, será tratado como um limite “hard”.

Para adicionar um grupo, use “addgroup nome_do_novo_grupo” – grupos são listados no arquivo /etc/group. Um grupo do Unix é uma entidade que contém vários usuários de forma que eles possam compartilhar arquivos facilmente usando o sistema de permissões integrado ou o uso de certos programas. A opção “adduser -ingroup nome_do_grupo nome_do_usuário” adiciona o usuário criado a um grupo já existente, ao invés de criar um novo grupo para ele. Para eliminar um usuário, basta digitar o comando userdel seguido do nome do usuário (use a opção “-r” para que sua pasta “home” seja apagada) – para mudar grupo e dono ao mesmo tempo, usar a sintaxe “chown usuário:grupo”.

Se qualquer usuário quiser alterar a sua própria senha, basta digitar apenas passwd em um terminal. Quando isso ocorrer, o sistema pedirá que o usuário digite a sua senha atual e, em seguida, pedirá a nova sequência, que deve ser informada duas vezes, para confirmação. Somente o usuário root pode mudar a senha de todos os outros usuários do sistema. O comando “passwd -l nome_usuário” permite bloquear um usuário, enquanto que “passwd -u nome_usuário” desbloqueia. Veja mais no site Infowester.

Permissões de arquivos

Com o objetivo de proteger o sistema e os arquivos dos usuários, existem diferentes tipos de permissões para utilização de arquivos no sistema. Para alterar os grupos e usuários donos de arquivos e diretórios, existem os comandos chown (change owner) e chgrp (change group), que podem ser aplicados recursivamente (opção “-R”). A alteração das permissões dos arquivos é feita através do comando chmod (change mode), que pode ser feita simbolicamente e numericamente. Vejamos a saída de uma listagem detalhada de arquivos (ls -l) para entender melhor:

A primeira coluna à esquerda apresenta as permissões, dividida em tipo, proprietário, grupo e outras permissões. O tipo geralmente é “d” (diretório) ou “-” (arquivo). Dos nove caracteres restantes, os três primeiros indicam permissões do proprietário, os três seguintes indicam as permissões do grupo e os três últimos indicam as permissões para os demais usuários. Cada uma das letras tem um significado:

r => permissão de leitura (read);
w => permissão de gravação (write);
x => permissão de execução (execution);
– => permissão desabilitada.

Para alterar as permissões, você pode usar a seguinte simbologia:

u => usuário
g => grupo
O (letra ‘o’ maiúscula) => outro
a => todos

+ (sinal de adição) => adicionar permissão
– (sinal de subtração) => remover permissão
= (sinal de igualdade) => definir permissão

Exemplos:

O chmod tem a flexibilidade de trabalhar com valores decimais de 0 a 7. Se determinada permissão é habilitada, atribui-se valor 1, caso contrário, atribui-se o valor 0. Por exemplo, a string de permissões r-x r– — na forma numérica fica sendo 101 100 000. Deve-se então converter esse número binário para decimal, conforme a tabela a seguir:

permissoes_linux

Veja esses exemplos equivalentes:

Atribui permissão de leitura e escrita (6) para o dono do arquivo, somente leitura para usuários do mesmo grupo (4) e nenhuma permissão para outros usuários (0). Caso use “777”, tem-se permissão total de leitura, escrita e execução para todos.

Exemplo prático: o usuário fulano criou um diretório e quer que o usuário sicrano possa editar arquivos nele também. Primeiro, adicionar o usuário sicrano ao grupo fulano: sudo usermod -a -G fulano sicrano. Segundo, adicione permissão de escrita ao grupo no diretório em questão: chmod -R g+w diretorio.

O umask (máscara de criação de arquivos) é uma espécie de filtro pelo qual os arquivos passam para determinar suas permissões. Para saber a máscara padrão que o sistema está configurado, basta digitar “umask” no bash. A saída do comando provavelmente será 0002, que corresponde à permissão default do sistema (localizada no arquivo /etc/bashrc): 775. Esse valor (a máscara umask) é calculado entre a diferença da permissão FULL e a permissão que você deseja obter adicionada de um zero à esquerda, ou seja: 777-775 = 002. Essa regra vale para arquivos e diretórios. Já se a permissão for para um ARQUIVO e se os valores forem números pares (0, 2, 4 e/ou 6), deve-se realizar a subtração usando 666. Por exemplo: 666-644 = 022 (adicionando um zero à esquera, a umask é 0022).

Fontes: Infowester e Viva o Linux.