Administração de usuários no Ubuntu 12.04

8 de nov de 2014 - Paulo Dias


Nesse artigo vou escrever sobre a administração de usuários no GNU/Linux. Estou usando o Ubuntu 12.04 para realizar os testes, mas tudo deve ocorrer normalmente em outras distribuições.

No GNU/Linux existem 4 arquivos que são usados para administrar usuários, são eles:

  • /etc/passwd
  • /etc/shadow
  • /etc/group
  • /etc/gshadow

Observaçãp: Você pode consultar o manual desses arquivos com o seguinte comando: man 5 nome_arquivo.

O arquivo /etc/passwd é responsável por armazenar informações da conta de cada usuário. Ele segue a seguinte estrutura:

 usuario : x : id_usuario : id_grupo_primario : infos( gecos ) : caminho_home : caminho_shell

Para ver o conteúdo desse arquivo execute o seguinte comando no terminal:

 getent /etc/passwd

O arquivo /etc/shadow armazena as senhas dos usuários ( na verdade um hash delas ) e infomações relacionadas ao tempo de validade das senhas.

Antigamente o arquivo passwd guardava a senha do usuário, mas por segurança essa informação foi migrada para o shadow. Assim, a senha no arquivo passwd foi substituida por um x, indicando dessa forma que o sistema faz uso do arquivo shadow.

Para visualizar o conteúdo do arquivo /etc/shadow você também pode usar o comando getent, mas é necessário utilizar o usuário root( sudo ) ou um usuário que esteja no grupo shadow.

O arquivo /etc/group armazena informações sobre os grupos do sistema. Ele segue a seguinte estrutura:

 grupo : x : id_grupo : usuarios_dentro_do_grupo

Da mesma forma que os arquivos anteriores, é possível usar o comando getent para visualizar o conteúdo desse arquivo.

O arquivo /etc/gshadow é responsável por armazenar as senhas dos grupos.

Conhecendo as estruturas desses arquivos e tendo as permissões necessárias é possível fazer qualquer tipo de admnistração de usuários no GNU/Linux. Porém, não é recomendado alterar esses arquivos manualmente, o ideal é utilizar os seguintes comandos:

  • chage
  • passwd
  • usermod
  • groupmod
  • useradd
  • userdel
  • groupadd
  • groupdel

O comando chage serve para alterar caracteristicas da senha do usuário.

Veja a saida do comando 'chage -l paulo' no meu sistema:


Última mudança de senha     : Out 28, 2014
Senha expira     : nunca
Senha inativa     : nunca
Conta expira      : nunca
Número mínimo de dias entre troca de senhas  : 0
Número máximo de dias entre troca de senhas  : 99999
Número de dias de avisos antes da expiração da senha : 7

Essas informações também podem ser alteradas com o comando chage, por exemplo, com o comando a baixo altera a data de expiração da conta:

sudo chage -E 11/09/2020 paulo # a data está no padrão mm/dd/aaaa

Para saber mais utilize o comando man chage.

No GNU/Linux além de um arquivo passwd, também existe um comando com esse mesmo nome. O comando passwd serve para alterar a senha de um usuário. ( evidente que é necessário permissões de administrador para trocar a senha de outro usuário ). O seguinte comando altera a senha do usuário 'paulo':

passwd paulo 

Tendo as devidas permissões também é possível bloquear a conta de um usuário com o comando passwd. Veja:

sudo passwd -l paulo #bloqueia 
sudo passwd -u paulo #desbloqueia

Através do comado usermod também é possível alterar várias informações da conta de um usuário. Entre outras, é possível alterar os grupos, o diretório home e o shell do usuário:

sudo usermod -G adm,cdrom,sudo paulo # altera os grupos
sudo usermod -d /home/paulo2 paulo # altera o home
sudo usermod -s /bin/csh paulo # altera o shell

Veja mais com o comando man usermod.

Assim como o usermod serve para fazer alterações nos usuários o comando groupmod faz alterações nos grupos:

groupmod -n novo antigo

Esse comando altera o nome do grupo 'antigo' para 'novo'.

O comando useradd é utilizado para inserir um novo usuário no sistema. Veja:

sudo useradd -m -s /bin/bash paulo

Nesse exemplo o -m é para criar o diretório home e o -s é para especificar o shell do novo usuário. Depois de criar o usuário ainda é necessário utilizar o comando passwd para especificar uma senha, somente depois disso o usuário poderá ser usado.

Para remover um usuário no sistema é utilizado o comando userdel assim:

sudo userdel -r paulo

É importante utilizar o -r para garantir que o diretório home do usuário será removido.

O comando groupadd serve para adicionar um grupo no sistema, veja o exemplo:

sudo groupadd grupo

E para remover um grupo é usado o comando groupdel:

sudo groupdel grupo

Para remover um grupo que seja primário de algum usuário é necessário primeiro excluir o usuário com o comando userdel.

Feito, por hoje é isso! Existem vários outros comandos que são utéis para admnistração de usuários no GNU/Linux, segue mais alguns comandos para quem quiser saber mais: id, finger, chfn, adduser( debian-like ), who, users, fuser ...

T+

Paulo Dias

Graduado no curso tecnólogo em análise e desenvolvimento de sistemas. Defensor do Software Livre e da democratização da informação. Possui as certificações Linux LPIC-1 e Java OCA. Atualmente exerce a função de coordenador técnico na área de telecomunicações.

Siga-me no Twitter


Tags: Linux