どのプログラムただ指定されたユーザーのパスワードを要求し (呼び出し元のユーザーが root であっても)、OK の場合は終了コード 0 を返し、失敗した場合は終了コード 1 を返します。
このタスクを実行するための、このような単純なプログラム (つまり、編集された構成の「sudo」ではないもの) はありますか?
login
また、ユーザーをログインさせる(パスワードをチェックし、auth.log に書き込む)が、プログラム(など)は実行せず、単に終了コードを返すプログラムを探しています。
答え1
次のようなユーティリティが必要ですpwauth
. まさにあなたが説明したとおりに動作します。ユーザー名とパスワードを受け入れ、有効性に基づいて終了コードを返します。Apache の mod_auth_external と一緒に使用してシステム認証にフックするように設計されていますが、必要な用途には問題なく動作するはずです。
答え2
あなたがしようとしていることは、ユーザー セッションの目的に反しています。ユーザーは自分のアカウントにログインしたときにすでにそのパスワードを入力しているので、タスクのために再度パスワードを要求するのは失礼です。プログラムをログインに基づいて実行したい場合、最適な方法はキー リングをサポートすることです。これにより、ユーザー自身がタスクのためにパスワードを明示的に入力するかどうかを選択できます。
correct horse battery staple
ユーザーが入力したばかりのときに、再度入力を強制しないでください...
答え3
最も簡単な方法は、次のように書くことです。python-pam例として使用します/usr/share/doc/python-pam/examples/pamtest.py
。この例では、パスワードを読み取り、PAM を使用してユーザーを認証し、結果に応じてメッセージを書き込みます。さまざまな終了コードに簡単に変更できます。