Tabela de conteúdos

Administração de Usuários

Sistemas operacionais apropriados para servidores sempre possuíram o suporte à criação de usuários e grupos. Cada usuário de um sistema Linux possui uma série de prerrogativas (de segurança) a ele associadas que irão determinar as operações que o mesmo pode realizar no sistema. Por meio de configurações simples podemos determinar se um usuário:

No Linux existem várias formas de se criar e administrar usuários. Em servidores com grande número de usuários e serviços é recomendável utilizar algum mecanismo de autenticação e administração mais elaborado, como por exemplo o LDAP. O mecanismo mais simples (e padrão) é oferecido diretamente pelo próprio sistema, através de uma série de comandos que manipulam os arquivos /etc/passwd, /etc/group, /etc/shadow e, menos comumente, /etc/gshadow.

O arquivo /etc/passwd contém a lista de usuários existentes em um sistema. As informações sobre cada usuário ficam em uma linha do arquivo, que possui o seguinte formato:

...
aluno:x:1000:1000:Usuário aluno do sistema,,,:/home/aluno:/bin/bash
 (1) (2) (3)  (4)              (5)                 (6)        (7)
...

(1) = Login do usuário;
(2) = Senha criptogradada. Um x indica que a senha está no arquivo /etc/shadow;
(3) = UID - Identificação numérica e individual do usuário para o sistema;
(4) = GID - Identificação numérica do grupo principal do usuário;
(5) = Informações pessoais do usuário;
(6) = Diretório home do usuário;
(7) = Shell do usuário (programa que será executado quando ele(a) abrir um terminal).

O arquivo /etc/group contém a lista de grupos existentes em um sistema, possuindo o seguinte formato:

...
users:x:100:aluno,fulano
 (1) (2)(3)      (4)
...
(1) = Nome do grupo;
(2) = Senha criptogradada. Um x indica que a senha está no arquivo /etc/gshadow;
(3) = GID - Identificação numérica e individual do grupo para o sistema;
(4) = Lista de usuários do grupo, separados por vírgula.

O arquivo /etc/shadow contém as senhas criptografadas, e outras informações de segurança, possuindo o seguinte formato:

...
aluno:$6$eQ6PLJvM$lk2NAT4ZgebXczKA/IZTXG5rYMObC1Ej52Uc.5jVUXhnkgD.:14981:0:99999:7:::
  (1)                                 (2)                           (3) (4) (5) (6)(7)(8)(9) 
...
(1) = Login do usuário;
(2) = Senha Criptografada (! e * significam que a conta está bloqueada, ou não permite login via terminal);
(3) = Data da última mudança de senha (desde 01/01/1970);
(4) = Número mínimo de dias entre mudanças de senhas;
(5) = Número máximo de dias entre mudanças de senhas;
(6) = Número de dias antes da senha expirar em que se deve solicitar a troca da senha;
(7) = Número de dias que o usuário ainda pode fazer login após a senha expirar;
(8) = Data de expiração da conta (em dias desde 01/01/1970);
(9) = Reservado para uso futuro.

O arquivo /etc/gshadow é bem menos utilizado que os anteriores. Ele permite a definição de senhas para grupos. Através dela um usuário pode solicitar a entrada em um novo grupo. Seu formato é mostrado a seguir:

...
admin:!::aluno,fulano
 (1) (2)(3) (4)
...
(1) = Nome do grupo;
(2) = Senha criptogradada. (! ou * significam que a entrada de novos membros está bloqueada e só pode ser realizada por um administrador);
(3) = Lista de administradores (podem mudar a senha ou lista de membros de um grupo);
(4) = Lista de usuários do grupo, separados por vírgula.

Boa parte do funcionamento dos comandos que serão apresentados a seguir é controlada pelas configurações encontradas nos arquivos /etc/adduser.conf e /etc/login.defs. O valor do UID e GID de um usuário é particularmente importante:

Os principais comandos de administração de usuários utilizando o mecanismo passwd são descritos a seguir.

adduser : Adiciona um usuário ao sistema

Sintaxe : adduser [opções] <usuário>

Opções (principais):

–disabled-login: Cria o usuário mas não atribui senha, não será possível realizar login.
–gid <gid>: Informa o grupo principal do novo usuário.
–uid <uid>: Informa o User ID do novo usuário.
–home <home>: Informa o diretório home do novo usuário.
–shell <shell>: Informa o shell do novo usuário.

Exemplo:

root@debian:~# adduser --gid 100 fulano
Adicionando o usuário `fulano' ...
Adicionando novo usuário `fulano' (1001) ao grupo `users' ...
Criando diretório pessoal `/home/fulano' ...
Copiando arquivos de `/etc/skel' ...
Digite a nova senha UNIX: 
Redigite a nova senha UNIX: 
passwd: senha atualizada com sucesso.
Modificando as informações de usuário para fulano
Informe o novo valor ou pressione ENTER para aceitar o padrão
	Nome Completo []: Fulano de Tal
	Número da Sala []: 46
	Fone de Trabalho []: 3232-3232
	Fone Doméstico []: 3434-3434
	Outro []: 
Esta informação está correta?[S/n] S
root@debian:~# 

Esse comando também permite a inclusão de um usuário em um grupo. O exemplo abaixo mostra como:

root@debian:~# adduser fulano admin
Adicionando o usuário `fulano' ao grupo `admin' ...
Adicionando usuário fulano ao grupo admin
Concluído.
root@debian:~# 

addgroup : Adiciona um grupo ao sistema

Sintaxe : addgroup [opções] <grupo>

Opções (principais):

–gid <gid>: Informa o Group ID do novo grupo.

Exemplos:

root@debian:~# addgroup alunos
Adicionando grupo `alunos' (GID 1001) ...
Concluído.
root@debian:~#

passwd : Altera a senha de um usuário (ou atributos da mesma)

Sintaxe : passwd [opções] [usuário]

Opções (principais):

-e: Expira a senha de um usuário (forçando que ele mude de senha no próximo login).
-l: Bloqueia a senha de um usuário, impedindo o login.
-u: Desbloqueia a senha de um usuário, permitindo o login.
-x <dias>: Determina o número máximo de dias entre mudanças de senhas.

Exemplos:

root@debian:~# passwd fulano
Digite a nova senha UNIX: 
Redigite a nova senha UNIX: 
passwd: senha atualizada com sucesso.
root@debian:~# 
root@debian:~# passwd -x15 fulano
passwd: informações de expiração de contas modificadas.
root@debian:~# 
root@debian:~# passwd -l fulano
passwd: informações de expiração de contas modificadas.
root@debian:~# 

chfn : Altera os dados pessoais de um usuário

Sintaxe : chfn <usuário>

Exemplo:

root@debian:~# chfn fulano

chsh : Altera o shell de um usuário

Sintaxe : chsh <usuário>

Exemplo:

root@debian:~# chsh fulano

usermod : Modifica a conta de um usuário

Sintaxe : usermod [opções] <usuário>

Opções (principais):

-d <home_dir>: Altera o diretório home do usuário para home_dir.
-g <gid>: Altera o grupo principal do usuário para gid.
-l <new-login>: Altera o login do usuário para new-login.
-m : Move os arquivos para o novo diretório home. É utilizada em conjunto com -d.
-u <uid>: Altera o User ID do usuário para uid.

Exemplos:

root@debian:~# usermod -m -d /home/fulanohome fulano
root@debian:~# 

userdel : Remove um usuário

Sintaxe : userdel [opções] <usuário>

Opções (principais):

-r: Remove o diretório home do usuário.

Exemplos:

root@debian:~# userdel -r fulano
root@debian:~# 

groupdel : Remove um grupo

Sintaxe : groupdel <grupo>

Exemplos:

root@debian:~# groupdel alunos
root@debian:~# 

id : Mostra o UID e GIDs de um usuário

Sintaxe : id [usuário]

Exemplos:

root@debian:~# id fulano
uid=1001(fulano) gid=1001(fulano) grupos=1001(fulano),100(users)