Comandos para administração de usuários no Linux

Há um booom tempo atrás, estava estudando sobre administração de usuários no Linux, e escrevi os posts Arquivos de usuários, grupos e senhas e Criando usuários e grupos.

Retomei os estudos e percebi que nos posts alguns comandos não foram colocados e anotei aqui, para relembrar :).

1) Como remover um usuário criado?

Para remover um usuário criado, utiliza-se o comando userdel. Exemplo:

# userdel asmith

O comando acima remove o usuário e grupo asmith, mantendo o seu diretório home. Para remover o home automaticamente, utilize a opção -r:

# userdel -r asmith

2) Como remover um grupo criado?

Para remover um grupo criado, utiliza-se o comando groupdel. Exemplo:

# groupdel marketing

Vale a pena mencionar que para remover usuários e grupos, também pode-se usar os comandos deluser e delgroup. A função dos comandos é remover usuários e grupos respectivamente, porém eles contém mais opções que podem ser utilizadas, como por exemplo, é possível criar um backup do diretório home e do email (arquivos contidos em /var/spool/mail) do usuário que está sendo removido, ou ainda, solicitar que todos arquivos dentro do sistema que sejam desse usuário sejam removidos, não somente o diretório home.

Para saber mais:

# man userdel
# man groupdel
# man deluser
# man delgroup

3) Como retirar um usuário de um grupo?

# gpasswd -d neo diretoria
Removing user neo from group diretoria

4) Editando os arquivos /etc/passwd e /etc/shadow

Muitas vezes, ao alterar o arquivo /etc/passwd, simplesmente utilizamos um editor de textos, porém para uma edição segura desse arquivo é recomendado utilizar o comando vipw:

# vipw

A utilização desse comando bloqueia o /etc/passwd contra outras possíveis alterações e evita a corrupção do arquivo, caso outra pessoa também esteja mexendo. O editor de textos utilizado será o que está configurado na variável de ambiente EDITOR ou VISUAL; caso as variáveis não estejam configuradas, o vi será utilizado. Para editar o /etc/shadow de forma segura, basta utilizar o comando vipw com a opção -s:

# vipw -s

5) Editando o arquivo /etc/group

Para evitar outras possíveis alterações enquanto é realizada uma edição no arquivo /etc/group, é possível utilizar o comando vigr. Assim como no comando vipw, o editor de textos utilizado será o configurado na variável de ambiente EDITOR ou VISUAL; caso as variáveis não estejam configuradas, o vi será utilizado:

# vigr

6) Diretório skel

Já reparou quando cria um usuário, ele já vem populado com arquivos ocultos ou até mesmo diretórios já criados? Isso ocorre porque o diretório /etc/skel mantém os esqueletos (templates) dos arquivos .bash_profile e .bashrc que são copiados para o diretório pessoal do usuário no momento que for criada uma conta no sistema; isto é, quando um usuário é criado, todo o conteúdo desse diretório é copiado para o home do novo usuário.
Lembrando que o os arquivos iniciandos com ‘.’ são ocultos, para visualizar o conteúdo do diretório, basta utilziar o comando ls com a opção -a:

# ls -a /etc/skel/
. .. .bash_logout .config Desktop .mozilla .profile

7) Comando id

Mostra a identificação atual do usuário, grupo primário e outros grupos que pertence.

$ id
uid=1000(ivani) gid=1000(ivani) groups=1000(ivani),4(adm),7(lp),27(sudo),107(lpadmin),125(sambashare),128(vboxusers),1001(jupiter)

8) Comando usermod

Modifica ou adiciona informações relativas a um usuário já cadastrado. Exemplos:

a) Colocar o usuário ivani nos grupos marketing,ti:

# usermod -a -G marketing, ti ivani

Onde a opção -a é para adicionar, -G indica os grupos que o usuário fará parte.

b) Para bloquear a conta do usuário asmith:

# usermod -L asmith

Onde a opção -L é lock (bloqueio) e coloca o sinal ‘!’ (exclamação) em frente à senha criptografada no arquivo /etc/shadow, desabilitando o acesso à conta:

# grep asmith /etc/shadow
asmith:!$6$Q9NYiSY.$gyh2g7T1LGjR2qsay9i6ov76QX7ojxQML6M8Nc4yeOpwWM7T1Pagk43s174fKjuhXDmqXyzBpx870lHAQ/EwB.:15829:0:99999:7:::

c) Para desbloquear a conta asmith:

# usermod -U asmith

Onde a opção -U é de unlock (desbloqueio). Note que na saída do comando, agora não existe mais o ‘!’ e o usuário pode conectar normalmente no sistema:

# grep asmith /etc/shadow
asmith:$6$Q9NYiSY.$gyh2g7T1LGjR2qsay9i6ov76QX7ojxQML6M8Nc4yeOpwWM7T1Pagk43s174fKjuhXDmqXyzBpx870lHAQ/EwB.:15829:0:99999:7:::

Até a próxima! 🙂

Anúncios

Criando usuários e grupos

No post anterior, falei sobre os arquivos que são utilizados na administração dos usuários.

Agora, vamos ver comandos para criação de usuários e grupos. Para facilitar, vamos ver um cenário que envolvam esses comandos!

Imaginem o seguinte: começamos hoje a empresa Zion S/A. E, como a empresa está começando agora, temos poucos funcionários! Na verdade, 3 funcionários, para ser mais exata… e aqui, existem diretórios que os usuários poderão acessar, e outros que eles não podem nem dar uma espiadinha!

Para isso, vamos usar 4 terminais:

Terminal 1 – vamos logar como root
Terminal 2 – Usuário trinity a ser criado ainda
Terminal 3 – Usuário neo a ser criado ainda
Terminal 4 – Usuário smith a ser criado ainda

Nossa primeira tarefa, é criar os usuários que vamos administrar! O comando que adiciona usuários, é o adduser. Vou mostrar aqui a saída do comando adduser para criar o usuário trinity no sistema:

# adduser trinity
Adding user `trinity’ …
Adding new group `trinity’ (1001) …
Adding new user `trinity’ (1001) with group `trinity’ …
Creating home directory `/home/trinity’ …
Copying files from `/etc/skel’ …
Enter new UNIX password:
Retype new UNIX password:
passwd: senha atualizada com sucesso
Modificando as informações de usuário para trinity
Informe o novo valor ou pressione ENTER para aceitar o padrão
Nome Completo []: Trinity
Número da Sala []:
Fone de Trabalho []:
Fone Doméstico []:
Outro []:
A informação está correta? [s/N] s

Vejam que o comando já pede para definir uma senha para o usuário e podemos colocar informações sobre o usuário tais como nome, telefone, número de sala, etc.

Para criar os demais usuários:

# adduser neo

# adduser smith

No post anterior, vimos que o arquivo que guarda as informações dos usuários é o /etc/passwd. Para checar os usuários que acabamos de criar, vamos olhar como está o arquivo:

# tail -3 /etc/passwd
trinity: x:1001:1001:Trinity,,,:/home/trinity:/bin/bash
neo: x:1002:1002:Neo,,,:/home/neo:/bin/bash
smith: x:1003:1003:Smith,,,:/home/smith:/bin/bash

Os usuários estão criados… e a senha deles, já estão guardadas criptografadas no /etc/shadow:

# tail -3 /etc/shadow
trinity:$1$S/0yDNO.$HL8QXJ77ChzruQ2xKM6Zw0:14245:0:99999:7:::
neo:$1$sy2V2cMG$IFIp0OmcvJEBT953/pb4R/:14245:0:99999:7:::
smith:$1$oeNNr8oo$QrjHUuoYCv54LaRDmcffv0:14245:0:99999:7:::

E eles também já tem o seu grupo pessoal:

# tail -3 /etc/group
trinity: x:1001:
neo: x:1002:
smith: x:1003:

Já temos os usuários criados, com seus respectivos grupos pessoais e senhas. Então, no terminal que estamos como root, vamos criar dentro do /mnt os diretórios generics e private; o diretório generics, será acessado por todos da empresa, e o diretório private, será acessado pelo pessoal da diretoria:

# cd /mnt/
# mkdir generics private

Conferindo os diretórios criados:

# ls
generics  private

Agora que já temos os diretórios, vamos criar os grupos! Para facilitar, vamos criar os grupos generics e o private (só prá ficar bonito…) mas poderia ser qualquer nome!

Para criar um grupo no sistema, usamos o comando groupadd:

# groupadd private

# groupadd generics

Como disse anteriormente, os grupos são armazenados no /etc/group; vamos conferir se os grupos que criamos estão lá:

# tail -2 /etc/group
private: x:1004:
generics: x:1005:

Grupos criados, nosso próximo passo, é ir até o diretório /mnt e definir os grupos dos diretórios que criamos, pois, se executarmos o comando ls -ld no diretório /mnt, veremos que o dono dos diretórios que criamos é o root, e o grupo também é root:

# ls -ld /mnt/*
drwxr-xr-x 2 root root 1024 2009-01-02 00:27 /mnt/generics
drwxr-xr-x 2 root root 1024 2009-01-02 00:27 /mnt/private

Isso acontece porque, quando um usuário cria um arquivo ou diretório na máquina, acaba ficando com o seu grupo particular; como foi o root quem criou o diretório, temos que tirar o grupo root e colocar um grupo público para inserirmos usuários nesse grupo.

Como será um diretório público, vamos deixar o root como sendo o dono, e mudar apenas o grupo. O comando que altera um grupo de um arquivo ou diretório, é o chgrp (change group):

# chgrp private private/

# chgrp generics generics/

# ls -l
total 2
drwxr-xr-x 2 root generics 1024 2009-01-02 00:27 generics
drwxr-xr-x 2 root private  1024 2009-01-02 00:27 private

Agora, que já mudamos os grupos dos diretórios, podemos inserir os usuários nos grupos! Os usuários neo e trinity, são os diretores de Zion… então, eles terão acesso tanto ao diretório generics, como o private. Já o usuário smith, poderá acessar somente o diretório generics… ele tem que ficar bem longe do diretório private!

Aproveitando… podemos abrir os outros terminais que falei no início do post, se tornando trinity em um, no outro neo e smith no terceiro. Para virar o usuário, utilizamos o comando su (substitute user).

Se você estiver no terminal logado como root, não será solicitado a senha; caso você seja um usuário comum, será solicitado a senha do usuário que você deseja se tornar. Por exemplo, estou no terminal logada como ivani. Caso queira virar trinity, executo o comando:

$ su – trinity
Password:

Vejam que ele pede a senha… caso forneça a senha correta, irei me tornar usuário trinity. É sempre bom usar o ‘‘ (hífen) quando for mudar de usuário, para carregar as variáveis de ambiente do usuário que você vai se tornar.

Depois que viramos os usuários, vamos no terminal onde estamos como root, e vamos inserir os usuários no grupo. O comando para inserir usuários em um grupo, é o gpasswd. A opção -a, no comando, indica que vamos adicionar usuários; veja abaixo, como inserir os usuários nos respectivos grupos; trinity e neo no grupos private e generics e o smith no grupo generics:

# gpasswd -a trinity private
Adicionando usuário trinity ao grupo private

# gpasswd -a trinity generics
Adicionando usuário trinity ao grupo generics

# gpasswd -a neo private
Adicionando usuário neo ao grupo private

# gpasswd -a neo generics
Adicionando usuário neo ao grupo generics

# gpasswd -a smith generics
Adicionando usuário smith ao grupo generics

Para checar a lista de grupos que o usuário participa, usamos o comando groups:

# groups trinity
trinity : trinity private generics

# groups neo
neo : neo private generics

# groups smith
smith : smith generics

Se checarmos o /etc/group, veremos que nos grupos que criamos, os usuários já estão incluídos:

# tail -2 /etc/group
private: x:1004:trinity,neo
generics: x:1005:trinity,neo,smith

Bem, a fase de criação dos usuários e grupos acabou. Temos então, 2 usuários que participam dos grupos private e generics, e um usuário que participa do grupo generics.

O próximo passo, é analisar as permissões do diretório que criamos! Mas isso, vai ficar para o próximo post 🙂 !

Até lá! 😀