O gerenciamento de usuários e grupos é uma parte essencial da administração de sistemas Linux. Ele permite que você controle o acesso ao sistema, configure permissões adequadas e mantenha a segurança. Agora, exploraremos como criar, modificar e excluir usuários e grupos, além de configurar suas permissões e propriedades.
Conceitos Básicos
Usuários
No Linux, cada usuário tem um nome de usuário (username), um UID (User ID) e está associado a um grupo principal (primary group) e possivelmente a grupos suplementares (secondary groups). O arquivo /etc/passwd
contém informações sobre os usuários.
Grupos
Os grupos são usados para agrupar usuários e gerenciar permissões coletivamente. Cada grupo tem um nome de grupo (group name) e um GID (Group ID). O arquivo /etc/group
contém informações sobre os grupos.
Comandos para Gerenciamento de Usuários
Comando useradd
O comando useradd
é usado para criar novos usuários. Ele permite especificar várias opções, como o diretório home, o shell de login, e grupos adicionais.
$ sudo useradd -m -s /bin/bash -G grupo_suplementar novo_usuario
-m
: Cria um diretório home.-s
: Especifica o shell de login.-G
: Adiciona o usuário a grupos suplementares.
Exemplo Prático
Para criar um usuário chamado joao
com diretório home, shell Bash, e adicioná-lo ao grupo sudo
:
$ sudo useradd -m -s /bin/bash -G sudo joao
$ sudo passwd joao
# Defina uma senha para o usuário joao
Comando usermod
O comando usermod
é usado para modificar contas de usuários existentes. Ele permite alterar o diretório home, o shell de login, e grupos suplementares.
$ sudo usermod -s /bin/zsh joao
-s
: Altera o shell de login.-d
: Altera o diretório home.-G
: Define grupos suplementares.
Exemplo Prático
Para adicionar o usuário joao
ao grupo developers
:
$ sudo usermod -aG developers joao
O parâmetro -aG
adiciona o usuário a grupos suplementares sem removê-lo dos grupos atuais.
Comando userdel
O comando userdel
é usado para excluir usuários. Ele pode excluir o diretório home e outros arquivos associados ao usuário.
$ sudo userdel -r joao
-r
: Remove o diretório home e os arquivos do usuário.
Exemplo Prático
Para excluir o usuário joao
e seu diretório home:
$ sudo userdel -r joao
Comandos para Gerenciamento de Grupos
Comando groupadd
O comando groupadd
é usado para criar novos grupos.
$ sudo groupadd developers
Exemplo Prático
Para criar um grupo chamado analysts
:
$ sudo groupadd analysts
Comando groupmod
O comando groupmod
é usado para modificar grupos existentes, como alterar o nome do grupo ou o GID.
$ sudo groupmod -n novo_nome developers
-n
: Altera o nome do grupo.-g
: Altera o GID do grupo.
Exemplo Prático
Para alterar o nome do grupo analysts
para data_analysts
:
$ sudo groupmod -n data_analysts analysts
Comando groupdel
O comando groupdel
é usado para excluir grupos.
$ sudo groupdel developers
Exemplo Prático
Para excluir o grupo analysts
:
$ sudo groupdel analysts
Gerenciamento de Senhas
Comando passwd
O comando passwd
é usado para definir ou alterar senhas de usuários.
$ sudo passwd joao
Exemplo Prático
Para forçar o usuário joao
a alterar sua senha no próximo login:
$ sudo passwd -e joao
-e
: Expira a senha do usuário, forçando-o a definir uma nova no próximo login.
Arquivos Importantes
/etc/passwd
O arquivo /etc/passwd
contém informações sobre os usuários do sistema. Cada linha representa um usuário, com campos separados por dois-pontos (:
).
joao:x:1001:1001:Joao da Silva:/home/joao:/bin/bash
joao
: Nome de usuário.x
: Senha (armazena uma referência à senha criptografada no arquivo/etc/shadow
).1001
: UID.1001
: GID do grupo principal.Joao da Silva
: Campo de comentário (GECOS)./home/joao
: Diretório home./bin/bash
: Shell de login.
/etc/shadow
O arquivo /etc/shadow
armazena senhas criptografadas e informações de expiração de senhas.
joao:$6$saltsalt$hashedpassword:18598:0:99999:7:::
joao
: Nome de usuário.$6$saltsalt$hashedpassword
: Senha criptografada.18598
: Última alteração de senha (em dias desde 1 de janeiro de 1970).0
: Dias até que a senha possa ser alterada.99999
: Dias até que a senha deva ser alterada.7
: Dias de aviso antes de expirar a senha.::
: Campos reservados para expiração da conta e outras informações.
/etc/group
O arquivo /etc/group
contém informações sobre os grupos do sistema. Cada linha representa um grupo, com campos separados por dois-pontos (:
).
developers:x:1002:joao,maria
developers
: Nome do grupo.x
: Senha do grupo (geralmente não usada).1002
: GID.joao,maria
: Lista de usuários membros do grupo.
Exemplos Práticos
Exemplo 1: Criando e Configurando um Usuário
- Crie um novo usuário chamado
carlos
com um diretório home e adicione-o ao gruposudo
:
$ sudo useradd -m -s /bin/bash -G sudo carlos
$ sudo passwd carlos
- Adicione
carlos
ao grupodevelopers
:
$ sudo usermod -aG developers carlos
- Verifique as informações do usuário
carlos
:
$ id carlos
uid=1002(carlos) gid=1002(carlos) groups=1002(carlos),27(sudo),1001(developers)
Exemplo 2: Gerenciando Grupos
- Crie um grupo chamado
qa
:
$ sudo groupadd qa
- Adicione o usuário
maria
ao grupoqa
:
$ sudo usermod -aG qa maria
- Verifique a associação do grupo
qa
:
$ getent group qa
qa:x:1003:maria
Exemplo 3: Configurando Políticas de Senha
- Expire a senha do usuário
carlos
para que ele seja forçado a alterá-la no próximo login:
$ sudo passwd -e carlos
- Defina um tempo máximo de 90 dias para a senha do usuário
maria
:
$ sudo chage -M 90 maria
- Verifique as políticas de senha do usuário
maria
:
$ sudo chage -l maria
Última alteração de senha : mai 18, 2024
Senha expira : ago 16, 2024
Senha inativa : nunca
Conta expira : nunca
Número mínimo de dias entre mudanças de senha : 0
Número máximo de dias entre mudanças de senha : 90
Número de dias de aviso antes da expiração da senha : 7
O gerenciamento de usuários e grupos é essencial para a segurança e a administração eficiente de sistemas Linux. Nesta aula, exploramos como criar, modificar e excluir usuários e grupos, além de configurar suas permissões e propriedades. Pratique esses comandos para ganhar confiança no gerenciamento de usuários e grupos no Linux.
Se tiver dúvidas ou sugestões, deixe um comentário no blog NerdExpert.com.br. Na próxima aula, exploraremos o gerenciamento de permissões avançadas e ACLs (Access Control Lists) no Linux.
Sou um profissional na área de Tecnologia da informação, especializado em monitoramento de ambientes, Sysadmin e na cultura DevOps. Possuo certificações de Segurança, AWS e Zabbix.