사용자가 주어진 사용자 ID와 비밀번호를 사용하여 로그인할 수 있는지 확인

사용자가 주어진 사용자 ID와 비밀번호를 사용하여 로그인할 수 있는지 확인

우리는 300개 이상의 AIX 서버를 보유하고 있습니다. 우리는 이러한 모든 서버의 사용자에 대한 로컬 ID를 만듭니다. 이제 사용자는 자신의 자격 증명이 유효한지 확인하기 위해 모든 서버에 수동으로 로그인해야 합니다. 따라서 사용자가 주어진 사용자 ID와 비밀번호를 사용하여 로그인할 수 있는지 식별하는 방법/스크립트가 있습니까? Google을 사용해 보았지만 결과가 없습니다. 이 요구 사항을 도와주세요.

답변1

검토하려면: 주어진 비밀번호를 테스트하는 방법은 말하지 않겠습니다. 나는 관리자가 그러한 테스트를 제출하기 위해 다른 사용자의 비밀번호를 알아야 한다고 생각하지 않습니다. 하지만 사용자 또는 비밀번호를 설정한 적이 없는 모든 사용자를 찾는 데 도움을 드릴 수 있습니다.

시스템 관리자(루트라고도 함)로서 다음을 시도해 볼 수 있습니다.

#!/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. "google" 스크립트에서 발견한 모든 오류에 대해서는 논의하지 않겠습니다. 불행하게도 "google을 통해 얻었습니다"라고 말한 ssh 명령의 구문 오류를 인식하지 못합니다. 확실히 SE를 통해서는 아닙니다!


귀하의 솔루션은 두 부분으로 구성됩니다. a) 인증을 위한 스크립트(사용자와 다른 것이 존재해야 함 - 이는 귀하의 질문에 따라 제공됨) - 일단 이것이 있으면 파트 2 b) dsh(분산 쉘) 구성 및 사용

둘 다 준비되면 사용할 수 있습니다.

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

사용자는 다음을 사용할 수 있습니다.

dsh /some/great/script

여러 서버에서 병렬로 명령 실행

참고: 명령을 실행할 서버를 더 잘 선택하는 방법에는 여러 가지가 있습니다. 예를 들면 다음과 같습니다.

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

a) 부분의 세부 사항을 이해하는 데 도움을 드릴 수는 없지만 정보가 충분하지 않습니다. 이 기사가 b) 부분을 이해하는 데 도움이 되기를 바랍니다.http://www.rootvg.net/content/view/634/88/

p.s. 고려해야 할 또 다른 사항은 실행하는 명령입니다. 사용자를 생성할 수 있으므로 사용자가 볼 수 없는 것을 볼 수 있습니다.

grep ^$username:!: /etc/passwd

그리고

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

설명하다: ^사용자 이름:*:비밀번호가 없어 로그인할 수 없는 사용자를 나타냅니다.^사용자 이름:!:사용자/비밀번호 인증을 위한 섀도우 비밀번호 파일에 항목이 있음을 나타냅니다(또는 섀도우 파일에 비밀번호가 필요하지 않음).

/etc/security/password에서 - 섀도우 파일인 경우로고 == ADMCHG, 비밀번호가 있지만 시스템을 계속 유지하려면 사용자가 비밀번호를 변경해야 합니다. 운영 체제 자격 증명을 사용하고 암호를 변경할 수 없거나 변경할 수 없는 일부 프로그램은 단순히 종료됩니다.

관련 정보