1

ブラウザで実行され、ユーザーがインタラクティブシェルを開いてLinuxマシンでファイルを表示および編集できるようにするcgi-binアプリケーションをCで作成しました。これは、標準の apache "www-data" ユーザーとして実行されます。ユーザーが名前とパスワードを (フォームに) 入力するログイン画面を追加しましたが、 getspnamを使用してユーザーを認証することはできません。この機能は root として実行している場合にのみ機能するためです。

root として実行していないときにユーザーのログイン資格情報を確認するには、どのようなオプションが必要ですか?

PS: 私の対話型シェルでは、「su root」と入力してからパスワードを入力すると、root に昇格するので、明らかに対話的に実行できます。

4

3 に答える 3

3

Pluggable authentication modulesをご覧になりたいと思います。私の知る限り、PAM はすべての面倒なことを処理します。Linux ホストでユーザーを認証するためのバックエンドが何であれ (シャドウ パスワード、nis、ldap など)、ユーザーを認証するためにいくつかの関数呼び出しを行うだけで済みます。

これは、C コードをそれらと統合するための簡単なガイドです。

于 2009-12-22T19:26:30.787 に答える
1

あなたの PS に関して: まあ、あなたがするとき、su rootあなたは root ユーザーに切り替えています。はい、もちろん、root はシャドウ ファイルを読み取ることができます。

setuidあなたの問題に関して:認証を実行するために 、Apacheプロセスを一時的にルートに昇格させることはできませんか?

幸運を!

于 2009-12-22T19:23:24.033 に答える
0

示唆されているように、PAM はこれを行う最新の方法だと思います。しかし、古い学校に行きたい場合は、認証を行うために (スクリプトではなく) setuid-root プログラムを作成する必要があります。

setuid-root プログラムには多くの落とし穴があります。そのため、PAM の方が優れている可能性があります。

setuid-root プログラムを安全に作成するための優れた論文へのリンクを次に示します。

于 2009-12-22T20:15:24.973 に答える