Criando Usuários Manualmente no Linux: vipw, vigr, pwck e /etc/shadow

Mostrarei aqui uma outra forma de criar usuário, senhas e grupo primário sem os auxílios de programas, tais como useradd, adduser e passwd. Sem sombra de dúvidas que  esses programas são facilitadores e ao usá-los mantemos um certo nível de segurança; porém, por questão de estudo iremos editá-los diretamente. Editaremos os arquivos passwd cujo caminho absoluto é  /etc/passwd e o shadow localizado em /etc/shadow.

Tais arquivos devem ser editados diretamente pelo superusuário root ou via sudo ou su.

Os programas useradd, que cria usuários, e o passwd, que cria, altera a senha e pode também gerenciar usuários, realizam essas alterações editando, por debaixo dos panos, esses mesmos arquivos: /etc/passwd/etc/shadow

Utilizaremos os comandos:

vipw: Abrir o /etc/passwd com o editor vim.
vigr: Abrir o /etc/group com o editor vim.
pwck: Faz checagem no arquivo /etc/passwd.
vim: É o editor de texto mais usado in the universe. 🙂

Vamos lá.

Entendendo o arquivo passwd

 

/etc/passwd = Arquivo que contém informações dos usuários do sistema.

Utilizei o comando “tail -n 1” para printar a última linha do arquivo /etc/passwd, mas você poderia usar o cat /etc/passwd ou less /etc/passwd.

[elder@centos ~]$ sudo tail -n 1 /etc/passwd
manoel:x:1010:1010:Manoel da Nobrega:/home/manoel:/bin/bash

A linha tem campos separados por dois pontos( : ).

manoel = nome do usuário.
x = esse campo é onde fica a senha do usuário, mas o x indica que a senha está armazenada no arquivo /etc/shadow.
1010 = a indentificação do usuário ou o uid(user indentifier).
1010 = gid(group indentifier); indentifica que 1010 é o grupo principal do usuário.
Manoel da Nobrega = Esse campo é utilizado para comentar a respeito do usuário. Geralmente se coloca nome completo do mesmo.
/home/manoel = o diretório(pasta) princial(home) do usuário, é aí onde o usuário mora, sua casa sua vida. É nesse local onde o manoel guarda seus arquivos, sua bagunça 😜.
/bin/bash = Esse é o shell(interpretador de comandos) utilizado, ao logar, pelo usuário. Poderia ser o /bin/sh ou /bin/dash etc.

 

Entendendo o arquivo shadow

 

/etc/shadow = Contém informações sobre senha, data de expiração de senha, data mínima para troca de senh.. enfim, informações sobre senha dos usuários.

Execute o comendo sudo “tail -n 1 /etc/shadow” como antes.

[elder@centos ~]$ sudo tail -n 1 /etc/shadow
manoel:$6$nGko....DhNm:17355:0:99999:7:::

manoel = nome do usuário.
$6$nGko….DhNm = Senha criptografada do usuário. Obs.: inserir os pontos(…..) no meio porque esse campo é muito grande, enorme!!
A senha do usuário manoel é 1234. Abaixo mostro, sem cortes 😏, a senha  1234 criptografada: $6$nGko5Jut$WkEuU46LNX04jIZZFTtbzNSwSv9iociiPy0sz6I2W0uZCwFxkd.eNQ/N9YcDULOPKe7ptofz3bEtqUO51DhNm/
17355 = última vez, em dias, que a senha foi modificada, desde 1 de janeiro de 1970. Ou seja, a senha foi modificada a 17.377 dias depois de 1970. Muito Confuso!!! 😡
0 = depois de alterada a senha o usuário só poderá alterá novamente depois de 0 dias. Lógico que 0 indica desabilitado. Mas se tivesse o 7 no lugar do 0 indicaria que, se mudei a senha hoje, só poderia voltar a mudar depois de 7 dias.
99999 = A partir do momento que alterei a senha, serei obrigado/forçado a mudá-la novamente depois de 99999 dias. logicamente que 99999 significa praticamente que essa função está inativa, visto que 99999 são 277 anos.  🙂
7 = Pegando como exemplos os infindáveis 277 anos acima, se durante todo esse tempo você não alterar a senha, quando faltarem 7 dias para completar os 277 anos você será alertado. Ou seja, ficará 7 dias sendo informado a mudar a senha.

Os outros dois campos estão vazios, mas, respsctivamente, significam:
inativo = Quando tempo sua conta ficou inativa/desabilitada.
expirada = Novamente, quantos dias depois de 01/01/1970 que sua conta está desabilitada ou expirada.  É igual ao campo inativo, só que, para dificultar nossas vidinhas, começa a conta de 1970.

Criando um usuário com vipw

 

vipw = (vi + pw), vi significa o editor de  texto vi ou vim e pw significa o arquivo passwd. Ou seja, o comando vipwd abre o arquivo /etc/passwd com o editor vim.
Poderíamos também usar o vim /etc/passwd.

1 – Digite o comando abaixo.

[elder@centos ~]$ sudo vipw

2 – Tecle i para entrar no modo de inserção e ao final do arquivo digite. Obs.: usei o 1011 para seguir sequência da linah acima :

francisco::1011:1011:Francisco Silva:/home/francisco:/bin/bash

3 – Tecle Esc, digite :x! e tecle enter par salvar e sair do editor.

4 – Alterne para o usuário francisco com o comando su.

[elder@centos ~]$ su francisco
bash-4.2$

Prontinho, você já está logado com o usuário francisco. Observe que o usuário não tem senha, então criemos uma criptografada para ele.

5 – Digite exit para sair do login do user francisco.

bash-4.2$ exit

6 – Estou criando a senha 1234 criptografada com o openssl:

[elder@centos ~]$ openssl passwd -1 -salt xyz 1234
$1$xyz$mfqtJRVTW/o3zsCQ9HP8a1

7 – execute  sudo vipw novamente e cole o $1$xyz$mfqtJRVTW/o3zsCQ9HP8a1  no campo correspondente:
Obs.: para colar no editor vim  basta clicar com o botão direito do mouse. Não esqueça de tecle i para inserção e Esc + :x!

Abaixo está meu exemplo:
francisco:$1$xyz$mfqtJRVTW/o3zsCQ9HP8a1:1011:1011:Francisco Silva:/home/francisco:/bin/bash

Pronto, use o su francisco e faça login.

 

Verificando a sintaxe do arquivo passwd

 

Use o pwck para verificar se está tudo ok com nosso arquivo /etc/passwd

[elder@centos ~]$ sudo pwck
user 'ftp': directory '/var/ftp' does not exist
user 'avahi-autoipd': directory '/var/lib/avahi-autoipd' does not exist
user 'saslauth': directory '/run/saslauthd' does not exist
user arnaldo has an entry in /etc/shadow, but its password field in /etc/passwd is not set to 'x'
user 'francisco': no group 1011
user 'francisco': directory '/home/francisco' does not exist
no matching password file entry in /etc/shadow
add user 'francisco' in /etc/shadow?

marquei de vermelho alguns alertas sobre a linha do usuário francisco.

user ‘francisco’: no group 1011 = Diz que não existe grupo 1011

user ‘francisco’: directory ‘/home/francisco’ does not exist = Diz que o diretório home de francsico não existe.

no matching password file entry in /etc/shadow
add user ‘francisco’ in /etc/shadow?  = Diz que a senha do usuário não está no arquivo shadow.

Vamos resolver problema por problema.

Editando o arquivo /etc/group

 

1 – Execute vigr ou vim /etc/group

[elder@centos ~]$ sudo vigr

2 – Inclua ao final do arquivo:

francisco:!:1011

explicações
francisco = nome do nosso querido usuário.
! = indica que esse grupo não tem senha. Isso mesmo, em linux grupos podem ter senha.
1011 = o gid ou número que representa o grupo para o sistema.

3 – Salve e saia da edição e execute o comanddo pwck para vermos se resolver nossa pendência na praça.

Criando o diretório home do francisco

 

1 – crie a pasta com o comando mkdir

[elder@centos ~]$ sudo mkdir /home/francisco

2 – Torne o usuário francisco proprietário do diretório

[elder@centos ~]$ sudo chown francisco:francisco /home/francisco

Pronto, francisco já tem um lar doce lar!! 🙂

 

Movendo a senha do usuário francisco para o /etc/shadow

 

1 – abra o arquivo /etc/passwd com o vipw, copie e apague a senha e coloque um x em seu lugar.

francisco:x:1011:1011:Francisco Silva:/home/francisco:/bin/bash

Obs.: O  “x” diz para o sistema que a senha do usuário está dentro do /etc/shadow

2 – execute sudo vim /etc/shadow e crie a linha abaixo para o usuárioe depois cole a senha no respectivo campo.

francisco:$1$xyz$mfqtJRVTW/o3zsCQ9HP8a1:17355:0:99999:7:::

marcado de vermelho está a senha 1234 criptografada.

Pronto, pronto e pronto! Esperto que tenham gostado. Muito bom, não foi?

Até a próxima!

 

Siga-nos em nossas redes:

Link Facebook: https://www.facebook.com/gnulinuxbr

 

Leitor voraz e um dos administradores do GNU/Linux Brasil no Whatsapp, facebook, youtube e nesse dito site: www.gnulinuxbrasil.com.br

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *