Amazon EC2でAmazon Linux AMIを使用してVSFTPDを設定しました。ユーザーを作成し、ftp経由で正常に接続できるようになりました。しかし、何かをアップロードしようとすると、「553ファイルを作成できませんでした」というエラーメッセージが表示されます。
私はこれが許可に関係していると思いますが、それを修正できるほど私はそれについて十分に知りません。それで、基本的に、ファイルをアップロードできるようにするために何をしなければなりませんか?
これが発生する可能性のある理由は2つあります。アップロードしようとしているディレクトリにつながるディレクトリに対する書き込みおよび実行権限がないか、vsftpd
がアップロードを許可しないように設定されています。
前者の場合は、必要に応じてchmod
およびchown
を使用して、ユーザーがすべての中間ディレクトリに対してこれらの権限を持っていることを確認します。書き込みビットを使用すると、影響を受けるユーザーはディレクトリ内のファイルを作成、名前変更、または削除し、ディレクトリの属性を変更できます。読み取りビットを使用すると、影響を受けるユーザーはディレクトリ内のファイルを一覧表示できます。パスの中間ディレクトリもこれに影響を与えるため、アップロード先の最終的な宛先に至るまで、権限を適切に設定する必要があります。
後者の場合は、vsftpd.conf
を確認してください。 write_enable
は書き込みを許可するためにtrueでなければなりません(デフォルトではfalseです)。この構成ファイルに関する適切なドキュメントはman 5 vsftpd.conf
にあります。
これを試して頂けますか
chown -R ftpusername /var/www/html
コマンドftp put /path/to/local_file
はvsftpd
では機能しません。以下を試してください:
ftp put /path/to/local_file remote_file_name
remote_file_name
には任意の名前を選択できますが、指定する必要があります。
FTPホームディレクトリ(ftp_home_dir)は、SeLinuxではオフになっている可能性が高いです。 ftpd
制御ファイルのステータスを確認するには、getsebool -a
を発行してftpdセクションを見つけます。 ftp_home_dirがオフになっていることに気付くでしょう。オンにするには、次のコマンドを使用します。setsebool -P ftp_home_dir=1
getsebool -a
を使用して入力を確認し、もう一度アップロードしてください。
注:句読点は無視してください
同じ問題があり、vsftp = /var/ftp/pub
が使用するように構成したフォルダーに書き込みを許可するようにSELinuxを変更することを修正しました。
これらのリンクは役に立ちます:
SELinuxを使いたくない場合は変更しないでください。デフォルトとして表示されます/etc/selinux/config
SELINUX=enforcing
次に、ルートとして、またはSudo
を使用してコマンドを実行します。
Sudo setsebool -P ftpd_anon_write 1
Sudo setsebool -P ftpd_full_access 1
他のコメントですでに説明したとおり。
これを試して
chmod 757 -R /var/www/html
この設定についてvsftpd.conf
を確認してください:
guest_enable=YES # set it to NO then restart the vsftpd service.
YES
に設定すると、553 Could not create file
も発生します。
差出人: http://www.vsftpd.beasts.org/vsftpd_conf.html
guest_enable有効にすると、すべての非匿名ログインが「ゲスト」ログインとして分類されます。ゲストログインは、guest_username設定で指定されたユーザーに再マップされます。
デフォルト:いいえ
ファイル名にサポートされていない文字が含まれている可能性があります
次のパラメーターは、どこにでも書き込むためのftpdアクセスを提供します。
setsebool -P ftpd_full_acess=true
使ってはいけません ftpd_anon_write
匿名アップロードを許可したい場合を除きます。
別の可能性:ユーザー/グループのディスククォータを確認する
ext:
repquota -a
xfs:
xfs_quota -x -c 'report' /mount_point
私の場合、ftpユーザーは、それが置かれていたディレクトリに権限がありませんでした。
ターゲットディレクトリにcdするのを忘れたので、didに適切なアクセス許可を持っています。