Gerenciamento de Usuários e Grupos no Linux

Ricardo Reis
7 min readApr 22, 2020

--

Estudo de arquivos e comandos para o Administrador do sistema poder administrar os usuários e grupos dentro do Linux.

Arquivos de configurações

As informações sobre os usuários ficam armazenadas em uma série de arquivos de configuração do sistema.

Os arquivos principais são:

  • /etc/passwd
  • /etc/group
  • /etc/shadow
  • /etc/gsshadow

/etc/passwd

Esse arquivo contém uma lista das contas dos usuários do sistema.

É uma lista de todos os usuários, não só os humanos mas também as contas internas do sistema (contas administrativas e contas de serviços).

O nome “passwd” vem da palavra password, porque antigamente ele era utilizado para guardar senhas criptografadas. Hoje as senhas ficam armazenadas no arquivo “/etc/shadow”.

Esse arquivo é legível por qualquer um no sistema.

Ele pode ser editado com qualquer editor de texto, porém não é recomendável. O ideal é alterar as informações desse arquivo usando um comando específico usermod que está em /usr/sbin/usermod.

Parte do conteúdo do arquivo “passwd”

Cada linha do arquivo traz informações de um usuário do sistema. Todas as linhas possuem as mesmas “colunas” de informações, sendo que as colunas são separadas por dois pontos (:).

Normalmente são 7 colunas de informação em cada linha.

ricardo:x:1000:1000:Ricardo,,,:/home/ricardo:/bin/bash
1 :2: 3 : 4 : 5 : 6 : 7

Significado de cada coluna:

1 - Nome de usuários (de 1 até 32 caracteres).2 - Senha (o "x" indica que é uma senha armazenada no /etc/shadow).3 - UID (Identificação do usuário, pode variar de 0 até 65535).4 - GID (Identificação do grupo, 1000 é grupo primário).5 - Comentários (informações extras, nome completo, telefone...), esse campo também é conhecido como campo GECOS (General Eletric Comprehensive Operating Supervisor).6 - Diretório home (caminho do diretório padrão).7 - Shell padrão do usuário (programa que roda ao fazer login).

Importante

Não usar números para criar nomes de usuários.

Usuário root:

root:x:0:0:root:/root:/bin/bash 

/etc/group

O arquivo /etc/group define os grupos aos quais os usuários pertencem no Linux.

Os grupos são usados para aplicar permissões de acesso a recursos do sistema.

E os grupos também permitem o gerenciamento e monitoramento de usuários.

root:x:0:
1 :2:3:4

Significado de cada coluna:

1 - Nome do grupo. 2 - Senha do grupo (geralmente não é usada)3 - GID do grupo (identificação do grupo)4 - Lista de membros, separados por vírgula. No exemplo acima está em branco porque o usuário não aparece na listagem do seu próprio grupo padrão (grupo primário).

/etc/gshadow

O arquivo \etc\gshad possui as senhas criptografadas dos grupos (caso tenha senha), listagem de membros e informações administrativas.

adm:*::syslog,ricardo
1 :2:3:4

Significado de cada coluna:

1 - Nome do Grupo.2 - Senha criptografada (caso houver). Se houver um sinal de ponto de exclamação (!) indica que os usuários que não são do grupo não podem acessa-lo.3 - Administradores do grupo. (O admin adiciona ou remove usuários ao grupo). Quando está em branco é porque o grupo não possui administradores.4 - São os membros do grupo.

Comandos

Comandos utilizados para visualizar informações dos grupos.

groups

O comando groups permite descobrir de quais grupos um usuário é membro.

Sintaxe:

groups [nome_do_usuário]

id

O comando id mostra os IDs de grupos, IDs de usuários e mostra de quais grupos esse usuário é membro.

Sintaxe:

id [nome_do_usuário] 

Ou com opções:

id [opções] [nome_do_usuário]

Opções:

-g (ou --group)   = Mostra o GID do grupo primário do usuário 
-G = Mostra todos os GIDs dos grupos do usuário.
-nG = Mostra os nomes dos grupos em vez dos GIDs.

/etc/shadow

O arquivo /etc/shadow contém as senhas criptografadas dos usuários e outras informações sobre as contas.

Ele somente é legível pelo usuário root ou por um usuário que tenha permissão específica para ler.

Possui 9 campos (colunas separadas por dois pontos :) de informações:

syslog:*:18113:0:99999:7:::
1 :2: 3 :4: 5 :6:7:8:9

Significados das colunas:

1 - Nome da conta do usuário.2 - Senha 
! = não tem senha;
* = conta desativada (não consegue fazer login);
![senha] = conta travada;
!! = senha nunca configurada
3 - É a última modificação representada pelo número de dias desde 1970 até o dia em que a senha foi modificada (dias passados desde 01/01/1970 até que o dia da alteração)4 - Mínimo: Número mínimo de dias antes de que o usuário possa modificar a sua senha.5 - Máximo: Número máximo de dias que o usuário pode manter a senha.6 - Aviso: Número de dias antes da expiração da senha quando o usuário começa a receber avisos "Sua senha vai expirar".7 - Inativo: Número de dias após a validade da senha expirar em que a conta é desabilitada automaticamente.8 - Expiração: Número de dias, a partir de 01/01/1970, indicando quando a conta será desativada.9 - Reservado: Atualmente não tem utilidade.

Análise de um usuário

ricardo:$6$YBiRwzpe$GWio1XTu9GAScjnaEYuzfgCHmIhLTUyLws.mGbRSzPqxkcjsW52FATmK1uBMOgAawQJHcNApyit4Xts7Hs6kk/:18243:0:99999:7:::

Ver a data da última modificação da senha:

date -d “1970/01/01 + 18243 days”

useradd

O comando useradd é usado para criar uma conta de usuário no sistema.

useradd [opções] nome_da_conta 

Opções comuns:

-c = Define o campo comentário (nome, usuário, telefone, email...)-d = Define o diretório home (padrão) do usuário.-m = Cria e preenche o diretório home do usuário.-s shell = Usa o shell como padrão da conta.-e data_expiração = Data na qual a conta será desabilitada (formato: AAAA-MM-DD).-u UID = Especifica um UID para o usuário.
useradd -m -c "Carlos Chagas" -s /bin/bash chagas

Se não estiver logado como root precisa usar sudo no início do comando:

sudo useradd -m -c "Carlos Chagas" -s /bin/bash chagas

Para verificar basta olhar o arquivo /etc/passwd:

cat /etc/passwd

Nesse momento o usuário ainda não tem senha, é preciso criar uma senha criptografada para ele.

adduser (é um script que usa o useradd)

O comando adduser, na verdade é um script interativo que utiliza o programa useradd para realizar tarefas de criação de usuários (no Linux Debian e derivados).

O script está salvo no diretório /usr/sbin.

Para criar um usuário:

adduser conta_usuário

Pode ser usado para adicionar um usuário a um grupo:

adduser usuário grupo_já_existente

Alterar senha de usuário

O comando passwd serve para configurar a senha de um usuário e algumas alterações de conta.

Sintaxe do comando:

passwd [opções] username

Caso não tiver logado como root precisa usar o comando sudo:

sudo passwd [opções] username

Opções:

-l = Lock: Trava a senha (bloquei o usuário ) da conta especificada. 
-u = Unlock: Destrava a senha da conta especificada.
-d = Delete: Exclui a senha de um usuário.
-e = Força a expiração da senha, o usuário é solicitado para trocar a senha no próximo login.
-x dias = Quantidade de dias que a senha vai valer.
-n dias = Quantidade mínima de dias que o usuário precisa aguardar para poder trocar a sua senha.
-w = Define a quantidade de dias a partir do qual o usuário começa a receber aviso de expiração de senha.
-S = Exibe o status da conta.

Administrar grupos

O comando “gpasswd” é utilizado para administrar grupos no Linux. Esse comando grava informações nos arquivos “/etc/group” e no “/etc/gshadow”.

gpasswd [opções] grupo 

Opções

gpasswd grupo = Cria ou altera a senha do grupo.
gpasswd -a usuário grupo = Adiciona o usuário ao grupo.
gpasswd -d usuário grupo = Remove o usuário do grupo especificado.
gpasswd -A usuário grupo
= Torna o usuário administrador do grupo.

Modificar usuário (usermod)

O comando “usermod” modifica uma conta de um usuário existente.

usermod [opções] usuário

Opções:

-u UID = Alterar o UID para o valor especificado.
-s shell = Define um novo shell para o usuário.
-g grupo = Define um novo grupo primário para o usuário.
-G grupo1, grupo2, grupo3 = Torna o usuário membro dos grupos.
-c comentário = Mudar o valor do campo comentário.
-l login = Mudar o nome da conta do usuário para o login especificado.
Alterando comentário (nome) do usuário chagas
Alterando o UID do usuário chagas de 1001 para 2000
Inserindo o usuário chagas em vários grupos

--

--

Responses (1)