FTPサーバー構築。
連日の投稿です。この二日間でFTPについて色々学んだので、まとめます。
0.今までのFTPとのおつきあい。
お付き合いは長く、3年は使っていました。と言っても、使うのは全てWEBページに上げるようなものそういうことです。ただのパンピーでした。しかもFFFFTP一筋。Filezilaとかほったらかしにしていました。
1.FTPサーバを入れよう
ubuntu的にはvsfpdというものを入れるらしいです。apt-getでね。入れるまでは簡単で、そこから/etc/vsftpd.confという設定ファイルに入ります。ここでの設定が大事です。わんちゃんログインできなかったり、転送が(どっちかもしくは両方向)ダメになります。今日扱ったところを復習します。
2.各種用語について
用語とか知識がないと無理です。とりあえずFTP関連で出てくるワードを一通りさらいます。
- FTP
ファイル転送用のプロトコル。21番ポートで命令や応答などのやりとり制御、20番で実際のファイルのやり取りを行う。デフォでは暗号化されていないため、筒抜け状態になっているので注意が必要。ガバガバ
- SFTP
SSH FTPて感じ。FTPっぽく使えるけど中身は全然違う。SSHを使用しているので通信路は安全になっている。使用ポートはSSHと同じ22で全部やっている。つまりとりわけサーバーを立てずともできる。
- FTPS
FTPを用いている点でSFTPとは異なる。FTPの通信において、SSL/TLSとかの通信路を保証する奴らによって守られている。よくブラウザ使っている感覚でFTP使ってる感じになる。FTPの暗号化通信といったところ。制御は990でデータは989がポートとして用いられる。参考
- パッシブモード
いかにもクライアント向けな通信確立方式。21番で制御を行う。クライアントがポートを操れる。
ファイアウォール的な観点から一杯空けているわけにもいかない。ウイルス対策ソフトもあるし、、、だから自分は20空けとくからよろ〜〜的な感じで物事が進む。何かサーバーに送るならこっち
- アクティブモード
逆にいかにもサーバー向けな通信確立方式。21番で制御を行う。サーバーがポートを操れる。
こいつもファイアウォール的な観点から一杯空けているわけにもいかない。無駄に空けとくと攻撃されちゃうし、、、でも20だけなら安心だね。サーバから送るならこっち参考
- ASCIIモード
中身の変換とかしなくてもいいような画像ファイルを送る時に使う。
- バイナリモード
中身の変換とか必要なファイルとかに使う。必要なやつとかは、改行コードとか絡んでくるCGIを含むテキストとかが該当する。だいたいソフトが勝手にやってくれるし、一覧とか見るといいね。
3.設定ファイルをいじる
1 2 3 4 5 6 7 8 9 |
anonymous_enable=NO //匿名ログインを遮断 write_enable=YES //そもそもファイルアップ可能にする ls_recurse_enable=YES //フォルダ一括アップとかできる ascii_upload_enable=YES //あすきーアップ ascii_download_enable=YES //あすきーダウン chroot_local_user=YES //ユーザーを制限 chroot_list_enable=YES //ユーザー制限を有効 chroot_list_file=/etc/vsftpd.chroot_list //そのユーザーを編集 local_time=YES //タイムスタンプ使いたいっしょ? |
1 |
$ sudo vi /etc/vsftpd.chroot_list |
1 |
$ /etc/init.d/vsftpd restart |
ぐらいが通常の設定でしょうか。そんで、サーバーを再起動します。僕のはこれではファイルのアップロードができませんでした。ダウンロードはできました。
1 |
500 Permission denied |
はい。切られました。権限がないってのが意味わかりません。とりあえず状況的には、転送ファイルを送り飛ばしただけでは権限が自動で付与されないらしく、権限のない者を弾かれたくさいです。ってことでconfigファイルにさらに追記しました。
1 2 3 |
local_umask=002 //マスクしたい権限 chmod_enable=YES //権限変更可能 file_open_mode=755 //755に変更 |
local_umaskはデフォルト設定ではコメントアウトされています。これによりファイルの権限が付与されますが、022なのでこのままではグループに権限が付与されないようです。なお、7を付与することはないので最大値666から消したい権限をここに記入します。つまり002は管理者・グループには全権限を与えて他人は読み書きしか出来ないってことです。
これでできると思いきや、もっと書かないといけないらしいです。先人たちは様々な策を尽くしたようです。引用すると、デフォルトでは新規に作成されたものに関しては666になってしまっているらしい。参考
ここで優秀な友人が別の方法で解決してくれました。それが後2行の部分。これはどこかのenglishでした。どちらにせよfile_open_modeで権限変更しないといけないらしいです。
ようやくこれで完成しました。もれなくftp 192.168.0.xxでつながりました。FFFTPでももちろんです。
4.繋がったから、遊ぶ。
わーい。つながりました。”ftp>”と出ると中々感動します。多分、今後使うことないだろうなっと思うと少しCMDでいじりたくなりました。とりあえず、いつもコンソールに出てくるコマンどを打ち込んでみて、、、openでつないでputで送りつけてgetで取得してbyeで永遠の別れ、、、とかやってみました。一応コマンどそんなにないのでのっけときます。コマンど
5.gukou&hosocu
途中愚行に走りました。sftp xxx.xxx.xxx.xxxでは繋がってるよって。よくよく考えたら、SSHを使用しているなら使えるは、何ならサーバ立てなくてもいけちゃうし、、、、
外部からつなぐ場合は当然ながら途中で遮断されていますんで、トンネルを掘る必要があります。トンネルはSSHでつなぎます。その後、ポートフォーワードで繋ぎかえというか、、、つなぎます!localhost:YYY的なね。そこはSSHでつなぐ時にいっぱい引数つけましょう。今度やります。実際問題、本格的に使わないならscpコマンドでさらっと安全に早く使えればいい気がします。損した気分になりますよね。
あと、failzilaの方が使い勝手がいい気がしてきます。。。。MacもWinもあるし、
ディスカッション
コメント一覧
まだ、コメントがありません