■ FC2~FC6 ※ Fedora7以降 FTP 使用停止
FTPとは、ネットワーク経由でファイルを転送するためのプロトコルです。インターネットにあるサーバから、ファイルをダウンロードしたりすることがあると思いますが、その場合はFTPデーモンがサーバー上で起動しています。 FTPを使用する場合はLinuxに登録したユーザーでアクセスするのが基本ですが、ユーザーに関係なく、アクセスする仕組みとしてAnonymous(匿名)FTPサービスというのも存在します。
■FTPサーバのインストール
FTPサーバを構築するには、vsftpd パッケージをインストールします。
PuTTYでSSH方式のリモート接続による操作で今後進めます
Using username "higo". Authenticating with public key "imported-openssh-key" Passphrase for key "imported-openssh-key": ← 一般ユーザーのパスワードを入力 Last login: Thu Sep 21 22:57:31 2006 [higo@linux ~]$ su - ← スーパーユーザになる パスワード(P): ← スーパーユーザのパスワードを入力 [root@linux ~]# yum install vsftpd Loading "installonlyn" plugin Setting up Install Process Setting up repositories core 100% |=========================| 1.1 kB 00:00 extras 100% |=========================| 1.1 kB 00:00 updates 100% |=========================| 1.2 kB 00:00 Reading repository metadata in from local files Parsing package install arguments Resolving Dependencies --> Populating transaction set with selected packages. Please wait. ---> Downloading header for vsftpd to pack into transaction set. vsftpd-2.0.5-8.i386.rpm 100% |=========================| 16 kB 00:00 ---> Package vsftpd.i386 0:2.0.5-8 set to be updated --> Running transaction check Dependencies Resolved ============================================================ Package Arch Version Repository Size ============================================================ Installing: vsftpd i386 2.0.5-8 core 137 k Transaction Summary ============================================================ Install 1 Package(s) Update 0 Package(s) Remove 0 Package(s) Total download size: 137 k Is this ok [y/N]: y Downloading Packages: (1/1): vsftpd-2.0.5-8.i38 100% |=========================| 137 kB 00:00 warning: rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY, key ID 4f2a6fd2 Importing GPG key 0x4F2A6FD2 "Fedora Project" Is this ok [y/N]: y Importing GPG key 0xDB42A60E "Red Hat, Inc " Is this ok [y/N]: y Running Transaction Test Finished Transaction Test Transaction Test Succeeded Running Transaction Installing: vsftpd ######################### [1/1] Installed: vsftpd.i386 0:2.0.5-8 Complete! FTPサーバを起動させます [root@linux ~]# /etc/rc.d/init.d/vsftpd start vsftpd 用の vsftpd を起動中: [ OK ]
■FTPサーバの設定ファイル変更
vsftpd.conf ファイルを編集 [root@linux ~]# vi /etc/vsftpd/vsftpd.conf # Example config file /etc/vsftpd/vsftpd.conf # # The default compiled in settings are fairly paranoid. This sample file # loosens things up a bit, to make the ftp daemon more usable. # Please see vsftpd.conf.5 for all compiled in defaults. # # READ THIS: This example file is NOT an exhaustive list of vsftpd options. # Please read the vsftpd.conf.5 manual page to get a full idea of vsftpd's # capabilities. 匿名ユーザ(anonymous)はログイン禁止(YES→NO) anonymous_enable=NO ユーザが打ち込んだ詳細なログを残す xferlog_std_format=NO (YES→NO) log_ftp_protocol=YES (次の行へ追加) アイドル時のタイムアウトを設定(#を削除) idle_session_timeout=600 接続時のタイムアウトを設定(#を削除、120→60) data_connection_timeout=60 アスキーモードでのアップロードを許可する(#を削除) ascii_upload_enable=YES アスキーモードでのダウンロードを許可する(#を削除) ascii_download_enable=YES 一般ユーザはホームディレクトリーより上へアクセスさせない(#を削除) chroot_list_enable=YES ホームディレクトリーより上へアクセスさせないユーザリスト(#を削除) chroot_list_file=/etc/vsftpd/chroot_list ディレクトリを削除できるようにする(#を削除) ls_recurse_enable=YES パッシブモードを有効にする(最下行へ追加) pasv_promiscuous=YES タイムスタンプ時間を日本時間に変更(最下行へ追加) use_localtime=YES
■FTP接続ユーザ設定
ホームディレクトリーより上へアクセスさせないユーザリスト [root@linux ~]# vi /etc/vsftpd/chroot_list ユーザ「fedora」は、自ホームディレクトリーより上にアクセスさせない fedora FTP接続させないユーザリスト [root@linux ~]# vi /etc/vsftpd/user_list # vsftpd userlist # If userlist_deny=NO, only allow users in this file # If userlist_deny=YES (default), never allow users in this file, and # do not even prompt for a password. # Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers # for users that are denied. root bin daemon adm lp sync shutdown halt mail news uucp operator games nobody fedora ←ユーザ「fedora」をFTP接続させないようにリストに追加
■FTPログインできるクライアントを設定
[root@linux ~]# vi /etc/hosts.allow # # hosts.allow This file describes the names of the hosts which are # allowed to use the local INET services, as decided # by the '/usr/sbin/tcpd' server. # プライベートアドレス「192.168.1.」とサーバ自身「127.0.0.1」は許可するので以下を追加します vsftpd : 192.168.1. 127.0.0.1 /etc/hosts.allow で指定したアドレス以外は全て拒否 [root@linux ~]# vi /etc/hosts.deny # # hosts.deny This file describes the names of the hosts which are # *not* allowed to use the local INET services, as decided # by the '/usr/sbin/tcpd' server. # # The portmap line is redundant, but it is left to remind you that # the new secure portmap uses hosts.deny and hosts.allow. In particular # you should know that NFS uses portmap! 指定したアドレス以外は全て拒否するので以下を追加します vsftpd : ALL
■FTPサーバの起動
[root@linux ~]# /etc/rc.d/init.d/vsftpd start vsftpd用のvsftpdを起動中: [ OK ]
■FTPサーバの自動起動設定
[root@linux ~]# chkconfig vsftpd on [root@linux ~]# chkconfig --list vsftpd vsftpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off ランレベル2~5がオンの状態であることを確認
■FTPサーバの動作確認
クライアント(IP:192.168.1.3)のコマンドプロンプトより行います。
Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. ユーザ「fedora」が拒否されるか?の確認 C:\WIMDOWS\system32>ftp ftp> op To 192.168.1.2 Connected to 192.168.1.2. 220 (vsFTPd 2.0.1) User (192.168.1.2:(none)): fedora ログインが拒否された 530 Permission denied. Login failed. FTP接続を終了します ftp> bye 221 Goodbye. ユーザ「higo」がログインできるか?の確認 C:\WIMDOWS\system32>ftp ftp> op To 192.168.1.2 Connected to 192.168.1.2. 220 (vsFTPd 2.0.1) User (192.168.1.2:(none)): higo ログインできた 331 Please specify the password. Password: 230 Login successful. ftp> サーバへファイルをアップロードする ftp> put c:\test.txt 200 PORT command successful. Consider using PASV. 150 Ok to send data. 226 File receive OK. アップロードできた ftp: 19 bytes sent in 0.00Seconds 19000.00Kbytes/sec. サーバよりファイルをダウンロードする ftp> get test.txt 200 PORT command successful. Consider using PASV. 150 Opening BINARY mode data connection for test.txt (19 bytes). 226 File send OK. ダウンロードできた ftp: 19 bytes received in 0.00Seconds 19000.00Kbytes/sec. FTP接続を終了します ftp> bye 221 Goodbye.
■接続エラー対策
【現象】
ftpコマンドを使用してサーバーに接続を行うと、以下のようなメッセージが出力され
ます。
[root@linux ~]# ftp ftp.turbolinux.gr.jp Connected to ftp.turbolinux.gr.jp. 220 ftp.turbolinux.gr.jp FTP server ready. 530 Please login with USER and PASS. 530 Please login with USER and PASS. KERBEROS_V4 rejected as an authentication type Name (ftp.turbolinux.gr.jp:root):
【原因】
“Kerberos認証”をサポートするkrb5-workstationパッケージをインストールすると、各ユーザの$PATHが変更されます。これにより、ftpコマンド実行時に呼び出されるプログラムが、/usr/bin/ftpから/usr/kerberos/bin/ftpに変更になります。/usr/kerberos/bin/ftpはKerberos認証をサポートするコマンドなので、サーバーがKerberos認証をサポートしていない場合には、このようなメッセージが表示されます。
【対策】
Kerberos認証を使用しない場合には、krb5-workstationパッケージをアンインストールしてください。または、環境変数PATHを変更するかaliasコマンドでftpを定義するなどして、/usr/bin/ftpが実行されるようにしてください。
【実行例】
[root@linux ~]# export PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin:/usr/X11R6/bin:/usr/lib/qt/bin または [root@linux ~]# alias ftp=/usr/bin/ftp
■krb5-workstationパッケージのアンインストール
[root@linux ~]# yum remove krb5-workstation Loading "fastestmirror" plugin Loading "installonlyn" plugin Setting up Remove Process Resolving Dependencies --> Populating transaction set with selected packages. Please wait. ---> Package krb5-workstation.i386 0:1.5-7 set to be erased --> Running transaction check Dependencies Resolved ============================================================ Package Arch Version Repository Size ============================================================ Removing: krb5-workstation i386 1.5-7 installed 1.7 M Transaction Summary ============================================================ Install 0 Package(s) Update 0 Package(s) Remove 1 Package(s) Is this ok [y/N]: y Downloading Packages: Running Transaction Test Finished Transaction Test Transaction Test Succeeded Running Transaction Removing : krb5-workstation ######################### [1/1] Removed: krb5-workstation.i386 0:1.5-7 Complete!
■外部からの接続
外部からの接続には、ルーターの設定が必要です。
ルーターの設定で20番と21番のポートを開けてください。
ドメイン名での接続は事前にドメイン名の取得を行っている必要があります。
■FTPサーバの停止
[root@linux ~]# /etc/rc.d/init.d/vsftpd stop vsftpd を停止中: [ OK ] 起動時にFTPサーバを起動しない [root@linux ~]# chkconfig vsftpd off [root@linux ~]# chkconfig --list vsftpd vsftpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off [root@linux ~]#
※vsftpd を停止したらルーターの設定で20番と21番のポートを閉じてください。
■その他のサービス状態の表示
[root@linux ~]# service --status-all jserverは停止しています httは停止しています ・ ・ ・ ypbindは停止しています [root@linux ~]#