Como o Linux armazena e gerencia senhas de usuários 1

Como o Linux armazena e gerencia senhas de usuários

Você já se perguntou como o Linux gerencia com eficiência um ambiente multiusuário? Neste artigo, explicamos como o Linux armazena e gerencia senhas e logins de usuário.

Explorando o arquivo / etc / passwd

Quando um usuário insere um nome de usuário e uma senha, o Linux verifica a senha inserida em uma entrada em vários arquivos no diretório “/ etc”.

O “/ etc / passwd” é um dos arquivos mais importantes que armazena detalhes do usuário.

A última entrada neste arquivo corresponde a usuários “carbono”. Existem vários campos de informação separados por dois pontos (:).

  • carbon : nome do usuário ao qual esta entrada corresponde.
  • x : indica que existe uma senha para o usuário. No entanto, a senha é armazenada no arquivo “/ etc / shadow”. Se em vez de x mostra um ! símbolo, isso indica que não existe uma senha.
  • 1000 : ID de usuário deste usuário.
  • 1000: ID de grupo do grupo ao qual este usuário pertence.
  • carbon, , , : indicando vários campos de informação, incluindo nome completo e números de telefone. Aqui, nenhum número de telefone foi fornecido.
  • /home/carbon : localização do diretório inicial atribuído a este usuário.
  • /bin/bash : shell padrão atribuído a este usuário.

Vamos criar outro usuário para o qual alguns números de telefone foram armazenados. O usuário “plutão” é adicionado ao sistema usando o adduser comando.

campo GECOS do usuário linux

Olhando para o arquivo “etc / passwd” novamente, podemos ver as informações completas do usuário “pluto”. O campo que possui uma lista separada por vírgulas de nomes completos e números é chamado de “campo GECOS”.

exibir / etc / passwd com detalhes do telefone

Sempre que um usuário é criado, os valores do diretório inicial e do shell padrão que precisam ser atribuídos são especificados no arquivo “/etc/adduser.conf”.

adduser.conf

IDs de usuário para usuários criados começam em 1000 e vão até 59999.

O usuário “carbon” foi capaz de visualizar as entradas do arquivo “/ etc / passwd” simplesmente usando o cat comando. Vamos dar uma olhada em suas permissões.

permissão de arquivo / etc / passwd

Apenas o usuário “root” pode gravar no arquivo. Outros usuários podem apenas ler o arquivo. Como esse arquivo pode ser lido por todos, não é ideal armazenar senhas aqui. Em vez disso, é armazenado em outro arquivo chamado “/ etc / shadow”.

Explorando o arquivo / etc / shadow

Agora vamos tentar visualizar a senha armazenada para os usuários “carbono” e “pluto” no arquivo ”/ etc / shadow”.

permissão / etc / shadow negada

Dando uma olhada nas permissões para o arquivo “/ etc / shadow”, podemos ver que apenas o usuário “root” pode ler e gravar no arquivo. Além disso, apenas os membros do grupo “sombra” podem ler o arquivo. Na realidade, o grupo “sombra” está vazio, mas é sintaticamente necessário para este arquivo.

/ etc / permissão de arquivo shadow

Fazendo login como “root”, podemos ver as últimas dez linhas de “/ etc / shadow”. Para cada entrada em “/ etc / passwd,” há uma entrada correspondente neste arquivo. O formato será assim:

exibir entradas de / etc / shadow

Nesse arquivo, também, cada entrada tem vários campos separados por dois pontos (:). Vamos decifrar a entrada do usuário “plutão”.

  • pluto : nome do usuário ao qual esta entrada corresponde.
  • $6$JvWfZ9u.$yGFIqOJ.... : A senha de usuário com hash armazenada junto com as informações sobre o algoritmo de hash usado. Além disso, um valor salt é usado junto com a senha de texto simples para gerar o hash da senha.

Vamos processar o conteúdo neste campo. o $ símbolo é usado como um delimitador para separar três campos.

  • $6 : o algoritmo de hash usado. Aqui está a lista de algoritmos de hash em potencial.
    • $ 1: MD5
    • $ 2a: Blowfish
    • $ 2y: Eksblowfish
    • $ 5: SHA-256
    • $ 6: SHA-512
  • $JvWfZ9u. : valor de sal.
  • $yGFIqOJ.... : senha com hash.

O valor de hash resultante é armazenado como a senha criptografada de um usuário. O valor de sal é exclusivo para cada usuário. Mesmo que dois usuários tenham a mesma senha de texto simples, o uso de um salt exclusivo geraria um valor hash exclusivo.

Seguindo com os campos restantes nesta entrada,

  • 18283: Indica o número de dias desde 1º de janeiro de 1970 em que a senha foi alterada pela última vez
  • 0 : este campo é utilizado para indicar o número de dias após os quais a senha pode ser alterada. Um valor 0 significa que a senha pode ser alterada a qualquer momento.
  • 99999 : este campo indica o número de dias após os quais a senha deve ser alterada. Um valor de 99999 indica que um usuário pode reter a senha pelo tempo que desejar.
  • 7 : se a senha for configurada para expirar, este campo indica o número de dias para avisar o usuário sobre a expiração da senha.
  • : : : Mais três campos fazem parte desta entrada, embora estejam vazios aqui. O primeiro indica o número de dias de espera após o vencimento da senha, após os quais a conta será desabilitada. O segundo indica o número de dias desde 1º de janeiro de 1970 que uma conta foi desativada. O terceiro campo é reservado para uso futuro. Os campos vazios indicam que a senha existente para este usuário não expirou e não está definida para expirar em breve.

Os últimos sete campos relativos à validade da senha são considerados coletivamente como contendo informações sobre a “Política de vencimento da senha”.

Os valores padrão correspondentes à “Política de vencimento da senha” são especificados no arquivo “/etc/login.defs”. Esses valores podem ser alterados para um usuário usando o change comando.

login.defs

E as informações do grupo?

As informações e senhas do usuário são armazenadas nos arquivos “/ etc / passwd” e “/ etc / shadow”. Da mesma forma, as informações do grupo são armazenadas no arquivo “/ etc / group”.

exibir entradas de / etc / group

Destacados acima estão os grupos pertencentes aos usuários “carbono” e “plutão”. Quando um usuário é criado no Linux, esse usuário é imediatamente atribuído a um grupo com o mesmo nome do usuário.

Os membros de um grupo também podem compartilhar uma senha de grupo para atividades relacionadas ao grupo. O valor de x indica que as informações de senha desse grupo estariam no arquivo “/ etc / gshadow”.

No entanto, o acesso a “/ etc / gshadow” é restrito ao usuário “root”.

Permissão / etc / gshadow negada

O usuário “root” pode visualizar as entradas de “/ etc / gshadow”, que é semelhante a “/ etc / shadow”. Olhando para a entrada do grupo “carbono”, podemos ver que o segundo campo tem um valor de !, o que indica que não existe uma senha para este grupo.

Senha 11

Juntando tudo

Quando um usuário deseja fazer login, o hash da senha digitada é encontrado usando o valor salt desse usuário em “/ etc / shadow”. Em seguida, ele é comparado com o hash armazenado. Se os valores corresponderem, o acesso será concedido ao usuário.

  • Como redefinir a senha root no Linux
  • Como gerenciar sua senha de usuário a partir do terminal no Linux

Apoie o nosso trabalho ❤️

Se você gostou deste artigo, considere deixar uma gorjeta para nos ajudar a continuar publicando conteúdo de qualidade.

Pagamento seguro no PayPal
Moyens I/O Staff motivou você, dando conselhos sobre tecnologia, desenvolvimento pessoal, estilo de vida e estratégias que irão ajudá-lo.