web-dev-qa-db-ja.com

Linuxでユーザーが「ログインが許可されている」かどうかはどのようにしてわかりますか?

質問は簡単です。システムにログインできるすべてのユーザーアカウントを一覧表示したいのですが、/ etc/passwdのすべてのユーザーが「ログインできた」ユーザーかどうかわかりません。

詳細:

シェルが/usr/sbin/nologin/bin/false/etc/passwdに設定されているユーザーを確認できますが、ログインできないということですか?

また、ユーザーの暗号化されたパスワードを*!または/etc/shadowに設定してアカウントを無効にできるため、「無効なユーザー」も「ログインできない」として扱う必要があることも知っています。 「ユーザー、そうですか?

12
harryz

これの多くは、「ログイン」の定義に依存します-技術的には、が_/etc/passwd_&_/etc/shadow_に存在するが「有効なユーザー」であるすべてのユーザー理論的には、適切な状況でログインできます。

あなたが話している方法は、次の広いカテゴリーに分類されます:

  • 「ロックされた」アカウントを持つユーザー
    パスワードが_*_、_!_、または決して一致しないその他のハッシュに設定されているユーザーは「ロックアウト」されます(日曜日の慣習では_*LK*_、「ロック」の場合)。
    これらのユーザーはパスワードを入力してログインすることはできませんが、他の認証メカニズムを使用してできるでもログインします( SSHキーなど)。

  • 「非インタラクティブ」シェルを持つユーザー
    アカウントに「非インタラクティブシェル」(_/bin/false_、_/sbin/nologin_)があるユーザーは、ログインできませんinteractively-つまり、コマンドを実行するためのシェルプロンプトを取得できません(これにより、ユーザーがシステムにSSHキーを持っている場合、SSHコマンドの実行が妨げられます)。
    これらのユーザーは、ログインしてメールの読み取り/送信(POP/IMAPおよびSMTP AUTH経由)などの操作を実行できる場合があります。シェルを使用する必要がないユーザー(およびほとんどの「サービスアカウント」)に非インタラクティブシェルを設定することは、一般的には良い方法と見なされます。

したがって、「ログイン可能」の基準によっては、これらのいずれかまたは両方を確認する必要がある場合があります。

13
voretaq7

ユーザーを無効にすることとシェルを/ bin/falseまたは同様に設定することには違いがあります。

シェルを/ bin/falseに設定すると、ユーザーはシェルを取得できなくなりますが、ローカルユーザーが他の目的(メール認証、ftpなど)に使用されている場合は、システムにログインできます。ユーザーを無効にすると、ローカルユーザーを使用するサーバーのサービスを使用できなくなります。

6
Pentium100

上記に加えて、いくつかの異なる方法を使用してパスワードの入力が正しいように見えても、ユーザーがシステムからロックアウトされる場合があります。

/etc/security/access.confを使用して、ログインできるユーザーを制限できます。

特定のユーザーを制限したり、必要に応じてログイン動作を変更したりするように構成できるPAMモジュールは多数あります。 (つまり、サーバーのホームディレクトリにログインが許可されていません。)

3
billq