問題
ftp クライアントから匿名ユーザーで vsftp サーバーにログインし、ファイルをアップロードしようとするとエラー メッセージが表示されて失敗します:
# ftp vsftpsrv Connected to vsftpsrv (10.182.38.176). 220 (vsFTPd 2.0.5) Name (10.182.38.176:root): anonymous 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> pwd 257 "/" ftp> ls 227 Entering Passive Mode (10,182,38,176,29,34) 150 Here comes the directory listing. drwxr-xr-x 2 0 0 4096 Jan 09 2013 pub 226 Directory send OK. ftp> put vsftpd.txt mput vsftpd.txt? y 227 Entering Passive Mode (10,182,38,176,182,24) 550 Permission denied. ftp>
解決策
デフォルトでは、匿名ユーザーは、構成ファイルで制限されているため、ファイルをアップロードしたり、vsftp サーバーにディレクトリを作成したりできませんでした。
注意 :匿名ユーザーは vsftpd の「/」ディレクトリの下にファイルをアップロードできません。回避策として、最初にサブディレクトリを作成してください。1. vsftp サーバーで、以下の行が存在し、/etc/vsftpd/vsftpd.conf でコメントアウトされていないことを確認します :
anon_upload_enable=YES注意 :匿名ユーザーにディレクトリの作成を許可する場合は、「anon_mkdir_write_enable=YES」もコメント解除します。
2. vsftp サーバーで、vsftpd “/” ディレクトリの下にサブディレクトリを作成します /var/ftp/
# mkdir /var/ftp/anon_upload
3. 次に、ディレクトリの所有権を ftp:root に変更し、権限を 0777:
に変更します。# chown ftp:root /var/ftp/anon_upload/ # chmod 0777 /var/ftp/anon_upload/ # stat /var/ftp/anon_upload/ File: `/var/ftp/anon_upload/' Size: 4096 Blocks: 8 IO Block: 4096 directory Device: fc00h/64512d Inode: 719500 Links: 2 Access: (0777/drwxrwxrwx) Uid: ( 14/ ftp) Gid: ( 0/ root) Access: 2014-02-25 09:27:47.000000000 -0500 Modify: 2014-02-25 09:26:04.000000000 -0500 Change: 2014-02-25 09:38:17.000000000 -0500
4. vsftp サーバーで vsftpd サービスを再起動します。
# service vsftpd restart Shutting down vsftpd: [ OK ] Starting vsftpd for vsftpd: [ OK ]
5. ftp クライアントから vsftp サーバーにログインし、新しく作成したディレクトリにファイルをアップロードします:
# ftp vsftpsrv Connected to vsftpsrv (10.182.38.176). 220 (vsFTPd 2.0.5) Name (10.182.38.176:root): anonymous 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> pwd 257 "/" ftp> ls 227 Entering Passive Mode (10,182,38,176,205,23) 150 Here comes the directory listing. drwxrwxrwx 2 14 0 4096 Feb 25 14:26 anon_upload drwxr-xr-x 2 0 0 4096 Jan 09 2013 pub 226 Directory send OK. ftp> cd anon_upload 250 Directory successfully changed. ftp> put vsftpd.txt local: vsftpd.txt remote: vsftpd.txt 227 Entering Passive Mode (10,182,38,176,34,113) 150 Ok to send data. 226 File receive OK. 38 bytes sent in 1.3e-05 secs (2923.08 Kbytes/sec) ftp> ls 227 Entering Passive Mode (10,182,38,176,124,56) 150 Here comes the directory listing. -rw------- 1 14 50 38 Feb 25 14:39 vsftpd.txt 226 Directory send OK. ftp>
一般的なエラー:
1. 上記の解決策のステップ 3 が設定されていない場合、匿名ユーザーでファイルをアップロードすると、以下のエラーが発生します:
# ftp vsftpsrv Connected to vsftpsrv (10.182.38.176). 220 (vsFTPd 2.0.5) Name (10.182.38.176:root): anonymous 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> pwd 257 "/" ftp> ls 227 Entering Passive Mode (10,182,38,176,159,123) 150 Here comes the directory listing. drwxr-xr-x 2 0 0 4096 Feb 25 14:26 anon_upload drwxr-xr-x 2 0 0 4096 Jan 09 2013 pub 226 Directory send OK. ftp> cd anon_upload 250 Directory successfully changed. ftp> pwd 257 "/anon_upload" ftp> put vsftpd.txt local: vsftpd.txt remote: vsftpd.txt 227 Entering Passive Mode (10,182,38,176,179,248) 553 Could not create file. ftp>
2. vsftpd の「/」ディレクトリに 0775 パーミッション「# chmod -R 0775 /var/ftp」を付与すると、匿名ユーザーのログインはセキュリティ上の問題で失敗します:
# ftp vsftpsrv Connected to vsftpsrv (10.182.38.176). 220 (vsFTPd 2.0.5) Name (10.182.38.176:root): anonymous 331 Please specify the password. Password: 500 OOPS: vsftpd: refusing to run with writable anonymous root Login failed. ftp>