0

私は現在 FTP サーバーを作成しており、実際の認証を実装したいと考えています。つまり、システムにユーザーがいて、システムに保存されているユーザー名パスワードを使用してクライアント (たとえば Filezilla など) で FTP サーバーにログインできるようにしたいと考えています。

しかし、これを実装して適切な権限を付与するために従うべき手順がわかりません(ユーザーが所有者ではないファイルを削除できないなど...)。

ファイル内でログイン/ホーム ディレクトリを見つける必要があることはわかっていますし、ファイル内で/etc/passwdハッシュ化されたパスワードを見つけることができることもわかっていますが、これらのパスワードはどのように暗号化されているのでしょうか?/etc/shadow

ログインしたら、ユーザーが自分でファイルを削除/アクセス/書き込みする権限を持っているかどうかを確認する必要がありますか、またはシステムに知らせる方法はありますか?

ありがとう。

4

3 に答える 3

4

パスワードが特定のファイルに保存されることを期待したり、特定の方法で暗号化 (実際にはハッシュ) されると想定したりしないでください。

パスワードは、NIS などの集中型データベースによって提供される場合や、認証が LDAP やアクティブ ディレクトリに委任された場合など、実行中の Unix システムが処理できない方法で保存される場合もあります。

適切な方法は、基礎となる複雑で柔軟な設定を隠す単一のインターフェースを提供するように正確に設計された pam フレームワークを使用することです。

Unix 実装については、getpwuid、pam_start、および pam_authenticate のマニュアル ページを参照してください。

于 2013-04-11T11:23:08.767 に答える
1

これは、使用している OS によって異なります。FreeBSD の場合、基になるハッシュ (デフォルトでは SHA-512) を変更する Crypt アルゴリズムです。 http://www.freebsd.org/doc/en/books/handbook/crypt.htmlを参照してください。他の OS は Bcrypt などを使用できます。

于 2013-04-11T10:11:31.177 に答える
0

これは関連しているようです:

名前

pam_unix - 従来のパスワード認証用のモジュール

あらすじ

pam_unix.so [...]

説明

これは、標準の Unix 認証モジュールです。システムのライブラリからの標準呼び出しを使用して、アカウント情報と認証を取得および設定します。通常、これは /etc/passwd および /etc/shadow ファイルから取得されます (シャドウが有効になっている場合)。

ホストの unix アカウントに対して認証するアクションは、多くのプログラムが実行したいと考えているように思えます。そのため、独自のライブラリを作成するのではなく、タスクにライブラリを使用するのが理にかなっています。

于 2013-04-11T10:26:47.883 に答える