Gerenciamento de Usuários e Grupos no Linux
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
.
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 configurada3 - É 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.