Gerenciar usuários no Linux é mais uma das tarefas comuns da administração de sistemas. Normalmente, ambientes de TI corporativos são compostos por servidores, nos quais são gerenciados os arquivos (e respectivas propriedades) e os próprios usuários da rede.
Quando falamos em gerenciar usuários, no entanto, ficamos diante de vários aspectos que isso engloba. Por exemplo, é preciso saber como se cria usuários e os vincula a uma rede específica, se modificam permissões e senhas, se remove usuários, entre outros procedimentos fundamentais.
Além de essencial para quem já trabalha com servidores Linux, aprender a administrar usuários é um requisito básico no exame de uma das principais certificações para quem estuda para especialização: o Linux Foundation Certified SysAdmin (LFCS). Ou seja, é muito importante se aprofundar no assunto!
Para ajudá-lo a se preparar, independentemente de qual seja o seu objetivo, veremos neste artigo oito comandos para gerenciar usuários no Linux que o permitirão dar os primeiros passos.
1. Exibir todos os usuários existentes na rede
Comecemos a lista com alguns comandos básicos de user management. Suponhamos que você receba uma oportunidade de auxiliar administradores de redes Linux em uma empresa (um estágio, por exemplo).
Uma rede pronta está à sua frente e a qualquer momento alguém pode delegar a você tarefas de gerenciamento, então o primeiro passo, normalmente, é saber quantos e quais são os usuários existentes na rede da empresa.
O arquivo que guarda todas as contas disponíveis e respectivas informações de login é o /etc/passwd. Logo, para ter acesso à lista de usuários (e também serviços e programas que utilizam senhas). Vamos testar? No terminal, utilize o comando: sudo cat /etc/passwd.
2. Registrar e deletar usuários
Seguindo o exemplo do tópico acima, imaginemos que o administrador solicitou a você que registrasse usuários na rede e, também, removesse alguns outros. Nesse caso, vamos começar pela adição de contas.
Existem duas maneiras de se adicionar usuários por meio do terminal, que são os comandos useradd e adduser — embora muito similares e fáceis de confundir, este último é mais prático, visto que o useradd é um binário de baixo nível.
Comando useradd
Começando pelo próprio useradd, vejamos que não se trata de algo complicado, muito pelo contrário! Ao digitarmos o comando useradd –help, o terminal retorna todas as opções possíveis para criação de usuário (vide imagem, abaixo).
São mais de 20 opções de ação disponíveis no useradd. Podemos criar diferentes tipos de contas (usuário, grupo, sistema…) aplicando algumas configurações (com ou sem diretório /home, diretórios alternativos, data de expiração…) e, ainda, fazer consultas a contas já existentes (visualizar ID, listar grupos e diretórios…).
Criar os usuários é muito simples. Basta digitar o comando useradd -m nome_do_usuário. Exemplos:
sudo useradd -m manoel
sudo useradd -m carlos_silva
A opção -m, conforme a tabela acima, cria um diretório /home para o usuário recém-criado. Por isso, sempre que criamos usuários com esse método, um novo diretório é gerado pelo sistema.
Registrar senhas
Para completar o processo é necessário registrar uma senha para cada usuário. Nesse caso, utiliza-se o comando passwd, conforme o exemplo a seguir.
sudo passwd manoel
Assim que executado o comando, o terminal retornará um campo no qual deve ser digitada a senha.
2.2 Remover usuários
Para deletar usuários, o comando utilizado é o userdel, acompanhado do nome do usuário. Com isso, tanto o usuário como todos os itens atrelados à conta dele são removidos, também.
sudo userdel -r manoel
A opção -r é usada para remover a conta declarada no fim do comando.
3. Criar grupos e adicionar usuários a eles
Além de criar usuários, o administrador da rede também pode criar grupos para facilitar o gerenciamento quando há grande quantidade de usuário ou alguma segmentação se faz necessária (departamentos, times, divisões etc.), deixando o acesso a arquivos e recursos mais bem organizado.
Neste exemplo, vamos criar dois tipos de grupos: o primeiro será composto por usuários com permissões para editar arquivos (denominado “diretores”) e o segundo, por usuários que podem fazer a leitura somente (denominado “operadores”). Criando os dois grupos:
addgroup diretores addgroup operadores
Como saber se os grupos foram indexados corretamente pelo sistema? Basta digitar o comando less /etc/group e verificar se ambos constam na lista.
Agora, vamos supor que Carlos Silva e Manoel sejam, respectivamente, diretor e assistente do departamento financeiro da empresa. Para adicioná-los em seus devidos grupos, digite:
sudo usermod -a -G diretores carlos_silva sudo usermod -a -G operadores
Pronto! Os usuários foram adicionados aos respectivos grupos e eles já podem ser gerenciados pelo administrador.
4. Associar permissões de grupos a diretórios
Uma etapa importante do gerenciamento é a definição de permissões, ou seja, o que cada grupo está autorizado a fazer. Aliás, os grupos existem para isso, também, e não somente para segmentar usuários, pois imagine só o trabalho que não seria estabelecer regras individualmente?
Por ora, sabemos que o user Carlos Silva tem muito mais autonomia para mexer nos arquivos em relação ao assistente Manoel e demais colaboradores de nível operacional.
Sendo assim, vamos começar a adicionar regras a quem esteja habilitado a editar arquivos; para tanto utilizamos o comando setfacl, cuja sintaxe é:
setfacl opção X:nome:Y /diretório
A “opção” nada mais é que uma das funcionalidades que a ferramenta setfacl coloca à nossa disposição (digite setfacl –help no terminal para descobrir quais são elas). No campo “X”, insere-se u (para user) ou g (para group). Em “nome”, preenchemos com o nome do user / group, seguido do endereço de diretório a ser usado.
Criando permissões aos grupos
Simplificando o cenário, suponha-se que o administrador do sistema tenha criado um diretório denominado /Arquivos para armazenar os dados gerados pela equipe. A partir disso, ele começa a atribuir permissões aos grupos em relação ao diretório recém-criado. Exemplo:
sudo setfacl -m g:diretoria:rwx -R /Arquivos
A opção -m tem a função de modificar as permissões atuais de arquivos no diretório. Já a instrução -R nada mais é que a aplicação das novas regras aos subdiretórios. Processo similar é feito para os demais usuários, como o Manoel.
sudo setfacl -m g:operadores:rx -R /Arquivos
Com a configuração acima, o grupo “operadores” conseguirá ler os arquivos guardados no diretório /Arquivos, mas não poderão editá-los de maneira alguma.
5. Atualizar informações de usuário
O comando usermod é a chave para se fazer alterações em diferentes aspectos de uma conta. A sintaxe do comando é simples: usermod opção username. Ela permite, por exemplo, que se determine expiração de conta, insira usuários a grupos de forma suplementar, mudar diretórios do user etc. Abaixo, alguns exemplos.
Configurar data de expiração
Determinar uma data de expiração de uma conta é interessante para evitar o acumulo de usuáros inativos ou, por exemplo, controlar o acesso de um usuário que venha a usar o servidor temporariamente.
Vamos supor que no dia 25 de novembro de 2019 tenha sido criado o usuário Roberto (roberto_E), contratado para estagiar na empresa por seis meses, então o administrador cria a conta de modo que esta seja expirada no fim do vínculo entre as partes. Exemplo:
usermod -e 2020-05-26 roberto_E
Feito isso, digite chage -l roberto_E para verificar as informações atualizadas da conta. Se as informações correspondem, Roberto terá o login disponível até o fim do último dia de trabalho; já no dia seguinte a conta terá sido expirada.
Alterar o local padrão do diretório /home
Alterar o diretório /home do usuário é muito simples. O ideal é que o processo seja feito em duas etapas; primeiramente, consulta-se o diretório atual e depois, se necessário, configura-se outro local. Exemplo:
grep -E '/home/angela' /etc/passwd
o comando exibe o diretório /home configurado atualmente
usermod -d /var/development/angela
mudamos o diretório /home para o referido caminho
Inserir informações em uma conta
Para fins de organização, é possível acrescentar informações às contas, individualmente, fornecendo outros parâmetros de pesquisa. A seguir, vejamos como vincular o username ao cargo ocupado pelo usuário.
usermod -c "Analista de Testes" laura
Agora, utilize o comando grep para consultar alguns detalhes da conta:
grep -E 'laura' /etc/passwd
laura:x:500:500:Analista de Testes:/home/testes/laura:/bin/sh # resultado exibido
Num ambiente com muitos funcionários tal medida facilita bastante a identificação dos usuários.
Mudar os dados de login
Diversas situações podem nos levar a mudanças no login, desde a adoção de um padrão para criação de usuários à alteração em função de nova ocupação do usuário, entre outros casos.
Vejamos o que fazer, por exemplo, para mudar o username regis para regis_admin:
usermod -l regis_admin regis
Isso fará com que as credenciais sejam modificadas, mas preservando todos os diretórios e outros elementos vinculados à conta desde a sua criação.
Trancar e destrancar uma conta
Trancar contas de usuário é uma medida de segurança consideravelmente útil, pois evita que determinada conta tenha permissões para navegar pelo sistema. Supondo que aconteça um ataque ao servidor por meio de uma credencial que o invasor violou, o bloqueio, por si só, já mitigaria o problema.
Para trancar uma conta, use o comando -L:
usermod -L maria
Utilize a opção -U para destrancar:
usermod -U maria
Apenas para memorizar: o comando -L se refere a lock, que significa “trancar” em português; o -U segue a mesma linha, porém para unlock (destrancar).
6. Consultar user logs (registros do usuário)
Analisar o histórico de atividades do sistema um processo fundamental para estabelecer o controle. Isso porque muitos problemas são compreendidos a partir dos registros de eventos que ocorrem durante a navegação do usuário.
A partir dos registros é que são feitas avaliações de brechas de segurança, por exemplo, entre outras atividades forense ou auditorias. O monitoramento frequente ajuda, também, a identificar potenciais vulnerabilidades antes que estas sirvam de brecha para ataques.
No diretório /var/log, dependendo da distribuição (no exemplo, estou trabalhando com Ubuntu), você encontra o arquivo auth.log, onde é possível consultar todos os logs do usuário. Para acessá-lo, digite: sudo tail /var/log/auth.log.
7. Localizar arquivos de usuários
Por meio do comando find, conseguimos listar todos os arquivos pertencentes a um determinado usuário de forma rápida e fácil, podendo, inclusive, criar filtros de busca de acordo com o diretório e o formato do arquivo.
Vejamos, abaixo, como encontrar arquivos de texto criados pelo usuário cuja ID é 300:
find /home -uid 300 | tee 300-files.txt
Vale destacar que o mesmo se aplica a grupos. Nesse caso, em vez da ID de usuário (UID) usa-se de grupo (GID).
Como obter e gerenciar informações como UID e GID
Conseguir a ID de usuário ou grupo é muito simples, bastando utilizar o comando id:
id user uid=1000(user), gid=1000(user), groups=1000(user), 4(adm), 24(cdrom), 27(sudo), 30(dip), 46(plugdev), 118(lpadmin), 127(sambashare)
Você pode, também, criar um grupo com GID específico, ou seja, escolhendo como ele será identificado. Exemplo:
groupadd -g 188 group1
Se quiser modificar o GID atual, digite:
groupmod -g 55 group1
Como podemos ver, não há necessidade de gerar informações aleatoriamente, dificultando a memorização de IDs, por exemplo.
8. Transferir permissões de arquivos
O que fazer quando uma série de arquivos pertecentes a um ex-funcionário precisa ser transferido a outro responsável? O administrador de sistemas utiliza o comando chown para executar as redefinições, transferindo o diretório /home para outro user. Exemplo:
chown -R newuser:flavio /home/marcia
A prática vem a calhar, também, quando um novo colaborador é contratado para assumir a ocupação de alguém que foi desligado da empresa. O recém-contratado herda os arquivos do antigo funcionário, não as suas credenciais.
Em suma, ao longo deste artigo, aprendemos a executar vários comandos para gerenciar usuários no Linux, desde os considerados “básicos” aos menos convencionais entre iniciantes.
O intuito aqui foi de fornecer um conteúdo que sirva para você consultar durante a jornada até a especialização Linux. Quer tirar a certificação mais rapidamente? Abaixo, deixo a dica.
Experimente fazer um curso apropriado e altamente didático para absorver todo o conhecimento necessário em pouco tempo. Acesse o site Profissionais Linux e saiba mais!