FTPでアップロードすると553エラー



●環境
Windows 7 Pro 64bit上にVMWare Player 12 + CentOS 7
FTPサーバはvsftpd、クライアント側はNetBeans
セキュリティはfirewalld + SELinux


●発端
NetBeansで書いたphpファイルをアップロードしようとしたところ
>553 Could not create file.
と言われた


●対策
(1) ポートを解放しているかを確認する
$ firewall-cmd --list-service --zone=public// publicなサービスを確認

開いてなければ開ける
$ firewall-cmd --add-service=ftp --zone=public --permanent// 恒久的にFTPを許可
$ firewall-config// ↑GUIからの操作のが楽
$ firewall-cmd --reload// firewalldの再起動


(2) SELinuxのアクセス許可を指定する
$ getenforce// Enforcing(アクセス制御が有効)になっていることを確認
$ setsebool -P ftpd_full_access 1// ftpdがローカルユーザーにログインし、ファイルを読み書きできるようにする


(3) ディレクトリのアクセス権と所有権を変更する
$ chmod 775 [ディレクトリ名]// 指定したディレクトリの所有者またはそのグループから読み書き実行を許可、それ以外は読みと実行だけ許可
$ chown [ユーザー名] [ディレクトリ名]// 指定したユーザーを指定したディレクトリの所有者にする(ftpでログインするユーザーと同一)

アクセス権の設定はやり直しが効かないので注意(たぶん大抵の新規作成ディレクトリは所有者rootで755だと思う)


●落穂拾わない
・単純に読み書きを許可するようにする設定なので、ダウンロード時のエラー(550 Failed to open file.)とかもこれでできるようになる

・phpinfo()がちゃんと表示されなかった
→そもそもPHPがインストールされてないとかいう大ポカ
 $ yum -y install php php-mbstring php-pear



2016/05/02 自分がはまったので



トップに戻る