O usuário criado sem senha se comporta como se tivesse um

4

Dentro de um dos meus scripts, criei um usuário com base em um arranjo de diretórios em outra máquina.

O problema é que esse usuário, criado sem senha, se comporta exatamente como ele: ele tem direitos de sudo mas eu simplesmente não consigo sudo porque ele pede uma senha que não exista . Eu sei que poderia simplesmente passá-lo como root, mas o sistema desenvolvido tem que funcionar sem a intervenção de usuários privilegiados de raiz local.

Eu também não posso passar como usuário em questão, pois o passwd me pede a mesma senha inexistente.

Suponho que se trata de comportamento, mas qual é a eventual senha padrão e o que posso fazer para contornar isso?

EDIT: Aqui está o que o script faz:

1: rsyncs os diretórios home dos usuários que devem ser criados ou atualizados em / opt / sshgw / home (sshgw significa gateway ssh) da nossa máquina de gateway ssh

2: remove todas as chaves autorizadas para cada usuário da máquina que está executando o script

3: remove todos os usuários do grupo wheel e executa usermod -L (eu não sou o autor do script e realmente não sei por que ele bloqueia a conta, mas seja o que for). Embora tenha em mente que, neste momento, apenas os usuários existentes serão modificados.

4: Cria usuários se eles foram recuperados do sshgw e eles não estão presentes na máquina local, então, se especificado, eles são adicionados ao grupo wheel. Em seguida, ele adiciona as chaves públicas aos diretórios pessoais apropriados e finalmente executa o usermod -U .

A entrada do usuário em / etc / passwd é normal.

Ao chamar passwd, os usuários são perguntados sobre sua senha atual (que não pode existir para um usuário que acabou de ser criado sem uma senha, lembre-se) desta maneira:

[splatpope@monitor sshgw]$ passwd
Changing password for user splatpope.
Changing password for splatpope.
(current) UNIX password:

Eu acho que o culpado é usermod -U.

    
por toad_rafter 02.05.2014 / 01:16

2 respostas

7

Um usuário é criado por padrão como uma conta bloqueada. O campo que deve conter o hash de senha em /etc/shadow conterá !! . Quando uma conta é bloqueada, essa conta está disponível apenas para raiz (root can su mas logins não são permitidos). Se você "desbloquear" a conta que simplesmente remove o !! , você poderá alterar a senha.

[root@test ~]# su - test
[test@test ~]$ passwd
Changing password for user test.
Changing password for test.
(current) UNIX password:
[test@test ~]$ exit
logout
[root@test ~]# passwd -u test
Unlocking password for user test.
passwd: Warning: unlocked password would be empty.
passwd: Unsafe operation (use -f to force)
[root@test ~]# passwd -u test -f
Unlocking password for user test.
passwd: Success
[root@test ~]# su - test
[test@test ~]$ passwd
Changing password for user test.
New password:
    
por 02.05.2014 / 01:57
1

A resposta do yoonix já cobria o fato de que não há senha padrão.

Para dar ao usuário recém-criado uma senha enquanto a conta está sendo criada, você pode fazer isso:

useradd ... -p $(mkpasswd $Password) ... user_name

Isso pressupõe:

  • A senha que você deseja fornecer a esse usuário está na variável $Password .
  • Você tem o utilitário mkpasswd para criptografar senhas (isso está no pacote whois no meu Debian).

O comportamento padrão é uma conta desativada, no entanto. Citando de useradd(8) :

-p, --password PASSWORD
The encrypted password, as returned by crypt(3). The default is to disable the password.

    
por 02.05.2014 / 02:03