>

SSH를 통해 Linux 서버에 연결 한 사용자가 Active Directory (Centrify)를 사용하여 인증되었는지 확인하려고합니다.

로컬 계정을 사용하는 경우 ( /etc/passwd 에 있음) ), 자신의 Active Directory 계정을 사용하라는 메시지를 표시 한 다음 다시 로그인하라는 메시지가 표시되어야합니다.

첫 번째 시도는 /etc/pam.d/login 에서 PAM 모듈 pam_script를 사용하는 것입니다.  사용자가 로그인 할 때마다 현재 사용자 이름이/etc/passwd에 있는지 확인하는 스크립트를 실행하려면 발견되면 경고를 표시하고 login 를 호출하십시오.  다시 명령하십시오.

/etc/pam.d/login 에 다음 줄을 추가했습니다

session    required    pam_script.so runas=root

이 줄은 /etc/security/onsessionopen 에 위치한 스크립트 파일을 실행합니다.  다음을 포함합니다 :

#!/bin/sh
username=$1
if [ $(grep -c '^'$username':' /etc/passwd) = 1 ] 
then
    echo "Warning, please user your AD credentials"
    login
fi

그러나 pyzwyz에서 동일한 시나리오가 작동하지 않았습니다. . SSH를 사용하면 스크립트가 실행되지만 텍스트 나 로그인 프롬프트가 표시되지 않습니다.

어떤 생각? 감사합니다

/etc/pam.d/sshd
  • 답변 # 1

    id 사용  광고 또는 지역 /etc/passwd 에서 연결되어 있는지 비교적 쉽게 알 수 있습니다. . 다음 단계는 /etc/profile 에서 기능을 수행하는 것입니다  경고 메시지가 표시됩니다.

  • 답변 # 2

    /etc/passwd 에서 관련 계정에 대한 셸 변경  잘 작동합니다

    이것을 pyzwyz에 넣는다.  그리고 그것을 실행 가능하게 만드십시오 :

    /usr/local/etc/mustuseadlogin
    
    

    지금 편집 #!/bin/sh echo echo "Please log in with AD authentication" >&2 echo sleep 10 exit 0  (이상적으로 /etc/passwd ) 및 영향을받는 모든 계정의 마지막 필드를 vipw 로 변경하십시오. . 예를 들어

    /usr/local/etc/mustuseadlogin
    
    

  • 답변 # 3

    표준 '로그인'을위한 멋진 솔루션. 불행히도, 나는 당신이 'sshd'에 대해 동일한 행동을하는 데 많은 운이 있다고 생각하지 않습니다. 이것은 연결을 설정할 때 sshd가 사용하는 기본 연결 절차 때문입니다. PAM 스택 (또는 다른 제안에서와 같이 프로파일 비트)까지는 사용자 이름이 이미 확인되었습니다. SSH 클라이언트가 제출 한대로.

    여기에 더 많은 도움이 될만한 자료가 있습니다 : https://serverfault.com/questions/330310/force-ssh-to-prompt-for-user

    이 정보를 바탕으로 이상적인 해결책은 'sshd'스택에 대해 스크립트 (또는/etc/profile 추가)를 고수하는 것이 좋습니다. '로그인'을 누르지 말고 10 초 동안 잠을 자게하고 (경고가 표시되도록) 세션을 닫으십시오.

  • 답변 # 4

    와이즈 비즈  모듈은 종료 상태를 사용하여 호출 스택에 수행 할 작업을 알려줍니다. 코드를 다음과 같이 변경하면 작동합니다.

    roaima:x:1001:1001:I am roaima:/home/roaima:/usr/local/etc/mustuseadlogin
    
    

    pam_script 를 제외했습니다  블록에서. 당신은 #!/bin/bash username="$1" if [[ root != "$username" ]] && grep -q '^'"$username"':' /etc/passwd then echo "Warning, please user your AD credentials" exit 1 fi exit 0 를 조정할 수 있습니다  자신의 시나리오에 적용 할 UID<500 등을 테스트하십시오.

    root

  • 이전 linux - # 1 및 # 2 매개 변수를 사용하는 배시 스크립팅이지만 파일을 찾을 수없는 경우 사용자가 읽은 것으로 되돌아 감
  • 다음 bash - 터미널 프롬프트가 위에 작성되었습니다