ProFTPD 仮想ユーザーディレクトリ

ProFTPD 仮想ユーザーディレクトリ

さて、私はSQL経由で仮想ユーザーを認証し、そのディレクトリにリダイレクト/監禁することで、ウェブホスティング会社の基本的な設定を再現しようとしています。ここでの目標のほとんどを達成しました。ただし、ユーザーを自分のディレクトリにリダイレクト/監禁することは除きます。

ディレクトリは に保存され/home/ftp、それがDefaultRoot設定されます。各ユーザーが自分のディレクトリを持ち、そこに監禁されるようにしたいのですが、SQL の設定は効果がないようです。どのユーザーでも FTP にログインすると、ディレクトリ監禁やリダイレクトなしで にhomedirログインします。DefaultRoot

この最後のタスクをどうやって達成すればいいでしょうか?

答え1

DefaultRoot をコメントアウトしてみてください。データベース バックエンドから読み取られた値が上書きされる可能性があると思います。

編集:

DefaultRoot が設定されていて、~ 以外の値が設定されている場合、ユーザーは DefaultRoot をルートとするツリーに閉じ込められます。

DefaultRoot が ~ の場合、ユーザーはホーム ディレクトリをルートとするツリーに監禁されます。

答え2

前述のように DefaultRoot ~ を設定することに加えて、SQL 構成はどのようになっていますか? 実際にデータベースから抽出していますか?

DefaultRoot ~

<IfModule mod_dso.c>
  LoadModule mod_sql.c
  LoadModule mod_sql_mysql.c
</IfModule>

SQLLogFile          /var/log/proftpd/mod_sql.log
PersistentPasswd    off
AuthPAM             off
AuthUserFile        /some/path/to/dummy/passwd.ftp
AuthGroupFile       /some/path/to/dummy/group.ftp
AuthOrder           mod_sql.c mod_auth_file.c

SQLConnectInfo      proftpd@localhost:3306 userdatabase password
SQLAuthTypes        Backend Crypt Plaintext OpenSSL
SQLUserInfo         user user_id password NULL NULL ftp_homedir NULL
SQLAuthenticate     users
SQLDefaultUID       14
SQLDefaultGID       50
SQLMinUserUID       13
SQLMinUserGID       49

これは、データベースから 100% 認証を行い、DB にリストされているホームディレクトリにユーザーを閉じ込める、簡潔な例です。ユーザーがログインするときにホームディレクトリも動的に作成したい場合 (ユーザーをデータベースに追加し、サーバーにログインして作成したくない場合に便利です)、次のコードを追加できます。

CreateHome on dirmode 0755

...設定に追加します。上記にリストされている他の 2 つのダミー ファイルは、Red Hat/Centos サーバー上の ProFTPd インストールと一致します。

パスワード.ftp

ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin

グループ.ftp

ftp:x:50:
nobody:x:99:

これにより、仮想ユーザーは、ログイン ユーザー名に関係なく、ハード ドライブ上で 14:50 の UID/GID を持つことになります。

関連情報