Como configurar o linux para forçar novos usuários a mudar sua senha no primeiro login

9

Estou tentando configurar a política de senha de usuários no RHEL 6.6 e quero que o sistema peça aos usuários recém-criados que alterem a senha inicial no primeiro login.

Observe que tentei definir a variável EXPIRE como 0 e INACTIVE como -1 em / etc / default / useradd, mas isso leva à nova expiração da conta de usuário após a criação. A saída do comando chage após a criação do usuário com estas variáveis é:

 # chage -l foo
 Last password change                                : Feb 22, 2015
 Password expires                                    : May 23, 2015
 Password inactive                                   : never
 Account expires                                     : Feb 22, 2015
 Minimum number of days between password change      : 1
 Maximum number of days between password change      : 90
 Number of days of warning before password expires   : 7

Quando tento fazer o login no usuário foo, a mensagem "Sua conta expirou. Entre em contato com o administrador do sistema" é exibida.

Mas se eu abrir a janela "Propriedades do usuário", selecione a guia "Informações da senha" e marque "Forçar alteração de senha no próximo login", o resultado será o que eu espero. Um novo usuário será solicitado a alterar a senha. A saída do comando chage nesse caso será:

 # chage -l foo2
 Last password change                                : password must be changed
 Password expires                                    : password must be changed
 Password inactive                                   : password must be changed
 Account expires                                     : never
 Minimum number of days between password change      : 1
 Maximum number of days between password change      : 90
 Number of days of warning before password expires   : 7

Quando eu faço o login no usuário foo2, o sistema me pede para alterar a senha.

Então, existe alguma maneira de configurar o sistema para definir os parâmetros da conta de usuário na criação, como no segundo caso?

Atualizar

 cat /etc/default/useradd
 # useradd defaults file
 GROUP=100
 HOME=/home
 INACTIVE=-1
 EXPIRE=0
 SHELL=/bin/bash
 SKEL=/etc/skel
 CREATE_MAIL_SPOOL=yes

Mesmo se eu comentar INACTIVE ou configurá-lo para um valor positivo, a conta expirará, mas não uma senha.

Além disso, configurei o PAM na máquina.

Atualização 2

Eu verifiquei isso na máquina com o RHEL 6.2 e sem a configuração do PAM. O efeito é o mesmo.

    
por Mike_Lychkov 22.02.2015 / 09:08

3 respostas

0

Por que não adicionar o% passwd -e username ao script?

Se tudo o que você procura é o primeiro login, isso funcionará. O '-e' expira a senha da conta imediatamente, então o próximo login o usuário é forçado a atualizar sua senha? (veja man passwd )

    
por 08.12.2015 / 20:23
0

Como você está perguntando sobre o RHEL6, eu olhei para o código-fonte do useradd (que é entregue como parte do pacote 'shadow'). Em useradd.c é uma função chamada new_spent onde ele configura uma nova entrada de senha de sombra. Lá, ele aborda o problema da "senha expirada na criação" desta maneira:

if (0 == spent->sp_lstchg) {
/* Better disable aging than requiring a password change */
spent->sp_lstchg = -1;

Soooo ... Se você definir um zero, é -1.

Os autores do programa têm codificado especificamente contra a configuração do envelhecimento para 0, portanto, não importa se você o definir como 0 no parâmetro / etc / default / useradd para EXPIRE. (Se fosse eu fazendo esse código eu teria olhado para ver se o usuário estava configurando a senha no comando e, em seguida, permitindo a expiração, mas não fui eu ...)

Além disso, foi sugerido acima que você poderia colocar um script em /usr/local/sbin/adduser.local para fazer um comando 'chage'. Este foi um bom conselho para um sistema Debian / Ubuntu em que useradd é um script perl que de fato executa esse arquivo se o encontrar, mas no RHEL o comando useradd é um binário C.

Se eu fosse você e estivesse determinado a obter esse comportamento no useradd do RHEL6, obteria o SRPM para o pacote shadow, comentaria as linhas acima e faria um rpmbuild no pacote e no rockaway. Ganhando!

    
por 17.06.2016 / 22:06
-2

Automático:

Update this file:

/etc/default/useradd

This file contains the details, what all settings will be applied to the new users created into the system with useradd command.

Just set the value of EXPIRE=0 in this file, and after that, every time when a new user will be created, they will be forced to change the password at the next login.

Fonte: GeekRide

Agora, editar esse arquivo no terminal foi difícil. Então eu mudei as permissões do arquivo para o 777 usando:

chmod 777 /etc/default/useradd

e editado no grub.

(Obrigado a Comando do Linux .)

Verificado na minha VM Ubuntu 12.04.5.

Manual:

Use the following syntax to force a user to change their password at next login on a Linux:

# chage -d 0 {user-name}

In this example, force tom to change his password at next logon, enter:

# chage -d 0 tom

-d 0 : Set the number of days since January 1st, 1970 when the password was last changed. The date may also be expressed in the format YYYY-MM-DD. By setting it to zero, you are going to force user to change password upon first login.

Fonte: nixCraft

Copie e cole puro. Literalmente. ;)) Verificado no meu Ubuntu 12.04.5 VM.

    
por 12.10.2015 / 14:10