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.
8.4.2. O Oculto e Criptografo Arquivo de Senhas: /etc/shadow
O arquivo /etc/shadow
contém os seguintes campos:
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;
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.