Gerenciamento de usuários no Bash

Curso de Bash

Seção do curso de Bash sobre como criar (useradd), editar (usermod) e remover (userdel) usuários.

Conteúdo

  1. Qual meu usuário e grupo?
  2. Listando usuários com getent
  3. Adicionando usuários com useradd
  4. Mudando senha com passwd
  5. Autenticando com su
  6. O que são grupos?
  7. Adicionando usuários em grupos com usermod
  8. Removendo usuários com userdel
  9. Alterando usuário dono de arquivo/diretório com chown
  10. Exercícios

Qual meu usuário e grupo?

Execute whoami para verificar o usuário autenticado .

whoami
caio

groups sem argumentos exibe os grupos do usuário autenticado.

groups
caio adm cdrom sudo dip plugdev lpadmin lxd sambashare

Quando um usuário é enviado como argumento, groups exibe os grupos daquele usuário.

groups usuario
usuario

Listando usuários com getent

O comando getent lista entradas em bases de dados. Entre as bases temos passwd, que é a base de dados dos usuários do sistema e usuários comuns.

A base de dados deve ser informada como primeiro argumento para getent. Do segundo argumento em diante podemos enviar, opcionalmente, chaves que restrigirão apenas entradas correspondentes às chaves.

getent passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
## Saída suprimida...
caio:x:1000:1000:Caio Santesso,,,:/home/caio:/bin/bash
systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologin
gnome-initial-setup:x:125:65534::/run/gnome-initial-setup/:/bin/false
gdm:x:126:134:Gnome Display Manager:/var/lib/gdm3:/bin/false

Cada linha representa um usuário. A maioria sendo usuários de sistema, com os quais não podemos nos autenticar.

Verificando usuários comuns

O único usuário comum neste SO é caio.

caio:x:1000:1000:Caio Santesso,,,:/home/caio:/bin/bash

Na terceira coluna (cada coluna é limitada por :) temos 1000 que é o UID do usuário. UID é um identificador único para cada usuário, seja usuário de sistema ou usuário comum.

Usuários comuns geralmente tem UID 1000 ou maior.

Vamos então confirmar o UID mínimo no SO que estou utilizando filtrando a linha contendo UID_MIN no arquivo /etc/login.defs.

grep UID_MIN /etc/login.defs
UID_MIN                  1000
#SYS_UID_MIN              100

Com essa informação podemos informar agora ao getent os UIDs possíveis para usuários comuns e então obter a lista.

{1000..9999} é uma expansão de chaves. Bash gerará um lista de números entre 1000 e 9999 e cada um deles será enviado como argumento. Abordaremos expansões em capítulos posteriores.

getent passwd {1000..9999}
caio:x:1000:1000:Caio Santesso,,,:/home/caio:/bin/bash

⚠️ 9999 é um número arbitrário. Ao criarmos um usuário podemos definir um UID maior que 9999, fato que faria com que o usuário não fosse exibido no comando acima. Porém se não definirmos, o UID será incrementado de um em um para cada novo usuário.

Adicionando usuários com useradd

useradd cria usuários comuns. Operação que precisa de privilégios elevados, portanto sudo deve ser especificado antes de useradd.

A opção -m criará um diretório de usuário em /home e a opção -s definirá o shell padrão para o usuário a ser criado.

sudo useradd -m -s /bin/bash usuario
[sudo] password for caio:

A base de dados passwd, arquivo localizado em /etc/passwd, passa a exibir o novo usuário. Note na sexta coluna (cada coluna é limitada por :) o diretório de usuário.

getent passwd {1000..9999}
caio:x:1000:1000:Caio Santesso,,,:/home/caio:/bin/bash
usuario:x:1001:1001::/home/usuario:/bin/bash

Mudando senha com passwd

passwd é o comando para definirmos ou trocarmos senha de usuário.

Sem argumentos, passwd troca a senha do usuário atual.

passwd
Current password:

Se o primeiro argumento é um usuário válido, passwd então define ou troca a senha. sudo é necessário.

sudo passwd usuario

A primeira senha solicitada é a do usuário atual para que sudo conceda privilégios de super usuário para a operação.

E então a nova senha para o usuário é requerida duas vezes.

[sudo] password for caio:
New password:
Retype new password:
passwd: password updated successfully

Autenticando com su

Uma vez que o novo usuário tenha uma senha definida, será possível utilizá-lo na autenticação por meio de interface gráfica ou terminal.

Para utilizar o usuário apenas para executar um comando: sudo com a opção -u seguida pelo usuário e então o comando a ser executado.

sudo -u usuario whoami

⚠️ Perceba que a senha requisitada é a senha do usuário executando sudo.

[sudo] password for caio:
usuario

Utilize su mais a opção - ou -l para autenticar-se como outro usuário.

su - usuario

A senha do usuário enviado como argumento será solicitada e então o prompt para o usuário será exibido.

Password:
usuario@FX505DV:~$

Para sair da sessão de usuario pressione Ctrl + D ou execute o comando exit.

O que são grupos?

Grupo de usuário é uma coleção de usuários.

Grupos facilitam a administração de privilégios para usuários já que todos os privilégios garantidos à um grupo são estendidos aos seus usuários.

Grupo primário é o grupo criado ao mesmo tempo que o usuário e carrega o mesmo nome. O próprio usuário é o único integrante do grupo. É o grupo associado ao arquivo/diretório criado pelo usuário.

O usuário autenticado usuario.

whoami
usuario

O único grupo do qual faz parte: usuario.

groups
usuario

grupos secundários são grupos com zero ou mais integrantes

Adicionando usuários em grupos com usermod

Como visto na seção anterior, usuario não faz parte de nenhum grupo secundário.

A opção -G do comando usermod permite redefinir os grupos secundários no qual o usuário faz parte. Grupos especificados serão adicionados, grupos não mencionados do qual o usuário faz parte serão removidos a não ser que a opção -a esteja presente.

Abaixo usuario é incluído no grupo sudo.

sudo usermod -Ga sudo usuario
groups usuario
usuario sudo

Vamos nos autenticar com usuario.

su - usuario

Agora que usuarìo faz parte do grupo sudo, usuario poderá executar qualquer comando que requeira sudo.

sudo adduser -m outro_usuario
getent passwd {1000..9999}
caio:x:1000:1000:Caio Santesso,,,:/home/caio:/bin/bash
usuario:x:1001:1001::/home/usuario:/bin/bash
outro_usuario:x:1002:1002::/home/outro_usuario:/bin/sh

exit ou Ctrl + D para sairmos da sessão de usuario.

exit
caio@FX505DV:~$

Para remover usuario do grupo sudo podemos redefinir a lista de grupos secundários.

sudo usermod -G '' usuario

⚠️ O efeito não é imediato, apenas na próxima autenticação o usuário estará sem os privilégios do grupo.

Removendo usuários com userdel

userdel remove usuários. Sua opção -r remove o diretório de usuário.

sudo userdel -r outro_usuario
getent passwd {1000..9999}
caio:x:1000:1000:Caio Santesso,,,:/home/caio:/bin/bash
usuario:x:1001:1001::/home/usuario:/bin/bash

Alterando usuário dono de arquivo/diretório com chown

chown altera para o usuário especificado no primeiro argumento a propriedade do arquivo/diretório especificado no segundo argumento.

Abaixo arquivo criado pelo usuário caio.

touch seu_arquivo
ls -l seu_arquivo
-rw-rw-r-- 1 caio caio 0 Nov  9 22:06 seu_arquivo

chmod transfere a propriedade do arquivo de caio para usuario, retendo a informação sobre o grupo caio.

sudo chown usuario seu_arquivo
ls -l seu_arquivo
-rw-rw-r-- 1 usuario caio 0 Nov  9 22:06 seu_arquivo

Alternativamente o primeiro argumento de chmod pode ser um grupo, para tanto basta adicionar : à frente do grupo.

sudo chown :usuario seu_arquivo
ls -l seu_arquivo
-rw-rw-r-- 1 usuario usuario 0 Nov  9 22:06 seu_arquivo

Exercícios

Nah. 😃

Escrito por Caio Santesso.

Comentários

  • Conteúdo dos posts, exceto onde indicado contrário, licenciado sob a licença CC BY-SA 4.0 .