Identifique se o usuário pode efetuar login com o ID do usuário e a senha fornecidos

0

Temos mais de 300 servidores AIX. Criamos ID local para um usuário em todos esses servidores. Agora, o usuário precisa efetuar login manualmente em todos os servidores para verificar se suas credenciais estão funcionando. Então existe uma maneira / script para identificar se o usuário é capaz de fazer o login com o ID do usuário e senha fornecidos.Eu tentei google, mas não recebi nada. Poderia ajudar por favor com este requisito.

    
por Gomsthyshankar Selvakumar 16.11.2016 / 11:21

1 resposta

0

REVISITADO: Não vou dizer como testar uma determinada senha. Não acredito que um administrador deva saber senhas de outros usuários para enviar tal teste. No entanto, posso ajudar você a encontrar um usuário ou talvez todos os usuários que nunca definiram uma senha.

Como administrador do sistema, também conhecido como root, você pode tentar algo como:

#!/usr/bin/ksh
## pwdchkUser
# Author: Michael Felt and AIXTOOLS, 2016
# example program for checking a single username on a list of hosts
# check user on all hosts listed, line by line in test1.txt

user=$1
cat test1.txt | while read host; do
    ssh root@${host} "(/usr/bin/grep -p ${user}: /etc/security/passwd \
        | grep lastupdate 2>&1 >/dev/null \
        || print $user@host has never set a password)"
done

#!/usr/bin/ksh
## pwdchkUsers
# Author: Michael Felt and AIXTOOLS, 2016
# example program to find all users that have never set a password
# the 'test' is that the keyword 'lastupdate' is missing from the user entry 
# /etc/security/passwd stanza 

host=$1
print "On ${host} the following usernames are known, but have not changed their password"

ssh root@$host '/usr/bin/grep -vp lastupdate /etc/security/passwd \
    | egrep ":$" | cut -d: -f 1'

p.s. I shall not even begin on all the errors in the 'google' script you found. It is unfortunate that you do not recognize the syntax errors in the ssh command you say you 'got via google' - certainly not via SE!

Sua solução vem em duas partes a) o script que verifica (deve ser algo diferente do usuário existe - como por sua pergunta, que é um dado) - Depois de ter isso, em seguida, parte dois b) configurar e usar dsh (shell distribuído)

Quando os dois estiverem prontos, você poderá usar

dcp script /some/great/script # copy to all servers in dsh domain

e seu (s) usuário (s) podem usar:

dsh /some/great/script

para executar o comando em vários servidores em paralelo

Observação: existem diferentes maneiras de ser mais seletivo em quais servidores executar o comando: por exemplo,

dsh -n host1,host2,host7 /some/great/script

Embora não possa ajudá-lo com detalhes na parte a) - não há informações suficientes Espero que este artigo o ajude com a parte b) link

p.s. Algumas das coisas que você também pode considerar é que você está executando o comando - desde que você pode criar o usuário, você pode ver coisas que eles provavelmente não podem ver.

grep ^$username:!: /etc/passwd

e

/usr/bin/grep -p "flags = ADMCHG" /etc/security/passwd | grep -v password
username:
        flags = ADMCHG
        lastupdate = 1416221835

Explicação : ^ nome de usuário: *: significa um usuário que não possui uma senha, portanto não pode efetuar login porque não há senha, enquanto ^ username:!: significa que há uma entrada o arquivo de senha sombra para verificação de usuário / senha (ou nenhuma senha exigida pelo arquivo shadow)

em / etc / security / password - o arquivo shadow Se flags == ADMCHG , há uma senha, mas o usuário deve alterar a senha antes que ela possa permanecer no sistema. Alguns programas - que usam credenciais do sistema operacional e não podem alterar a senha, apenas sairão.

    
por 21.11.2016 / 20:15