04. Gerenciamento de usuários e permissões no Ubuntu Server: guia completo

Gerenciar usuários, grupos e permissões é uma das tarefas fundamentais para administradores do Ubuntu Server. Seja configurando um ambiente multiusuário ou protegendo seu servidor, é essencial entender como criar, modificar e gerenciar contas de usuário, grupos e permissões. Este guia oferece uma visão aprofundada do gerenciamento de usuários e permissões, com exemplos reais, saídas de comandos e boas práticas.


Artigo anterior:

01. Introdução ao Ubuntu Server – SysOSX: AI & Cloud

02. Como configurar seu primeiro servidor Ubuntu: guia para iniciantes – SysOSX: AI & Cloud

03. Dominando a linha de comando do Linux para o Ubuntu Server




Introdução

O Ubuntu Server é uma plataforma poderosa para hospedar aplicativos, gerenciar serviços e habilitar ambientes multiusuário. Ao dominar o gerenciamento de usuários e permissões, você pode proteger seu servidor, controlar o acesso de forma eficaz e impedir ações não autorizadas. Este guia abordará tudo, desde a criação básica de contas de usuário até configurações avançadas de permissões, com exemplos detalhados.


Criar e gerenciar contas de usuário

Criar um usuário

Para criar uma conta de usuário no Ubuntu Server, use o comando adduser. Esse comando é interativo e solicitará informações adicionais sobre o usuário.

Comando de exemplo:

sudo adduser john

Saída de exemplo:

Adding user `john' ...
Adding new group `john' (1001) ...
Adding new user `john' (1001) with group `john' ...
Creating home directory `/home/john' ...
Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for john
Enter the new value, or press ENTER for the default
        Full Name []: John Doe
        Room Number []: 101
        Work Phone []: 555-1234
        Home Phone []: 555-5678
        Other []:
Is the information correct? [Y/n] Y

Isso cria um usuário chamado john com um diretório pessoal em /home/john e atribui a ele um ID de usuário (UID) exclusivo.


Modificar um usuário

O comando usermod permite modificar contas de usuário. Por exemplo, você pode alterar o diretório pessoal, o shell ou as participações em grupos de um usuário.

Alterar o diretório pessoal:

sudo usermod -d /home/new_john john
sudo mv /home/john /home/new_john

Bloquear ou desbloquear uma conta de usuário:

  • Bloqueie a conta: sudo passwd -l john
  • Desbloqueie a conta: sudo passwd -u john

Saída de exemplo (bloqueio de conta):

passwd: password expiry information changed.


Excluir um usuário

Para excluir um usuário, use o comando deluser. Você também pode remover seu diretório pessoal e os arquivos associados.

Comando de exemplo:

sudo deluser --remove-home john

Saída de exemplo:

Looking for files to backup/remove ...
Removing files ...
Removing user `john' ...
Warning: group `john' has no more members.
Done.


Gerenciar grupos

Grupos são uma forma de organizar usuários e atribuir permissões coletivas. Cada usuário pode pertencer a vários grupos.

Criar e gerenciar grupos

Para criar um grupo, use o comando addgroup.

Comando de exemplo:

sudo addgroup developers

Saída de exemplo:

Adding group `developers' (GID 1002) ...
Done.

Para excluir um grupo:

sudo delgroup developers

Adicionar usuários a grupos

Para adicionar um usuário a um grupo, use o comando usermod com a opção -aG.

Comando de exemplo:

sudo usermod -aG developers john

Verificar a participação em grupos:

groups john

Saída de exemplo:

john : john developers

Isso mostra que john pertence aos grupos john e developers.


Compreendendo as permissões de arquivos e diretórios

As permissões de arquivos do Linux são cruciais para controlar o acesso a arquivos e diretórios. As permissões são definidas para três categorias: Proprietário, Grupo, e Outros.

Tipos de permissões

Cada categoria tem três tipos de permissões:

  • Leitura (r): permite visualizar o conteúdo de arquivos ou listar o conteúdo de diretórios.
  • Escrita (w): permite modificar o conteúdo de arquivos ou criar/excluir arquivos em um diretório.
  • Execução (x): permite executar arquivos executáveis ou acessar diretórios.

Exemplo:

Use ls -l para ver as permissões de arquivo:

ls -l /home/john

Saída de exemplo:

-rw-r--r-- 1 john john 4096 Mar 21 14:00 file.txt

  • rw-: o proprietário (john) tem permissões de leitura e escrita.
  • r--: o grupo (john) tem permissões de somente leitura.
  • r--: outros têm permissões de somente leitura.

Alterar permissões

Use o comando chmod para modificar as permissões.

Comandos de exemplo:

  • Conceda permissão de execução ao proprietário: chmod u+x file.txt
  • Remova a permissão de escrita para outros: chmod o-w file.txt

Usar valores numéricos:

As permissões também podem ser definidas usando valores numéricos:

chmod 755 file.txt: permissões completas para o proprietário, leitura/execução para o grupo e outros.


Compreendendo as permissões numéricas (755, 777, 744)

As permissões do Linux podem ser representadas numericamente, em que cada dígito corresponde a um nível de permissão específico:

Estrutura das permissões numéricas:

Cada permissão numérica consiste em três dígitos:

  • Primeiro dígito: permissões para o proprietário.
  • Segundo dígito: permissões para o grupo.
  • Terceiro dígito: permissões para outros.

Cada dígito é calculado com base nos seguintes valores:

  • 4: leitura (r)
  • 2: escrita (w)
  • 1: execução (x)

A soma desses valores determina o nível de permissão para cada categoria.

Permissões numéricas comuns:

  1. 777: permissões completas para todos (leitura, escrita, execução).
    • Proprietário: rwx
    • Grupo: rwx
    • Outros: rwx
    • Caso de uso: raramente usado por razões de segurança, mas pode ser aplicado a diretórios temporários como /tmp.
  2. 755: permissões completas para o proprietário, permissões de leitura e execução para o grupo e outros.
    • Proprietário: rwx
    • Grupo: r-x
    • Outros: r-x
    • Caso de uso: comum para arquivos executáveis ou diretórios.
  3. 744: permissões completas para o proprietário, somente leitura para o grupo e outros.
    • Proprietário: rwx
    • Grupo: r--
    • Outros: r--
    • Caso de uso: comum para arquivos privados.

Exemplo:

Para definir as permissões de um script como 755:

chmod 755 script.sh

Saída de exemplo:

-rwxr-xr-x 1 john john 4096 Mar 21 14:00 script.sh

Gerenciamento de propriedade

Altere a propriedade com o comando chown.

Comando de exemplo:

sudo chown john:developers file.txt

Isso define o proprietário como john e o grupo como developers.

Saída de exemplo:

-rw-r--r-- 1 john developers 4096 Mar 21 14:00 file.txt


Usar o Sudo para escalação de privilégios

O comando sudo permite que os usuários executem comandos com privilégios elevados. Para conceder acesso sudo a um usuário, adicione-o ao grupo sudo.

Comando de exemplo:

sudo usermod -aG sudo john

Verificar o acesso Sudo:

sudo -l -U john

Saída de exemplo:

User john may run the following commands on this host:
    (ALL : ALL) ALL

Boas práticas para proteger contas de usuário

  • Aplique políticas de senhas fortes:
    Use passwd para definir a expiração da senha: sudo passwd -e john
  • Limite o acesso Sudo:
    Conceda privilégios sudo apenas a usuários confiáveis.
  • Desative o login como root:
    Edite o arquivo de configuração do SSH:
sudo nano /etc/ssh/sshd_config 

Defina:

PermitRootLogin no
  • Use chaves SSH para autenticação:
    Substitua o login baseado em senha por chaves SSH.
  • Monitore a atividade dos usuários:
    Use last ou who para acompanhar a atividade de login:
last

Explicação da saída

uadmin   pts/1   192.168.255.48   Fri Mar 21 13:55   still logged in
uadmin   pts/0   192.168.255.48   Fri Mar 21 13:54   still logged in
uadmin   pts/1   192.168.255.48   Fri Mar 21 01:49 - 08:19  (06:29)
uadmin   pts/0   192.168.255.48   Fri Mar 21 00:53 - 08:19  (07:26)
reboot   system boot   6.8.0-1021-azure   Fri Mar 21 00:22   still running


Análise linha por linha

Login de usuário: uadmin pts/1 192.168.255.48 Fri Mar 21 13:55 still logged in

  • uadmin: o nome de usuário do usuário que fez login.
  • pts/1: a sessão de pseudoterminal usada para o login. Pseudoterminais (pts) são terminais virtuais, normalmente criados quando os usuários fazem login via SSH.
  • 192.168.255.48: o endereço IP da máquina remota a partir da qual o usuário se conectou.
  • Fri Mar 21 13:55: a data e a hora em que o usuário fez login.
  • still logged in: indica que o usuário está conectado no momento e ativo.
ColunaSignificado
Nome de usuárioNome do usuário ou evento (uadmin, reboot).
TerminalSessão de pseudoterminal (pts/X) ou evento do sistema (system boot).
Host remoto/IPEndereço IP ou nome de host da máquina remota que inicia a conexão.
Data/hora de loginData e hora em que o login ou evento começou.
Hora de logoutData e hora em que a sessão terminou (se aplicável).
DuraçãoTempo total de duração da sessão (se aplicável).
Status da sessãoStatus atual da sessão (still logged in, still running).

Comandos adicionais para obter informações

  • Mostrar usuários conectados no momento: who
  • Saída de exemplo:
uadmin pts/1 2023-03-21 13:55 (192.168.255.48) 
uadmin pts/0 2023-03-21 13:54 (192.168.255.48)
  • Verificar o tempo de atividade do sistema: uptime
  • Saída de exemplo:
14:15:32 up 13:53, 2 users, load average: 0.10, 0.12, 0.15

Conclusão

Gerenciar usuários, grupos e permissões é uma habilidade fundamental para administradores do Ubuntu Server. Ao dominar essas tarefas, você pode proteger seu servidor, impedir o acesso não autorizado e melhorar a eficiência operacional.


Próximo tutorial: Conceitos básicos de rede para o Ubuntu Server

No próximo tutorial, abordaremos  os conceitos básicos de rede para o Ubuntu Server, incluindo a configuração de interfaces de rede, a definição de IPs estáticos, a solução de problemas de conectividade de rede e o uso do netplan do Ubuntu para tarefas de rede. Fique atento para obter informações práticas para otimizar a configuração de rede do seu servidor.