Como um usuário pode alterar a senha se nologin

0

Eu quero ter alguns usuários do banco de dados no meu servidor RHEL6. Como o usuário do banco de dados é apenas um usuário do banco de dados, não quero dar a ele o login do shell.

Em caso afirmativo, como esses usuários podem alterar sua senha?

    
por Ramazan Polat 04.11.2013 / 11:56

2 respostas

1

Eu descobri uma maneira rápida e suja de fazê-lo.

Execute estes comandos:

$ sudo useradd -m -d /home/username -s /usr/bin/passwd -c "login is forbidden for this user" username -N -g users
$ chown root:users /home/username
$ chmod 555 /home/username  

Agora, o usuário 'username' pode alterar sua senha. Ele / ela não pode fazer nada além de alterar sua senha.

    
por 04.11.2013 / 14:12
1

Aviso: Você está fazendo isso por sua própria conta, mexer com senhas é sempre uma coisa perigosa de se fazer. Para melhor segurança, você deve considerar o uso do LDAP ou algo parecido para separar essas contas das do sistema. Qualquer coisa abaixo é sobre a implementação do recurso solicitado usando a autenticação Unix pura e não se aplica ao LDAP.

Você precisará:

  • um servidor HTTP habilitado para PHP
  • um daemon do PHP em execução como root (ou qualquer usuário com privilégios para alterar senhas)

Configure um painel simples baseado na Web que permitirá que os usuários insiram seu login, senha atual e solicitem nova senha duas vezes (algo como formulário de login e formulário de alteração de senha combinados). Quando o usuário enviar o formulário, passe-o ao daemon por meio dos sockets de fluxo . O daemon deve verificar se esse usuário tem o privilégio de alterar a senha por meio da interface da web e, em seguida, verificar se a senha atual é válida para o nome de usuário especificado e, em caso afirmativo, altere a senha.

Você pode implementá-lo de várias maneiras. Se você estiver usando a autenticação padrão do Unix, o pacote PHP PAM será útil. Você pode encontrar muitos tutoriais sobre verificação e alteração de senhas com PHP através de ssh connections ou com expect , mas é uma idéia muito ruim - fugir dos argumentos corretamente será difícil e você pode perder alguma lacuna na segurança; o módulo PAM é muito mais seguro. Apenas certifique-se de usá-lo em um daemon, NÃO no aplicativo PHP do seu servidor web, porque executar o PHP acessível externamente como root é muito perigoso.

É claro que você pode implementá-lo de qualquer outra maneira, por exemplo, em Python ou com o servidor baseado em bash (usando netcat). Eu estou usando PHP como um exemplo, porque uma vez tive que implementar um recurso exatamente idêntico no PHP.

    
por 04.11.2013 / 12:19