기본적으로 Linux는 도메인을 지원하지 않습니다. 그러나 사용자는 Elike, Winbind 등과 같은 애플리케이션을 통해 도메인에 가입할 수 있습니다.
내 프로젝트의 고객은 모두 법인 회원입니다. 보안 문제로 인해 대부분의 고객의 Linux 호스트는 도메인에 가입됩니다.
안타깝게도 고객은 Linux 호스트가 도메인에 가입되어 있어도 localhost에 로그인할 수 있습니다. 예:
(1) Linux 호스트에는 두 개의 계정이 있습니다.
도메인 계정: dev.com\john(도메인은 개발자.com)
로컬 계정: tom
(2) 고객은 도메인 계정을 사용하여 로그인할 수 있습니다(dev.com \john) 또는 로컬 계정(tom)이 무료입니다.
내 임무는 사용자가 로그인할 때 실행되는 쉘 스크립트를 작성하는 것입니다. 쉘 스크립트에서 사용자가 도메인 계정 또는 로컬 계정을 사용하여 로그인했는지 확인해야 합니다.
사용자가 도메인 이름을 사용하여 로그인하는 경우 도메인 이름을 가져와야 하며, 그렇지 않으면 호스트 이름을 가져와야 합니다. 그런 다음 도메인 이름(또는 호스트) 이름과 사용자 이름을 원격 모니터링 서버에 보고합니다.
다음 코드를 시도했습니다.
hostName=$(hostname)
hostFQDN=$(hostname -f)
if [ "$hostName" = "$hostFQDN" ]; then
# The user didn't log in a domain.
hostInfo="$hostName"
else
# The user logged in a domain.
hostInfo=$(hostname -d)
fi
위에서 호스트 FQDN이 호스트 이름과 동일한지 확인합니다. 동일할 경우 고객은 도메인 계정을 사용하여 로그인한 것으로 간주되며, 그렇지 않으면 고객은 로컬 계정을 사용하여 로그인됩니다.
불행히도 항상 작동하는 것은 아닙니다. 그 이유는 Linux 호스트가 도메인에 가입된 경우 고객이 로컬 계정으로 로그인하더라도 호스트 FQDN이 항상 호스트 이름과 동일하지 않기 때문입니다. 예:
(1) Linux 호스트는 "dev.com" 도메인에 가입합니다.
(2) 고객이 도메인 계정을 사용하여 로그인하는지 여부에 관계없이 호스트 FQDN은 항상 "yw-host.dev.com"입니다(" yw-host"는 호스트 이름입니다).
누구든지 나에게 해결책을 줄 수 있습니까? 내 클라이언트는 여러 도메인 응용 프로그램(예:likely, winbin 등)을 사용하여 도메인에 가입할 수 있으므로 솔루션이 특수 도메인 응용 프로그램에 의존하지 않는 것이 가장 좋습니다.
감사합니다.
답변1
전체 사용자 로그인 세부 정보는 사용 중인 배포에 따라 보안 또는 감사 로그에 있어야 합니다. 이는 /etc/passwd에 존재하는지 확인하는 간단하고 빠른 수정이지만, 중복된 사용자 이름으로 인해 문제가 발생할 수 있습니다.