vsftpd による FTP アクセスの制御

vsftpd による FTP アクセスの制御

私は、セットアップした VPS にファイルをアップロードできるように vsftpd を設定しました。唯一の問題は、ディレクトリを作成できなかったことです。私は、匿名ユーザーを許可せず、仮想ユーザーがローカル資格情報を使用して接続できるように vsftpd を設定しました。この時点で、フォルダを作成しようとしたときのエラー メッセージが、「550: ディレクトリの作成に失敗しました」(言い換えると) から「550: アクセス許可が拒否されました」に変わりました。root は /var/www フォルダを所有しており、認証に使用したユーザーには読み取りおよび実行権限はありますが、書き込み権限がないため、フォルダやファイルを作成できないのは当然です。

この時点で、chown と chmod を使用して、グループ所有権を自分のユーザーが属するグループに再帰的に変更し、ユーザーに書き込み権限を与えようとしました。これは最初はうまくいったようで、SSH セッションで /var/www に cd して新しいディレクトリを作成できました。しかし、FTP クライアントでログインしようとすると、今度はアクセスが拒否されました。

さらに奇妙なのは、/var/log/vsftpd.log を確認すると、次の行が表示されることです。

Mon Jan  5 00:03:25 2015 [pid 801] CONNECT: Client "73.53.82.111"
Mon Jan  5 00:03:25 2015 [pid 800] [gradinafrica] OK LOGIN: Client "73.53.82.111"

...ログインが機能していないようです。何が起こっているのでしょうか?

編集(詳細情報): OS: Ubuntu 14.04 アーキテクチャ: 仮想プライベート サーバー (?)

サーバーをセットアップしたとき、root としてのログインを禁止し (複数のソースで推奨されているとおり)、別のユーザー (「gradinafrica」) をセットアップして、sudo グループに追加しました。このアカウントを ftp に使用しようとしています。sftp はまったく使用していません。

vsftpd.conf の内容は次のとおりです (コメントは省略)。

listen=YES
anonymous_enable=NO
local_enable=YES
virtual_use_local_privs=YES
anon_upload_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
local_root=/var/www/
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

答え1

/var/www/ 内のユーザー アカウントの書き込み権限を取得する必要がある場合、特定のユーザーは、オペレーティング システムに応じて apache または www-data グループのメンバーになる必要があります。

write_enable=YES

ウェブルートディレクトリをホームディレクトリとしてユーザーを追加した場合にのみこれを使用してください

allow_writeable_chroot=YES

関連情報