web-dev-qa-db-ja.com

ProFTPd、MySQL、仮想ユーザーと権限

MySQLデータベースでProFTPd認証を制御したい。ユーザーは、PHP WebアプリケーションでFTPアカウントのユーザー名とパスワードを変更できます。これにより、次の問題が発生します。データベースのユーザーテーブルに設定されているユーザーがシステムと一致しません。そのため、ファイルシステムのディレクトリ権限を変更できず、ProFTPdはエラーをログに記録します。

ユーザー名chdir( "/ var/www/vhosts/sites/username"):アクセスが拒否されました

しかし、どうすればこれらのFTPユーザーにこれらのフォルダーへのアクセスを許可できますか? www-dataというユーザーを設定すると、正常に機能しますが、ユーザー名は/etc/passwdで定義されません。

次に管理したいのは、この唯一のディレクトリ、この場合は/var/www/vhosts/sites/usernameの制限です。上記のホームディレクトリにない場合、ユーザーは他のディレクトリにアクセスできないようにする必要があります。

これを修正するにはどうすればよいですか?

3
ffraenz

実際のユーザーと同じように、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  ~

ディレクティブの場合、ユーザーは自分のディレクトリツリー内に制限されます。

3
user9517