LoginSignup
12
15

More than 5 years have passed since last update.

raspberry pi で vsftpdを使おうとして困ったこと

Last updated at Posted at 2016-02-25

工事中

rasperry pi でftpをインストールし、母艦となっているwindows 7 とFTP 経由でファイルをやり取りしたい。

インストール

#apt-get install vsftpd
設定前に一旦停止
#sudo service vsftpd stop

config file を編集

困らないようにconfigファイルを保存
#sudo cp /etc/vsftpd.conf /etc/vsftpd.conf-BAK
編集
#sudo vi /etc/vsftpd.conf

http://park12.wakwak.com/~eslab/pcmemo/linux/vsftpd/vsftpd6.html
http://www.aconus.com/~oyaji/ftp/vsftpd_rpm.htm
http://www.nina.jp/server/redhat/vsftpd/vsftpd.conf.html
を参考にさせていただきました。

vsftpd.conf
anonymous_enable=NO   #匿名ユーザのFTPログインを許可しない
local_enable=YES      #ローカルユーザ(例えば、pi)のログインが可能となる。 
write_enable=YES      #書き込み系のコマンド(STOR, DLE, RNFR, RNTO, MKD, APPE,
                      # SITE)を使えるようにする。
local_umask=022       #一般的な022とし、パーミションが755となるよう変更する。??
dirmessage_enable=YES #ディレクトリ毎にメッセージファイル(デフォルトのファイル名:
                      #.message) を置いておくと、そのディレクトリ一覧を表示すると
                      #きに当該メッセージをコマンドのレスポンスとして表示できる。
connect_from_port_20=YES #Activeモード時のデータコネクションポートを20番に固定
                      #するかどうかの設定
xferlog_enable=YES    #ファイルのアップロードとダウンロードをログファイルに記録する。
#xferlog_file=/var/log/vsftpd.log #指定したファイルに wu-ftpd スタイルでログ
                      #を記録する。
xferlog_std_format=NO #ログの取得形式.
                      # YES: xferlog (wu-ftpd互換) 形式.
                      # NO : vsftpd 形式.
vsftpd_log_file=/var/log/vsftpd.log # vsftpd 形式ログのファイル名を指定する
                      #(ディレクティブ追加)ディレクティブ無しでも下記ファイルが
                      #指定されているがファイル名を明示する.
idle_session_timeout=300     # 制御コネクションのタイムアウト値. デフォルトは 600
#data_connection_timeout=120 #指定した時間、データを転送しなかった場合、切断する。
#nopriv_user=ftpsecure       #vsftpdが使用する非特権ユーザを指定する。
#async_abor_enable=YES #"async ABOR"コマンドを有効にする。
                       #ファイル転送のキャンセル時のハングアップを回避??
ascii_upload_enable=YES   # ASCII モードによるアップロードを許可する.
ascii_download_enable=YES # ASCII モードによるダウンロードを許可する.
#ftpd_banner=Welcome to blah FTP service.
#deny_email_enable=YES
#banned_email_file=/etc/vsftpd.banned_emails
chroot_local_user=YES #ユーザのルートディレクトリを制御 (chroot) する. (ディレクティブ追加)
                       #ユーザのルートディレクトリを、そのホームディレクトリヘ変更する.
chroot_list_enable=YES #ただし、chroot_list_enable を YES としてリストアップ ユーザはその対象から除外する.
chroot_list_file=/etc/vsftpd.chroot_list
                       #除外対象ユーザは chroot_list_file で指定する.
                       #(default follows)
                       #chroot 制御の除外ユーザをリストアップしたファイル名を指定.
                       #編集しなくても有効だが、コメントアウト記号を外して明示する.
local_root=/home/pi    #ユーザのログイン ディレクトリを指定する
#ls_recurse_enable=YES
pam_service_name=vsftpd
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd.user_list
listen=YES
tcp_wrappers=YES
use_localtime=YES      #ローカルタイムを使用する. (ディレクティブ追加)
force_dot_files=YES    #ファイル一覧要求の応答にドットファイルを含める. (ディレクティブ追加)
pasv_enable=YES        #Passive mode の使用を許可する. (ディレクティブなしでも有効だが、明示するため追加)
chmod_enable=YES       #パーミッション変更コマンドを許可する. (ディレクティブなしでも有効だが、明示するため追加)

この設定で、vsftpdをスタートする。
#sudo service vsftpd start

試しにvsftpdをリスタートしてみる。
#sudo service vsftpd restart

もしこの時、以下のようにエラーが表示されたとする。
Stopping FTP server: vsftpd No /usr/sbin/vsftpd found running; none killed.

ストップに失敗した、すなわちちゃんとスタートできていない。
この場合にはコマンドから直接 vsftpd を起動する
#sudo vsftpd

vsftpd は vsftpd.conf を読み込んで立ち上がろうとするが、もし vsftpd.confに間違いがあると、例えば以下のように表示してくれる。

vsftpd

500 OPOPS: unrecogised variable in config file:allow_writeable_chroot


Windows 7のコンソールからFTP でraspberry pi につないでみた。次のようなエラーが発生。

ftp 192.168.xx.yy
ftp 192.168.xx.yy に接続しました。
500 OOPS: cannot read user list file:/etc/vsftpd.user_list
500 OOPS: priv_sock_get_cmd500 OOPS: child died
ユーザー ( 192.168.xx.yy:(none)): pi
接続がリモート ホストによって閉じられました。

/etc/vsftpd.user_listの利用することをconfで宣言したにも関わらず、ファイルを作りわすれていた。

sudo vi /etc/vsftpd.user_list

myname

を記載した。けれどまだつながらない。

ftp 192.168.xx.yy
ftp 192.168.xx.yy に接続しました。
200 (vsFTPd 2.3.5)
ユーザー ( 192.168.xx.yy:(none)): pi
530 Permission denied
ログインできませんでした。

vsftpd.user_listの記載をpiに変更

sudo vi /etc/vsftpd.user_list

pi

でもまだつながりません。


以下のコマンドを config に書き込んで試しましたが、エラーになってvsftpdは起動してくれません。ダメでした。

allow_writeable_chroot=YES
allow_writable_chroot=YES
allow_writeable_root=YES
allow_writable_root=YES

# vsftpd
500 OPOPS: unrecogised variable in config file:allow_writeable_chroot

あちこち見させていただいて、root のモードを変更
chmod a-w /home/pi

やっとつながりました。ところが今度は書き込めません。

put readne.txt
200 PORT command successful, Consider using PASV
552 Could not create file.

WindowsのFTPクライアントはPASVモードに対応していない ...
http://iamapen.hatenablog.com/entry/2014/09/12/201331

ということで、FFFTP を使ったところ読み書きができるようになりました。

12
15
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
15