次の行を有効にしました/etc/pam.d/common-auth
。
auth required pam_google_authenticator.so nullok
設定されていない場合(たとえば、.google_authenticatorファイルがホームフォルダにない場合)、OTPを要求しないnullokオプションを使用してください。
一部のユーザーがいますが、ホームフォルダがない人は誰ですか?(私はこのユーザーのパスワードを確認するためにPAMシステムを使用しています。それはすべてです。)
次のライブラリでテストされました。https://github.com/FirefighterBlu3/python-pam
python3 pam.py
Username: ...
Password: ...
Auth result: Authentication failure (7)
無効にすると、auth required pam_google_authenticator.so nullok
認証が正常に機能します。
python3 pam.py
Username: ...
Password: ...
Auth result: Success (0)
google_authenticatorを有効にした後、ホームフォルダなしでユーザーのパスワードをどのように確認できますか?
ベストアンサー1
コードはあちこちにあります。設定されている場合、フラグをopen_secret_file
設定すると、ホームディレクトリを持たないユーザーのように失敗します。より良いトレースを設定すると、ログメッセージが何であるかを正確に表示するのに役立ちます。SECRETNOTFOUND
nullok
open
debug
また、isはopen_secret_file
non-でない場合にのみ呼び出されます。もしそうなら、isが何であるか(別の場所で使用され、時には割り当てられ、時にはとんでもない)知る必要があります。secret_filename
NULL
buf
buf[1000]
stopped_by_rate_limit
とにかく、get_secret_filename
秘密ファイルのデフォルトの場所がホームディレクトリ以外の場所に変更される可能性があることを示しています。 「ホームフォルダを持たない人」とはどういう意味ですか?フィールドが空の場合は、次のいずれかになります。
if (!pw->pw_dir) {
log_message(LOG_ERR, pamh, "user(\"%s\") has no home dir", username);
goto errout;
}
if (*pw->pw_dir != '/') {
log_message(LOG_ERR, pamh, "User \"%s\" home dir not absolute", username);
goto errout;
}
一致します(debug
ここでPAMフラグを追加すると役立ちます)。これはget_secret_filename
returnを意味しNULL
、これはif (secret_filename) {
失敗を意味し、SECRETNOTFOUND
フラグがopen_secret_file
呼び出されなかったため設定できないことを意味します。そうであれば、コードはたくさんありますが、観察したように失敗するようです(debug
ここでより多くの情報を得ることができます)。
この状況を解決するための他のいくつかのオプションは説明を必要としません。
パッチコード
したがって、回避策はパッチをget_secret_filename
設定することです。
params->nullok = SECRETNOTFOUND;
これは、ホームディレクトリが存在しないか(複数の場所に)デフォルトで設定されていますが、存在しないものを返すparams->nullok = SECRETNOTFOUND
ときにオフになっている場合です。これには、セキュリティホールが発生しないようにする論理的な監査も含まれます。get_secret_filename
NULL
ユーザーに書き込めない空のホームディレクトリを提供します。
/var/empty
より簡単なオプションは、またはこれらのユーザーのホームディレクトリとして何かを使用することです。この場合、SECRETNOTFOUND
フラグが正しく設定される可能性があります。 (何も追加されていないことを監査できます。/var/empty
もちろん、これらのユーザーにはそのディレクトリを変更する権限がありません。)
PAMの合併症
Linux PAMを使用すると、後続のルールをスキップできるため、ホームディレクトリが空であるか類似している場合は、後続のルールをスキップpam_google_authenticator.so
するPAMモジュールがある可能性があります。
(ユーザーに使用できないホームディレクトリを提供することもできます。)