Product SiteDocumentation Site

8.4. Usuário e grupo bancos de dados

A lista de usuários é normalmente armazenada no /etc/passwd, enquanto o /etc/shadow armazena senhas em hash. Ambos são arquivos de texto, em um formato relativamente simples, que podem ser lidos e modificados com um editor de texto. Cada usuário está listado lá em uma linha com vários campos separados por dois-pontos (“:”).

8.4.1. Lista de Usuários: /etc/passwd

Aqui está uma lista de campos do arquivo /etc/passwd:
  • login, por exemplo rhertzog;
  • password: é uma senha criptografada por uma função unidirecional (crypt), que se baseia em DES, MD5, SHA-256 ou SHA-512. O valor especial “x” indica que a senha criptografada é armazenada em /etc/shadow;
  • uid: identificar numérico único para cada usuário;
  • gid:número único para o grupo principal do usuário (O Debian cria, por padrão, um grupo específico para cada usuário);
  • GECOS: campo de dados contendo normalmente o nome completo de usuário;
  • diretório de login, atribuído ao usuário para armazenar arquivos pessoais (a variável de ambiente $HOME geralmente aponta para ele);
  • programa para executar no login. Em geral é um interpretador de comandos (shell), deixando o usuário com "rédea solta". Se você especificar /bin/false (que não faz nada e devolve o controle imediatamente), o usuário não vai conseguir fazer login.
Como mencionado antes, alguém pode editar este arquivo diretamente, mas existem formas mais elegantes de aplicar mudanças, que são descritas em Seção 8.4.3, “Modificando uma Conta de Usuário Existente ou Senha”.

8.4.2. O Oculto e Criptografo Arquivo de Senhas: /etc/shadow

O arquivo /etc/shadow contém os seguintes campos:
  • login;
  • senha criptografada;
  • diversos campos controlam a expiração da senha.
Podemos fazer caducar as senhas usando este arquivo ou estabelecer o tempo até que a conta se desabilite depois da senha ter expirado.

8.4.3. Modificando uma Conta de Usuário Existente ou Senha

Os seguintes comandos permitem a modificação das informações armazenadas em campos específicos do banco de dados do usuário: passwd permite que um usuário comum altere sua senha, que por sua vez, atualiza o arquivo /etc/shadow(com o chpasswd administradores podem atualizar senhas de uma lista de usuários em lote; chfn(CHange Full Name), reservado para o superusuário (root), modifica o campo GECOS.chsh (CHange SHell) permite que o usuário altere seu shell de login; contudo, as opções disponíveis estarão limitadas as opções listadas em /etc/shells; o administrador, por outro lado, não tem essa restrição e pode definir o shell para qualquer programa de sua escolha.
Finalmente, o comando chage (CHange AGE) permite ao administrador alterar as configurações de expiração da senha (a opção -l user irá listar as configurações corrente). Você também pode forçar a expiração da senha usando o comando passwd -e user, o qual irá requerer que o usuário altere sua senha na próxima vez que iniciar uma sessão.
Além destas ferramentas o comando usermod permite modificar todos os detalhes já mencionados.

8.4.4. Desabilitando uma Conta

Você pode necessitar “desabilitar uma conta” (bloquear um usuário), como uma medida disciplinar, para propósitos de uma investigação, ou simplesmente no caso de uma prolongada ou definitiva ausência de um usuário. Uma conta desabilitada significa que o usuário não pode iniciar uma sessão ou ganhar acesso a máquina. A conta permanece intacta na máquina e nenhum arquivo ou dado é apagado; ela é simplesmente inacessível. Isso é feito usando o comando passwd -l user ("l" de lock, ou bloqueio). Reabilitar a conta é feito de maneira similar, com a opção -u ("u" de unlock, ou desbloqueio). Isto, entretanto, apenas impede autenticação baseada em senha pelo usuário. O usuário ainda pode ser capaz de acessar o sistema usando uma chave SSH (se configurada). Para evitar até mesmo esta possibilidade, você terá que expirar a conta usando ou chage -E 1 usuário ou usermod -e 1 usuário (passando um valor -1 em qualquer destes comendos vai reconfigurar a data de expiração pra nunca). Para desabilitar (temporariamente) todas as contas de usuário, simplesmente crie o arquivo /etc/nologin.
Pode desativar uma conta de usuário não só bloqueando ela como já descrito, mas também mudando sua shell padrão de início de sessão (chsh -s shell usuário). Mudando o último para /usr/sbin/nologin, o usuário recebe uma educada mensagem informando-o de que não é possível iniciar sessão, enquanto /bin/false simplesmente devolve falso. Não há forma de restaurar o shell anterior. Tem que obter e conservar essa informação antes de mudar a configuração. Estes shells utilizam-se com frequência para os usuários do sistema que não requerem nenhuma disponibilidade de início de sessão.

8.4.5. Lista de Grupo: /etc/group

Grupos são listados no arquivo /etc/group, um banco de dados de texto simples em um formato similar ao arquivo /etc/passwd, com os seguintes campos:
  • nome do grupo;
  • senha (opcional): Isso só é usado para participar de um grupo quando não se é um membro usual (com os comandos newgrp ou sg, veja barra lateral DE VOLTA AO BÁSICO Trabalhando com grupos diversos);
  • gid: identificar numérico único para cada grupo;
  • lista de membros: lista de nomes de usuários que são membros do grupo, separados por vírgulas.
Os comandos addgroup e delgroup adicionam ou apagam um grupo, respectivamente. O comando groupmod modifica a informação do grupo (seu gid ou identificador). O comando gpasswdgrupo altera a senha para o grupo, enquanto o comando gpasswd -rgrupo o apaga.