ユーザーがドメインまたはローカルホストにログインしているかどうかをLinuxシェルスクリプトで検出する方法は?

ユーザーがドメインまたはローカルホストにログインしているかどうかをLinuxシェルスクリプトで検出する方法は?

デフォルトでは、Linuxはドメインをサポートしません。ただし、ユーザーはElike、Winbindなどのアプリケーションを介してドメインに参加できます。
私のプロジェクトの顧客はすべて法人のメンバーです。セキュリティ上の問題により、ほとんどの顧客のLinuxホストはドメインに参加します。
残念ながら、お客様はLinuxホストがドメインに参加していても、localhostにログインできます。例:
(1)Linuxホストには2つのアカウントがあります。
ドメインアカウント:dev.com \ john(ドメインはdeveloper.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に存在することを確認する簡単で迅速な修正ですが、重複したユーザー名が原因で問題が発生する可能性があります。

関連情報