Gerenciamento de Usuários Linux: Guia Completo com Comandos e Exemplos

A administração de contas de utilizadores é uma atividade fundamental em qualquer sistema operativo, sendo uma das tarefas rotineiras de um administrador de sistemas.

Num sistema operativo baseado em Linux, esta gestão habitualmente envolve a criação de novas contas, a modificação de contas já existentes (como a alteração do diretório pessoal ou do shell padrão), o bloqueio ou desbloqueio de contas, e a remoção de contas de utilizadores.

Antes de explorarmos os comandos e processos necessários para executar estas tarefas, vamos analisar brevemente como as contas de utilizador são classificadas no Linux. É importante notar que, salvo indicação explícita em contrário, os comandos apresentados funcionarão na maioria das distribuições Linux mais comuns.

Tipos de Utilizador

Utilizador Root

O utilizador root é o administrador do sistema operativo, possuindo permissões totais para executar qualquer operação. Normalmente, apenas o utilizador root pode instalar, desinstalar ou atualizar programas e bibliotecas essenciais do sistema. Esta é a única conta com privilégios em todo o sistema.

Portanto, o utilizador root é o utilizador mais poderoso do sistema.

Utilizadores Especiais

Estes são utilizadores sem capacidade de login. Não possuem os mesmos privilégios que o utilizador root e desempenham funções especializadas, variando de acordo com a conta.

São criados automaticamente durante a instalação de diversas aplicações. Exemplos de utilizadores especiais incluem bin, sync, lp, mail, operator e squid.

Utilizadores Comuns

Os utilizadores comuns têm privilégios completos apenas no seu diretório de trabalho, geralmente o seu diretório pessoal. Não têm permissões para gerir o sistema ou instalar software. Para realizar estas tarefas, necessitam de privilégios especiais através do comando sudo.

Adicionar Utilizador

Debian/Ubuntu

Em sistemas baseados em Debian ou Ubuntu, existem diversas opções para adicionar utilizadores através da linha de comandos (CLI). O primeiro comando é o adduser, um script Perl que utiliza o comando useradd no backend, o qual será abordado adiante.

Como adicionar um utilizador é uma tarefa que requer privilégios, é necessário utilizar o comando sudo, seguido pelo nome do utilizador como argumento. Outros detalhes podem ser especificados conforme necessário. Além do nome do utilizador e da password, os restantes dados são opcionais. Podemos verificar se o utilizador foi criado utilizando o comando id.

$ sudo adduser johndoe
Adding user `johndoe' ...
Adding new group `johndoe' (1003) ...
Adding new user `johndoe' (1003) with group `johndoe' ...
Creating home directory `/home/johndoe' ...
Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for johndoe
Enter the new value, or press ENTER for the default
        Full Name []: John Doe
        Room Number []:
        Work Phone []:
        Home Phone []:
        Other []:
Is the information correct? [Y/n] Y
$
$ id johndoe
uid=1003(johndoe) gid=1003(johndoe) groups=1003(johndoe)
$

CentOS/RHEL/Fedora (incluindo Debian/Ubuntu)

O comando useradd funciona em distribuições baseadas em RHEL, bem como em sistemas Ubuntu/Debian. A sintaxe mais simples (sem opções adicionais) para criar um novo utilizador é:

$ sudo useradd <username>

Exemplo:

$ sudo useradd janedoe

O comando useradd suporta várias opções que podem ser especificadas durante a criação do utilizador. As mais comuns incluem o ID do utilizador (UID), o ID do grupo (GID), o shell padrão e o diretório pessoal, entre outros. O exemplo abaixo demonstra algumas dessas opções:

$ sudo useradd -s /bin/sh -d /data/newhome -c "Jane Doe" -u 1005 janedoe

É possível verificar o utilizador recém-criado utilizando o comando id:

$ id janedoe
uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe)
$

Modificar Utilizador

Frequentemente, é necessário modificar propriedades de utilizadores existentes, seja por necessidades organizacionais, pedidos de utilizadores ou migrações de sistema. A maioria destas propriedades é fácil de modificar, mas é importante garantir que as alterações não afetem o ambiente do utilizador e o seu acesso aos ficheiros que lhe pertencem ou que ele utiliza.

Shell Padrão

O shell padrão é o shell da linha de comandos (CLI) que é iniciado quando um utilizador abre uma nova sessão CLI, seja localmente ou via SSH. Embora a maioria dos sistemas modernos utilize o Bash como shell padrão, isto pode variar consoante a distribuição Linux ou o ambiente do utilizador. Para modificar o shell padrão de um utilizador, utilize:

$ sudo usermod -s <shell> <username>

Exemplo:

$ getent passwd janedoe
janedoe:x:1005:1005::/data/newhome:/bin/sh
$ sudo usermod -s /bin/bash janedoe
$ getent passwd janedoe
janedoe:x:1005:1005::/data/newhome:/bin/bash
$

Como demonstrado no exemplo acima, o shell do utilizador janedoe foi alterado de /bin/sh para /bin/bash.

Diretório Pessoal

Tal como o shell padrão, o diretório pessoal de um utilizador pode ser alterado para um local diferente utilizando:

$ sudo usermod -d <new_directory_path> <username>

No exemplo abaixo, o diretório pessoal do utilizador janedoe foi alterado para /data/janedoe:

$ getent passwd janedoe
janedoe:x:1005:1005::/data/newhome:/bin/bash
$ sudo usermod -d /data/janedoe janedoe
$ getent passwd janedoe
janedoe:x:1005:1005::/data/janedoe:/bin/bash
$

Antes de efetuar a alteração, é fundamental garantir que o novo diretório tem a propriedade e as permissões adequadas. Caso contrário, o utilizador poderá ter problemas ao iniciar sessão ou ao trabalhar no novo diretório pessoal.

ID do Utilizador

Pode alterar o ID de um utilizador existente utilizando:

$ sudo usermod -u <new_uid> <username>

Exemplo:

$ getent passwd janedoe
janedoe:x:1005:1005::/data/janedoe:/bin/bash
$ sudo usermod -u 1010 janedoe
$ getent passwd janedoe
janedoe:x:1010:1005::/data/janedoe:/bin/bash
$

É importante ter em consideração que ao alterar o UID, modifica-se a forma como o sistema de ficheiros Linux mapeia a propriedade e as permissões de um ficheiro ou diretório. Garanta que o diretório pessoal do utilizador e o seu conteúdo, bem como todos os outros ficheiros no sistema que originalmente pertenciam ao utilizador (com o antigo UID), sejam alterados para o novo UID. Não fazer isto pode causar problemas nas sessões da CLI e no acesso aos ficheiros por parte do utilizador.

Grupo Padrão

O grupo padrão corresponde ao ID de grupo predefinido do utilizador, criado durante a sua criação, a menos que seja especificado um GID diferente. O Linux permite modificar o grupo padrão de um utilizador através do comando usermod. A sintaxe a utilizar é:

$ sudo usermod -g <new_gid or group_name> <username>

Eis um exemplo:

$ getent passwd janedoe
janedoe:x:1010:1005::/data/janedoe:/bin/bash
$ sudo usermod -g 1001 janedoe
$ getent passwd janedoe
janedoe:x:1010:1001::/data/janedoe:/bin/bash
$

Mais uma vez, é fundamental assegurar que o novo ID de grupo é definido no diretório pessoal do utilizador, no conteúdo e em todos os outros ficheiros ou diretórios relevantes, para que as permissões de propriedade sejam migradas corretamente.

Adicionar/Remover Grupos

Além do grupo padrão, um utilizador no Linux pode pertencer a grupos secundários. É possível adicionar ou remover grupos adicionais aos quais um utilizador pertence utilizando o comando usermod.

$ sudo usermod -a -G <group_id or group_name> <username>

Exemplo:

$ id janedoe
uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe)
$ sudo usermod -a -G docker janedoe
$ id janedoe
uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe),1001(docker)
$

Para remover um utilizador de um dos grupos secundários, utilize o comando gpasswd da seguinte forma:

$ sudo gpasswd -d <username> <groupname>

Exemplo:

$ id janedoe
uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe),1001(docker)
$ sudo gpasswd -d janedoe docker
Removing user janedoe from group docker
$ id janedoe
uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe)
$

Comentário GECOS

O campo GECOS em /etc/passwd contém informações ou comentários do utilizador. Podemos modificar estas informações para um utilizador existente da seguinte forma:

$ sudo usermod -c <comment> <username>

Exemplo:

$ getent passwd janedoe
janedoe:x:1005:1005::/data/janedoe:/bin/bash
$ sudo usermod -c "Jane Doe - System Admin" janedoe
$ getent passwd janedoe
janedoe:x:1005:1005:Jane Doe - System Admin:/data/janedoe:/bin/bash
$

Se o seu comentário ou detalhes do utilizador contiverem espaços, coloque esse campo entre aspas, como demonstrado no exemplo acima.

Nome de Login

O nome de login do utilizador também pode ser alterado através do comando usermod, utilizando a opção -l:

$ sudo usermod -l <new_username> <old_username>

Exemplo:

$ id janedoe
uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe)
$ sudo usermod -l jane_doe janedoe
$ id jane_doe
uid=1005(jane_doe) gid=1005(janedoe) groups=1005(janedoe)
$

Lembre-se de atualizar as referências ao utilizador, de acordo com o novo nome, sempre que este for utilizado. Mesmo em comandos como id, o novo nome de utilizador deve ser especificado.

Remover Utilizador

É possível remover um utilizador do Linux utilizando o comando userdel.

$ sudo userdel <username>

Exemplo:

$ id janedoe
uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe)
$ sudo userdel janedoe
$ id janedoe
id: ‘janedoe’: no such user
$

Para remover um utilizador juntamente com o seu diretório pessoal e spool de correio, adicione também a opção -r.

$ sudo userdel -r <username>

Especificamente em sistemas baseados em Ubuntu, pode também utilizar o comando deluser para remover um utilizador:

$ sudo deluser <username>

De forma similar, para remover também o diretório pessoal e o spool de correio, utilize:

$ sudo deluser --remove-home <username>

Para obter informações detalhadas e outras opções suportadas, consulte as páginas de manual de cada comando, utilizando:

$ man adduser
$ man useradd
$ man usermod
$ man deluser
$ man userdel

Conclusão

Este artigo demonstrou vários aspetos da gestão de utilizadores num sistema Linux. Foi apresentada uma explicação das diversas categorias de utilizadores e como adicioná-los e removê-los. Também foram abordadas diversas opções que permitem modificar os parâmetros de um utilizador existente. Embora não abranja todas as possibilidades suportadas por diversos comandos, este artigo cobre muitas tarefas comuns de administração que um administrador de sistemas irá encontrar no seu trabalho diário.

Pode também estar interessado em ler: Como remover ficheiros e diretórios no Linux?