루트가 아닌 다른 사용자로 전체 로그인을 수행할 수 있는 방법이 있습니까?

루트가 아닌 다른 사용자로 전체 로그인을 수행할 수 있는 방법이 있습니까?

우리 설정에서는 Linux VM에 대한 SSH 액세스를 위해 Microsoft Active Directory(AD)를 사용해야 하므로 직원이 퇴사할 때 AD 계정이 비활성화되면 VM에 액세스하는 것이 차단될 수 있습니다.

우리는 이미 모든 데이터와 사용자를 설정했습니다. 그래서 제가 제안하는 계획은 다음과 같습니다.

  1. 원래 사용자 계정에 대한 모든 원격/Ssh 액세스를 비활성화하고 새 AD 계정을 통한 액세스만 허용합니다.

  2. AD 계정에 SSH로 접속하면 원래 사용자 계정에 자동으로 로그인됩니다.

logname새 AD 계정이 아닌 원래 사용자 계정(즉, 자동 로그인되는 계정)을 인쇄 해야 합니다 .

답변1

매우 단순한 기반에서 각 로그인 쉘 변수를 /etc/passwd리디렉션 스크립트로 바꿀 수 있습니다.

john_AD:x:1000:1000:,,,:/home/john_old:/sbin/redirect_user

그리고 스크립트는 다음과 같습니다

#!/bin/bash
#autoredirect user to old login
case $USER in
   jonh_AD) oldname=john_old
#add list of users
esac

su "$oldname"

그런 다음 AD_user가 비밀번호 없이(예: 항목을 통해) 이전 사용자에 로그인할 수 있는지 확인하십시오 sudoers(사용할 스크립트 조정 sudo).


그러나 나는 이동과 함께 한 번 실행되고 앞으로는 덜 까다로운 설정을 갖도록 "ID 업데이트" 스크립트를 생성하는 것을 여전히 제안합니다. 이는 훨씬 더 안정적이고 안전하며 위와 같은 스크립트만큼 많은 노력이 필요합니다.

답변2

공개 키 인증을 사용할 수 있고 sudoers 목록(by ) 을 수정할 필요가 없기 때문에 ssh대신 사용하도록 편집되었습니다 . 또한 대화형으로 실행되지 않으면 아무 것도 하지 않는 원하는 효과를 주기 때문에 명령을 추가합니다 . 이 스크립트는 SSH 클라이언트를 아직 올바르게 설정하지 않은 사용자가 사용할 수 있는 편리한 스크립트가 됩니다.loginsudo visudo/etc/bash.bashrc연결 터널링(Ssh 멀티홉이라고도 함)

일단 알아낸 후에 연결 터널링 설정에 대해 더 추가하겠습니다.


다른 답변에서 영감을 얻었지만 대체 접근 방식입니다(AD 사용자가 /etc/passwd에 나열되지 않기 때문입니다.

설정:

  • 한 줄 /etc/bash.bashrc(초기 로그인 시 기본적으로 실행되도록 하려는 경우에만):
# Executes convenience script which prompts all white-listed users whether they wish to login as their default work user account
/bin/login_redirect

이로 인해 사용자는 SSH를 통해 기본 업무 사용자 계정에 로그인하게 됩니다.

주요 스크립트:/bin/login_redirect(모든 사용자가 실행 가능해야 함 chmod +x bin/login_redirect)

!/usr/bin/env bash

generate_divider() {
    user_query="$1"
    user_query_len="${#user_query}"
    user_query_len=$((user_query_len+1))
    str=$(printf "%${user_query_len}s")
    divider="${str// /_}"
}

case "$(logname)" in
    # White-list
    12345632) work_user=dean;;
    12345633) work_user=tom;;
    12345634) work_user=mary;;
esac

work_user="${work_user:-none}"
if [ "${work_user}" != "none" ]; then
    user_query="Do you wish to login as your default work user? [Y/n]: "
    generate_divider "${user_query}"
    echo
    echo "${divider}"
    echo "[WARNING]: You are connected directly to your AD account."
    echo "           Ask the admin of this server for help"
    echo "           configuring a multi-hop ssh connection. This "
    echo "           is a convenience script written to allow"
    echo "           connection to your default work user in the"
    echo "           interim."
    read -p "${user_query}" login_ans
    login_ans="${login_ans:-Y}"
    if [ "${login_ans}" == "Y" ]; then
        echo "Username: ${work_user}"
        exec ssh -t "${work_user}"@"$(hostname)" "echo ${divider}; echo; /bin/bash;"
    fi
fi

참고: login_redirect업무용 사용자가 아닌 사람이 이 명령을 실행하면 자동으로 기본 업무 사용자로 로그인됩니다.

관련 정보