Atualizado: 24/10/2024

Usuários no Linux

Gerenciar usuários e grupos no Linux é crucial para garantir a segurança e o controle de acesso. Diversos comandos permitem criar, excluir e modificar usuários no sistema. Esses comandos possibilitam aos administradores criar contas de usuário, atribuir permissões e restringir o acesso a recursos. Antes de explorar esses comandos, é importante entender o que é um usuário no Linux.

No Linux, um usuário não está necessariamente vinculado apenas a uma pessoa que faz login no computador. Uma conta de usuário é um objeto criado no sistema Linux para conceder permissões que permitem ao usuário executar certas tarefas. Contas de usuário existem tanto para pessoas que precisam acessar o computador quanto para serviços que necessitam acessar determinados arquivos e outros recursos do sistema.

No Linux, Os usuários possuem diversas propriedades. Essas propriedades são armazenadas nos arquivos /etc/passwd e /etc/shadow. Em particular, essas propriedades incluem:

  • Username (nome/login do usuário): Cada usuário possui um nome único, usado para autenticação no sistema. Por padrão, alguns nomes de usuário já estarão presentes no sistema. Um desses nomes é "root", usado para fins de administração do sistema. Alguns nomes de usuários padrão são necessários para tarefas e serviços do sistema e não devem ser alterados ou removidos.

  • Password (senha): Cada usuário deve ter uma senha, necessária para a autenticação no sistema Linux. Ao definir uma senha, o administrador também pode configurar algumas propriedades da senha, como sua validade. O usuário root também pode desativar a senha, caso não queira que um determinado usuário faça login no sistema. A senha e suas configurações correspondentes são armazenadas no arquivo /etc/shadow.

  • UID (identificador de usuário): Os identificadores de usuário são a única maneira de identificar um usuário de forma única, já que os nomes de usuário são usados mais por conveniência. A maioria das distribuições Linux começa a gerar UID para usuários locais a partir de 1000. O UID 0 é especial: o usuário com este UID possui direitos administrativos completos no computador. O UID 0 é geralmente reservado para o usuário root.

  • GID (identificador do grupo principal do usuário): No Linux, todos os usuários devem ser membros de pelo menos um grupo, que é o grupo principal. Além do grupo principal, os usuários podem ser membros de grupos adicionais. As configurações do grupo principal são armazenadas no arquivo /etc/passwd, enquanto os grupos secundários são armazenados no arquivo /etc/group.

  • GECOS (comentário): O comentário é opcional e geralmente contém uma descrição da conta do usuário.

  • Diretório home: A maioria dos usuários tem um diretório home com uma estrutura básica. Nesse diretório, que geralmente localizado em /home, os usuários podem armazenar arquivos. Também podem ser armazenados arquivos de configuração específicos do usuário. Contudo, em princípio, não é obrigatório que um usuário tenha um diretório home.

  • Shell padrão: Qualquer usuário que precise fazer login no sistema precisa de um shell (embora nem todos os usuários precisem fazer login). O shell representa o ambiente no qual o usuário insere comandos para serem executados no computador.

root, sudo e Privilégios de Administrador

Existem duas formas principais de autenticação de usuários no Linux: como usuário root ou como usuário sem privilégios de root. Não usar a conta root por padrão é uma boa prática. Como o root pode fazer qualquer coisa, um pequeno erro pode ter grandes consequências. Quando você está logado como root, pode acidentalmente destruir tudo no seu sistema e o Linux não vai perguntar se você tem certeza dessa ação. Portanto, é recomendado fazer login como um usuário comum e obter privilégios de root apenas quando realmente necessário. Para a maioria das tarefas usuais, os privilégios de root não são necessários. No entanto, para certas ações relacionadas à administração, os privilégios de root podem ser necessários.

Em alguns sistemas, como o Ubuntu, a conta root está desabilitada por padrão e não pode ser usada para login. Após a instalação do Ubuntu, é criado um usuário que é membro do grupo de administradores. Todas as ações que exigem privilégios de root devem ser executadas por esse usuário e iniciadas com o comando sudo.

Mesmo que a conta root não esteja desabilitada por padrão, o uso do sudo ainda pode ser uma boa ideia. Isso é especialmente relevante em ambientes onde usuários específicos ou grupos de usuários precisam de privilégios de root para executar um conjunto limitado de tarefas.

Todas as tarefas do sudo que devem estar disponíveis no computador atual são definidas no arquivo /etc/sudoers. Por exemplo, vamos exibir o conteúdo desse arquivo com o comando cat. É possível que ao executar esse comando, a console mostre uma mensagem de erro:

programicio@Programicio:~$ cat /etc/sudoers
cat: /etc/sudoers: Permission denied

Para abrir o arquivo /etc/sudoers, assim como outros arquivos de configuração por padrão, pode ser necessário usar o comando sudo:

programicio@Programicio:~$ sudo cat /etc/sudoers
[sudo] password for programicio:
#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults    env_reset
Defaults    mail_badpass
Defaults    secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"

# This fixes CVE-2005-4890 and possibly breaks some versions of kdesu
# (#1011624, https://bugs.kde.org/show_bug.cgi?id=452532)
Defaults    use_pty

...................................

# User privilege specification
root    ALL=(ALL:ALL) ALL

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command
%sudo    ALL=(ALL:ALL) ALL

# See sudoers(5) for more information on "@include" directives:

@includedir /etc/sudoers.d
programicio@Programicio:~$

Ao executar esse comando com sudo, a console solicitará a senha, e após a senha correta ser fornecida, o comando principal será executado. Neste caso, o comando cat exibirá o conteúdo do arquivo.

É importante nunca abrir o arquivo /etc/sudoers para edição direta, pois isso pode resultar em um bloqueio completo do sistema em caso de erro. Se for necessário editar o arquivo, utilize o comando sudo visudo /etc/sudoers, que abre o arquivo em um editor de texto seguro.

Vamos analisar as principais linhas de configuração. Primeiramente, temos a linha:

root    ALL=(ALL:ALL) ALL

Essa linha indica que o usuário root tem permissão para executar todos os comandos em todos os hosts (computadores). Em seguida, você pode ver que o mesmo se aplica a todos os usuários que pertencem aos grupos admin e sudo:

%admin ALL=(ALL) ALL
%sudo  ALL=(ALL:ALL) ALL

Da mesma forma, é possível conceder permissões semelhantes a outros grupos. Por exemplo:

%developers ALL=(ALL) ALL

Nesse caso, todos os usuários do grupo developers têm permissão para executar tarefas administrativas. Antes de executar a tarefa, será solicitado que esses usuários insiram a senha. Se não for necessário solicitar a senha aos usuários desse grupo, pode-se usar a seguinte linha:

%developers ALL=(ALL) NOPASSWD: ALL

Também é possível permitir que um usuário específico execute um comando como administrador. Por exemplo, se temos um usuário chamado "superuser1" e queremos dar a ele permissão para executar o comando /usr/bin/passwd (comando de gerenciamento de senha), podemos adicionar a seguinte linha ao arquivo:

superuser1 ALL=/usr/bin/passwd

De forma semelhante, podemos especificar tarefas individuais para grupos:

%developers ALL=/usr/bin/passwd

Se for necessário conceder acesso a um conjunto limitado de tarefas, é possível definir um alias usando Cmnd_Alias:

Cmnd_Alias SYSTEM = /usr/bin/passwd, /usr/sbin/usermod

Nesse caso, o alias SYSTEM é definido para os comandos /usr/bin/passwd e /usr/sbin/usermod (comando de modificação de usuários). Usando esse alias, podemos atribuir esses comandos a um usuário ou grupo:

%developers ALL=SYSTEM

Dessa forma, os usuários do grupo developers têm permissão para executar as tarefas especificadas pelo alias SYSTEM.

Política de Privacidade

Copyright © www.programicio.com Todos os direitos reservados

É proibida a reprodução do conteúdo desta página sem autorização prévia do autor.

Contato: programicio@gmail.com