CentOS 5/vsftpd



前書き (執筆:2008/09/17)

ここではvsftpdをソースファイルからインストールする方法を記載します。

ソースファイルの入手

vsftpdのサイトより最新のソースファイルを取得します。
執筆時点の最新版は 2.0.7 になります。

# wget ftp://vsftpd.beasts.org/users/cevans/vsftpd-2.0.7.tar.gz

下記のように処理されます。

--14:08:42--  ftp://vsftpd.beasts.org/users/cevans/vsftpd-2.0.7.tar.gz
           => `vsftpd-2.0.7.tar.gz'
vsftpd.beasts.org をDNSに問いあわせています... 212.69.37.6
vsftpd.beasts.org|212.69.37.6|:21 に接続しています... 接続しました。
anonymous としてログインしています... ログインしました!
==> SYST ... 完了しました。    ==> PWD ... 完了しました。
==> TYPE I ... 完了しました。  ==> CWD /users/cevans ... 完了しました。
==> SIZE vsftpd-2.0.7.tar.gz ... 162801
==> PASV ... 完了しました。    ==> RETR vsftpd-2.0.7.tar.gz ... 完了しました。
長さ: 162801 (159K)

100%[=========================================>] 162,801      164K/s   in 1.0s

14:08:46 (164 KB/s) - `vsftpd-2.0.7.tar.gz' を保存しました [162801]

ソースファイルの展開

ダウンロードしたソースファイルを展開します。

# tar xzf vsftpd-2.0.7.tar.gz --directory=/usr/local/src/

展開が終了すると vsftpd-2.0.7 というディレクトリが作成されます。

コンパイル・インストール

vsftpdは他のソースファイルからのインストールするプログラムと違ってコンフィグレーション(configure)が必要ありません。
展開したディレクトリに移動します。

# cd /usr/local/src/vsftpd-2.0.7

そのままコンパイル(make)を実行します。

# make

makeが終了したら、make install でインストールもできます。

# make install


また必要なファイルだけを下記のように実行してインストールもできます。

# cp vsftpd /usr/local/sbin/vsftpd
# cp vsftpd.conf /etc
# cp vsftpd.conf.5 /usr/local/man/man5
# cp vsftpd.8 /usr/local/man/man8

動作環境の設定

ここからは環境設定になりますのでrootユーザのまま作業を続けます。
vsftpdはnobodyユーザーを必要とします。
通常は登録済みですが、未登録の場合は

# useradd nobody

で追加してください。

emptyディレクトリの確認をします。
通常は /usr/share/empty が存在するはずです。
なければ作成します。

# mkdir /usr/share/empty


anonymouse(匿名ユーザ)で利用する場合はftpユーザー、専用ディレクトリ(ここでは /var/ftp とします)が必要です。
anonymouseでは読み込み(ダウンロード)だけで、書き込み(アップロード・削除)を許可させませんので、その権限の設定も行います。

# mkdir /var/ftp
# useradd -d /var/ftp -s /sbin/nologin ftp
# chown root.root /var/log
# chmod og-w /var/ftp

必要に応じてユーザーID(ftp)とグループID(ftp)をあわせてください。

vsftpd.confの設定

設定ファイル /etc/vsftpd.conf を編集します。

# vi vsftpd.conf

ここではinet(xinetd)経由でvsftpdを起動させます。

linux起動時にデーモン(standaloneモード)として動作させる場合は
最下行に下記を追加してください。

 listen=YES

ここではinet経由の動作を説明しますので、必要な起動設定は各自合わせて行ってください。

設定条件として、私の環境では

  • inet経由の起動
  • anonymouse接続は行わない
  • ルーターの関係でPassiveモードを使用しない
  • .htaccessなどのドットファイルを表示する
  • 一般ユーザーはホームディレクトリ(/home/xxxx/)より上の階層には上がらせない(禁止する)
  • ftpを利用できるユーザーとできないユーザーをわける

以上の条件でvsftpd.confファイルの設定を書き換えていきます。 書き換えた項目は下記の通りです。

anonymous_enable=NO
local_enable=YES
local_umask=022
ascii_upload_enable=YES
ascii_download_enable=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list

下記は追記した項目です。

chroot_local_user=YES
userlist_enable=YES
userlist_deny=YES
userlist_file=/etc/vsftpd.user_list
pam_service_name=ftp
force_dot_files=YES
use_localtime=YES
text_userdb_names=YES

以上でvsftpd.confの設定は終了です。
ここで追加した設定

  • pam_service_name=ftp

    PAM認証するサービス名を指定

  • force_dot_files=YES

    ドットファイルの表示指定

  • use_localtime=YES

    デフォルトではGMTになっているので、ローカルタイムを指定

  • text_userdb_names=YES

    FTPクライアントで表示するユーザーの形式
    通常のままではユーザIDの番号が表示されます。
    この設定でユーザ名が表示されるようになります。

次にアクセスディレクトリ制限のユーザファイルを作成します。

# vi /etc/vsftpd.chroot_list

このファイルにユーザを記載します
記載されたユーザはすべてのディレクトリアクセスを許可されます。
記載されないユーザはホームディレクトリのみになります。

次にアクセスユーザー制限のファイルを作成します。

# vi /etc/vsftpd.user_list

このファイルに記載されたユーザはftp利用ができなくなります。
自分の環境に合わせて禁止ユーザーを記載してください。

以上でvsftpdの設定が終了です。

PAM認証設定

/etc/pam.d の配下にftp用の認証設定をします。

# vi /etc/pam.d/ftp
#%PAM-1.0
auth required pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed
auth required pam_stack.so service=system-auth
auth required pam_shells.so
account required pam_stack.so service=system-auth
session required pam_stack.so service=system-auth

xinetdの起動許可スクリプトの作成

xinetdで動作させるため設定ファイルに記述を変更させます。
設定ファイルは /etc/xinetd.d/ にある ftp というファイルです。

これをテキストエディタで開いて内容を変更します。

# vi /etc/xinetd.d/ftp

内容は下記のようになります。 重要なのは

server = /usr/local/sbin/vsftpd

disable = no

の修正です。

service ftp
{
        flags           = REUSE
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/local/sbin/vsftpd
        nice            = 10
        disable         = no
}

確認します。

# chkconfig --list vsftpd
xinetd based services:
       vsftpd:         on

xinetdを再起動します。

# /etc/init.d/xinetd restart

接続許可の設定 (hosts.allowの修正)

最後に、hosts.allowにFTPを接続許可するための記述を追加します。

# vi /etc/hosts.allow

下記を追記します。
接続許可をするIPアドレスまたはドメインを記述(接続先を限定しないなら ALL を設定)

vsftpd:127.0.0.1 192.168.0.2 xxxxx.co.jp

ここまでできたらvsftpdのinetd起動準備が整いました。
xinetdを再起動して動作を確認してみてください。

# /etc/rc.d/init.d/xinetd restart


Last-modified: 2015-04-23 (木) 15:35:11 (1304d)