
私は、セットアップした 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