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:x:1000:1000:vinicius,,monolito_nimbus,:/home/viniroger:/bin/bash
  • 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:x:1000:viniroger,fulano,sicrano
  • 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:

drwxr-xr-x 2 viniroger webdevel 4096 Set 19 08:13 www
-rw-r--r-- 1 viniroger webdevel 2838991 Ago 12 22:02 guia_idl.pdf

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:

$ sudo chown -R www-data:webdevel www #altera o dono do arquivo ou diretório e pode também alterar o grupo a que este pertence; -R=recursivamente
$ sudo chmod -R g+wrx ../www/ #mudar permissão do grupo (g) para escrita, leitura e execução de todos os arquivos da pasta www
$ sudo chmod -R o-wx ../www/ #tirar todas as permissões, exceto leitura, dos outros usuários
$ sudo chmod -R u+wrx ../www/ #permissão total para user logado, no caso, o root

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:

$ sudo chmod u+rw-x arquivo.ext #alterando permissões do dono
$ sudo chmod g+r-wx arquivo.ext #alterando permissões do grupo
$ sudo chmod o-rwx arquivo.ext #alterando permissões dos outros usuários
$ sudo chmod 640 arquivo.ext #alterando permissões de todos ao mesmo tempo

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.

Compartilhe o link desse texto, mas se for copiar algum trecho, cite a fonte. Valorize nosso trabalho.
Mais informações na licença de uso do site.

3 Pingbacks/Trackbacks