More from: anonymous

Windowsからftpサーバへの接続メモ

先日から「(Windows標準の)エクスプローラーから簡単にファイルサーバにアクセスしたい。」という要望を実現すべくいろいろ試行錯誤していたのでその時のメモ。

WindowsXP以降のOSには標準でftpクライアントが実装されたので、それを使ってftpサーバに接続してファイルのアップロードやダウンロードが出来るようになった。
エクスプローラーのアドレスバーに「ftp://(サーバのアドレス)/」と入れればanonymous(匿名)ユーザーでのアクセスを許可しているサーバならログイン可能だ。
接続できない場合はanonymousログインを許可していないかサーバ側の設定が間違っていることになる。

今回使用したサーバはvsftpdを利用していたので、以下はvsftpd用の設定メモ。
anonymousユーザーのホームディレクトリ(ftp rootになる)はデフォルトで/var/ftp/なので、これを他のディレクトリにしたければ/etc/passwdファイル中のftpユーザーのエントリを書き換えてvsftpdを再起動すれば良い(kill -HUP 1を実行する必要もあるか)。
ここで気をつけなくてはならないのは、ホームディレクトリに一般ユーザーの書き込み許可があるとvsftpdはログインを許可しないので、エクスプローラーからの接続が出来ない。
Linuxから接続しようとすると、
500 OOPS: vsftpd: refusing to run with writable anonymous root
のエラーメッセージが出て接続が拒否される。
なので、ホームディレクトリのパーミッションは755もしくは775にして置く必要があり、ファイルのアップロードを許可するには書き込み可能なサブディレクトリを作成しておく必要がある。
当初はこのことに気付かず実際にアクセスさせたいディレクトリをホームディレクトリに変更したところログインできなくなって焦った(というか変更は出来ないものかと思った)。

なお、接続時にユーザー名を指定して接続する場合にはその必要は無い。
接続時にユーザー名を指定するにはアドレスバーに「ftp://ユーザー名@サーバーのアドレス」と入力し、パスワード入力を促すダイアログボックスが表示されるので、そこでパスワードを入力すれば(そしてパスワードが正しければ)サーバへ接続できる。
下はパスワード入力のダイアログボックス。

ftp接続時のダイアログボックス

ftp接続時のダイアログボックス。


2回目以降も同じユーザー名とパスワードで接続するなら下の「パスワードを保存する」にチェックを入れておけば入力の手間が省ける。

とりあえずここまでやって目的のサーバーに接続できるようにはなった。
今現在少々悩んでいるのがファイル名の文字コードで、sambaユーザーがアップロードした日本語ファイル名がことごとく文字化けして全く意味不明だということ。
読めないだけならまだしも、フォルダ名が日本語の場合にフォルダの中は見れてもファイルを開こうとするとアクセス出来ないのは困る。
この文字コードを統一したいのだけれど、まだそこまでは調べが付いていないので現在も調査中。
まぁ、sambaとftpを別個に運用することも出来るので、どうしても無理なら諦めることにしよう。

←クリックしてくれると嬉しいです。

anonymousユーザーのroot dir

WindowsXP等にはftpクライアントが実装されていて、エクスプローラー(IEに非ず)のアドレスバーに「ftp://ftp server/」と入れるとそのサーバにログイン出来る。
ログインユーザーはWindowsのユーザー名ではなく、「anonymous」ユーザーとなるので、通常は限定されたアクセスしか出来ないか、サーバーによってはアクセスを拒否される。
「安全性が確保できるのであれば」というのが前提だけど、anonymousユーザーのftp rootを他のディレクトリに(例えばsambaユーザーが使用するディレクトリに)変更すれば、LAN内のsambaユーザーと外からのftpユーザーが同じファイルを共有することも可能と言うことになる。
#反対にftpユーザーのrootディレクトリをsambaで開放しても同じこと(sambaユーザーとanonymous ftpユーザーが同じファイルにアクセスすること)が可能。
anonymous ftpユーザーのrootディレクトリはftpユーザーのホームディレクトリ(/var/ftp等)なので、これを変更すればエクスプローラー上に見えるディレクトリを変更できる。
ホームディレクトリの変更はX上で管理ツールを使っても出来るし、/etc/passwdファイルを直接編集してからkill -HUP 1で行うことも出来る。
ところがこの方法だとサーバ上のアカウントを聞いてくるので、その時に正しいユーザー名とパスワードの入力が必要になる。
しかもディレクトリ内にあるファイルが一部しか見えず、sambaサーバーのような使い方が出来ない。
ホームディレクトリの変更をしないのであれば、ホームディレクトリ内からsambaで開放しているディレクトリにシンボリックリンクを張ることで同様のことが実現可能に思えるが、実際にはこれは出来ず、やってみてもシンボリックリンクがWindowsのショートカットのような扱いをされてしまい、目的のディレクトリにはアクセス出来なかった。

ちょっと実験をしてみたが、今のところsambaサーバーのようには使える状態には至っていない。

でもこれが実現できたら便利になるなぁ・・・・・・もうちょっと調べてみよう。

←クリックしてくれると嬉しいです。