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
/etc/shadow
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
, enquanto os grupos secundários são armazenados no arquivo/etc/passwd
./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
, 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./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
Todas as tarefas do sudo
/etc/sudoers
cat
programicio@Programicio:~$ cat /etc/sudoers cat: /etc/sudoers: Permission denied
Para abrir o arquivo /etc/sudoers
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
cat
É importante nunca abrir o arquivo /etc/sudoers
sudo visudo /etc/sudoers
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
%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
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
/usr/bin/passwd
/usr/sbin/usermod
%developers ALL=SYSTEM
Dessa forma, os usuários do grupo developers
SYSTEM