Como adicionar, modificar e remover usuário no Linux?

O gerenciamento de usuários em qualquer sistema operacional é uma das tarefas básicas de rotina de um administrador de sistema.

Para um sistema operacional baseado em Linux, geralmente envolve criar contas de usuário, modificar contas existentes, como alterar seu diretório inicial, shell padrão, bloquear/desbloquear uma ou mais contas e remover contas de usuário.

Antes de investigarmos os comandos e processos para realizar essas tarefas, vamos nos aprofundar brevemente em como as contas de usuário podem ser classificadas no Linux. Além disso, observe que, a menos que especificados explicitamente, os comandos fornecidos funcionarão na maioria das distribuições comuns do Linux.

Tipos de usuário

Usuário raiz

O usuário root é o administrador do SO com todas as permissões para realizar operações. Normalmente, apenas o root pode instalar/desinstalar ou atualizar programas e bibliotecas básicos do sistema. É a única conta de usuário com privilégios em todo o sistema.

Assim, o usuário root é o usuário mais poderoso do sistema.

Usuário especial

Estes são os usuários sem logins. Eles não têm todos os privilégios do usuário root. Dependendo da conta, eles assumem diferentes funções especializadas.

Eles são criados automaticamente no momento da instalação de qualquer aplicativo. bin, sync, lp, mail, operator, squid são alguns exemplos de usuários especiais.

Usuários comuns

Os usuários comuns têm privilégios totais apenas em seu diretório de trabalho, geralmente seu diretório inicial. Eles não têm privilégios para gerenciar o sistema ou instalar o software. Eles não podem executar essas tarefas sem ter privilégios especiais via sudo.

Adicionando usuário

Debian/Ubuntu

Em um sistema baseado em Debian ou Ubuntu, existem algumas opções para adicionar usuários da CLI. O primeiro comando é adduser, que é um script Perl e usa o comando useradd no backend cujo uso veremos mais adiante.

Como adicionar um usuário é uma tarefa privilegiada, você precisaria usar sudo como prefixo e nome de usuário como argumento. Outros detalhes podem ser especificados conforme solicitado. Exceto pelo nome de usuário e senha, os demais detalhes são opcionais. Podemos verificar se o usuário foi criado usando 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 próximo comando, useradd funcionará em distribuições de SO baseadas em RHEL, bem como funcionará igualmente bem em hosts Ubuntu/Debian. A sintaxe mais simples (sem opções extras) para criar um novo usuário é:

$ sudo useradd <username>

Exemplo:

$ sudo useradd janedoe

O comando useradd suporta várias opções que podem ser especificadas durante a criação do usuário, sendo as mais comuns ID do usuário (UID), ID do grupo (GID), shell padrão e diretório inicial, etc. Um exemplo é dado abaixo:

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

Você pode verificar o usuário recém-criado usando o comando id:

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

Modificando usuário

Muitas vezes, é necessário modificar alguma propriedade de usuários existentes com base nos requisitos da organização, solicitações de usuários ou migrações de sistema. A maioria dessas propriedades é fácil de modificar, embora precisemos garantir como isso afetará o ambiente do usuário e o acesso aos arquivos pertencentes ou acessados ​​pelo usuário.

  Como proteger uma unidade flash USB no Linux

Shell padrão

O shell padrão é o shell CLI criado quando um usuário inicia uma nova sessão CLI localmente ou via SSH. A maioria dos sistemas modernos tem um usuário padrão Bash, embora possa variar de acordo com a distribuição Linux ou o ambiente do usuário. Para modificar o shell padrão de um usuário, use:

$ 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 você pode ver na saída acima, o shell foi alterado de /bin/sh para /bin/bash para o usuário janedoe.

Diretório inicial

Como o shell padrão, o diretório inicial de um usuário pode ser modificado para um local diferente usando:

$ sudo usermod -d <new_directory_path> <username>

No exemplo abaixo, o diretório inicial do usuário 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 fazer a troca, certifique-se de que o novo diretório tenha a propriedade e as permissões corretas. Caso contrário, o usuário pode enfrentar problemas durante o login ou trabalhando no novo diretório inicial.

  Como agendar o desligamento no Linux

ID do usuário

Você pode alterar o ID de um usuário existente usando:

$ 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
$

Novamente, alterar o UID altera como o sistema de arquivos Linux mapeia a propriedade e a permissão para um arquivo ou diretório. Certifique-se de que o diretório inicial do usuário e seu conteúdo e todos os outros arquivos em qualquer lugar no sistema, originalmente de propriedade do usuário (com UID antigo), sejam alterados para UID mapeado. Não fazer isso pode causar problemas na sessão da CLI e no acesso ao arquivo pelo usuário.

Grupo padrão

O grupo padrão geralmente é o ID de grupo padrão do usuário, que é criado durante a criação do usuário, a menos que outro GID seja especificado. O Linux permite que você modifique o grupo padrão de um usuário usando o comando usermod também. Aqui está a sintaxe a ser usada:

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

Aqui está 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
$

Novamente, certifique-se de que o novo ID do grupo esteja definido no diretório inicial do usuário, conteúdo e todos os outros arquivos ou diretórios aplicáveis ​​para migrar corretamente suas permissões de propriedade.

Adicionando/Removendo Grupos

Além do grupo padrão, um usuário no Linux pode fazer parte de grupos secundários. Sempre podemos adicionar ou remover grupos adicionais aos quais um usuário pertence usando 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)
$

Da mesma forma, para remover um usuário de um dos grupos secundários, use o comando gpasswd conforme mostrado abaixo:

$ 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 usuário. Podemos modificar essas informações para um usuário existente como:

$ 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
$

Observe que, se seu comentário ou detalhes do usuário contiverem espaços, coloque esse campo entre aspas, conforme feito no exemplo acima.

  Como proteger uma unidade flash USB no Linux

Nome de acesso

O nome de login do usuário também pode ser alterado usando o comando usermod usando o sinalizador -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 do usuário de acordo com o novo nome sempre que usado. Mesmo em comandos como id, o novo nome de usuário deve ser especificado.

Removendo usuário

Um usuário pode ser removido do Linux usando 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 usuário junto com seu diretório inicial e spool de correio, adicione o sinalizador -r também.

$ sudo userdel -r <username>

Especificamente para sistemas baseados no Ubuntu, você também pode usar o comando deluser para remover um usuário:

$ sudo deluser <username>

Da mesma forma, para remover também o diretório inicial e o spool de correio, use:

$ sudo deluser --remove-home <username>

Para obter informações detalhadas e outras opções suportadas, consulte a página principal de vários comandos usando:

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

Conclusão

Este artigo mostrou vários aspectos do gerenciamento de usuários em um sistema Linux. Isso inclui uma explicação de várias categorias de usuários e como adicioná-los e removê-los. Ele também abrange várias opções que ajudam a modificar os parâmetros de um usuário existente. Embora não cubra todas as possibilidades suportadas por vários comandos, abrange muitas tarefas comuns de administração que um administrador de sistema encontrará no trabalho diário.

Você também pode estar interessado em ler: Como remover arquivos e diretórios no Linux?