ユーザー認証

ユーザー認証

setuid root実行可能ファイルを作成し、ユーザーにパスワードを要求してスクリプトではなくユーザーを認証したいとします。 (もちろん、ユーザーは自分のパスワードを保存してスクリプトで使用できますが、そうではありません。これは私の仕事ではありません)。

これを行う良い方法は何ですか?携帯性が高いほど良いです。

ベストアンサー1

ほとんどの最新のUnixシステムではポリアクリルアミド認証を処理します。このモジュールはpam_unixパスワードを確認するためのモジュールです。/etc/password/etc/shadow

しかし、車輪を再発明してはいけません。ユーザーのパスワードを要求し、root として実行するのが基本構成です。Sudo、権限を高める事実上の標準的な方法です。権限を正しく上げるのは難しいことに注意してください。プログラムに影響を与える可能性のある環境変数をすべて消去しましたか?スードは安全を確保するために多くの努力をしてきました。

ユーザーがパスワードを入力した後に選択したパラメータを使用してrootとして実行できるようにするには、ファイルalice(sudo設定ファイル)の/usr/local/bin/myprogram次の行を使用します。sudoers

alice ALL = (root) /usr/local/bin/myprogram

ファイルを編集するには、sudoersコマンドを実行しますvisudo

アリスは逃げなければならないでしょうsudo myprogram。彼女がプログラム名だけを入力できるようにするには、ラッパースクリプトから名前を隠します。ただし、Aliceはgksudo myprogramGUIプロンプトを取得するために同様のコマンドを実行することを好むかもしれません。

呼び出し元が引数を渡すのを防ぐなど、さまざまなバリエーションが可能です。

alice ALL = (root) /usr/local/bin/myprogram ""

または、グループに項目を適用します。

%mygroup ALL = (root) /usr/local/bin/myprogram

プログラムで誰が呼び出したかを知る必要がある場合は、sudoを環境変数SUDO_UIDSUDO_USER

おすすめ記事