Linux - Usuários
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.
Username (nome/login do usuário)
Password (senha)
UID (identificador de usuário)
GID (identificador do grupo principal do usuário)
GECOS (comentário)
Diretório home
Shell padrão
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
.