サーバーにファイルをアップロードするようにFTPを構成したNetbeansでWebサイトを開発しています。サーバー上-Ubuntu 14.04 LTS-このタスク専用に「ftpuser」というユーザーを作成しました。ファイルのアップロードを処理するためにvsFTPdをインストールしました。その構成は打撃です:
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
file_open_mode=0644
local_umask=022
dirmessage_enable
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
allow_writeable_chroot=YES
chroot_local_user=YES
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
Ftpuserの開始ディレクトリは/ var/wwwです。
ftpuser:x:1005:1007:ftp user,,,:/var/www:/bin/bash
Netbeansがファイルをアップロードしようとするたびに、「エラー、ファイルが送信されませんでした:file.php」と表示され、wiresharkを使用したパケット検査で次のエラーが返されます。
226 - Transfer done (but failed to open directory)
553 - Could not create file.
PUT操作でftpを実行しても、エラー553が発生します。FTPユーザーは、ログインしてディレクトリを変更しても問題はありません。
ディレクトリとそのすべてのサブディレクトリおよびファイルには、権限が755(777-local_umask)に設定されています。
行方不明のものはありますか?以前は完全に機能していましたが、NetbeansまたはvsFTPdで何かを変更したことを思い出せません。
[〜#〜]更新[〜#〜]
ディレクトリ(およびサブディレクトリ/ファイル)の所有者は、次のように設定されます。
drwxr-xr-x 6 marijn marijn 4096 Sep 1 14:21 noc
これをftpuser:ftpuserに変更しても、何も起こりません。
見落としがちなことですが、vsftpdが構成したポートがファイアウォールで開いているかどうかを確認してください。
FTPサーバーへの接続が正常に行われるという同様の問題がありましたが、フォルダーのディレクトリ一覧を取得できませんでした。私は6時間かけてぶら下げて解決策を探しましたが、これで問題が解決しました。
指定したポートのconfファイルを確認します。
vi /etc/vsftpd.conf
次の2行を探しています。
pasv_max_port=12100
pasv_min_port=12000
この場合、パッシブモード転送用にポート12000〜12100を開きます。
ufw allow 12000:12100 /tcp
HTH
幸い、私は開発サーバー上で動作する構成を持っていました。いくつかの変更をライブサーバーに直接アップロードする必要がある場合があり、vsftpd.confを別の方法で構成しました。また、NetbeansのFTP構成も異なりました。
これは私のvsftpd.confが今のように見えることです:(chrootがないことに注意してください)
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
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
Netbeansの開始ディレクトリは次のように設定されました。
/var/www/noc
あなたの詳細によると、あなたがアップロードしようとしているディレクトリに書き込む権限はユーザーにはないと言っています。
所有者/グループはmarijnです。ただし、ディレクトリに書き込むことができるのはユーザーだけであり、グループと他のユーザーは、ディレクトリの読み取りと入力しかできません。
ユーザーはftpuserです。
したがって、ftpuserをmarijnグループに追加し、グループmarijnに/var/www/noc
およびサブディレクトリ:chmod -R g+w /var/www/noc
または、ftpuserを書き込み先のディレクトリの所有者にする必要があります。