MySQLデータベースでProFTPd認証を制御したい。ユーザーは、PHP WebアプリケーションでFTPアカウントのユーザー名とパスワードを変更できます。これにより、次の問題が発生します。データベースのユーザーテーブルに設定されているユーザーがシステムと一致しません。そのため、ファイルシステムのディレクトリ権限を変更できず、ProFTPdはエラーをログに記録します。
ユーザー名chdir( "/ var/www/vhosts/sites/username"):アクセスが拒否されました
しかし、どうすればこれらのFTPユーザーにこれらのフォルダーへのアクセスを許可できますか? www-data
というユーザーを設定すると、正常に機能しますが、ユーザー名は/etc/passwd
で定義されません。
次に管理したいのは、この唯一のディレクトリ、この場合は/var/www/vhosts/sites/username
の制限です。上記のホームディレクトリにない場合、ユーザーは他のディレクトリにアクセスできないようにする必要があります。
これを修正するにはどうすればよいですか?
実際のユーザーと同じように、proftpd仮想ユーザーにファイルとディレクトリの所有権を与える必要があります。 chown でこれを行うことができます。ユーザーはシステムユーザーではないため、数値のUID:GIDを使用する必要があります。ユーザー名がUID10001およびGID1111(mysqlデータベースから)の場合
chown 10001:1111 /var/www/vhosts/sites/username
chown -R 10001:1111 /var/www/vhosts/sites/username
ユーザーが自分のファイルを制御できるようにする必要があります。 www-dataユーザーがファイルとディレクトリへの適切な読み取り専用アクセス権を持っていることを確認してください。ワールドr-xをディレクトリに、r--をファイルに与えます。
あなたが設定した場合
DefaultRoot ~
ディレクティブの場合、ユーザーは自分のディレクトリツリー内に制限されます。