vsftpd-3.0.5

vsftpd の概要

vsftpd パッケージは、セキュアで軽量な FTP デーモンを提供します。 ネットワークを通じてファイル提供を行う際に活用することができます。

[注記]

注記

LFS や依存パッケージが本ブックに示す最新安定バージョンでなかった場合には、BLFS 開発版においては、パッケージのビルドや処理実行が適切に行われないことがあります。

パッケージ情報

vsftpd の依存パッケージ

Required

libnsl-2.0.1

推奨

任意

libcap-2.69 with PAM

vsftpd のインストール

セキュリティ上の理由から vsftpd の起動は、非特権ユーザーおよびグループにより行うことが強く推奨されます。 また匿名アクセスを行うユーザーを別途作る必要もあります。 root ユーザーになって以下のコマンドを実行し、必要となるディレクトリ、ユーザー、グループを生成します。

install -v -d -m 0755 /usr/share/vsftpd/empty &&
install -v -d -m 0755 /home/ftp               &&
groupadd -g 47 vsftpd                         &&
groupadd -g 45 ftp                            &&

useradd -c "vsftpd User"  -d /dev/null -g vsftpd -s /bin/false -u 47 vsftpd &&
useradd -c anonymous_user -d /home/ftp -g ftp    -s /bin/false -u 45 ftp

Gcc-10 and later flags an error for an implicit type cast. Make it explicit:

sed -e "s/kVSFSysStrOpenUnknown;/(enum EVSFSysUtilOpenMode)&/" -i sysstr.c

非特権ユーザーとなって以下のコマンドを実行し、vsftpd をビルドします。

make

このパッケージにテストスイートはありません。

もう一度 root ユーザーになり、以下のコマンドを実行して vsftpd をインストールします。

install -v -m 755 vsftpd        /usr/sbin/vsftpd    &&
install -v -m 644 vsftpd.8      /usr/share/man/man8 &&
install -v -m 644 vsftpd.conf.5 /usr/share/man/man5 &&
install -v -m 644 vsftpd.conf   /etc

コマンド説明

install -v -d ...: これは匿名ユーザーが利用するディレクトリ (/home/ftp) と、デーモンが chroot する先のディレクトリ (/usr/share/vsftpd/empty) のそれぞれを生成します。

[注記]

注記

/home/ftp should not be owned by the user vsftpd, or the user ftp.

echo "#define VSF_BUILD_TCPWRAPPERS" >>builddefs.h: Use this prior to make to add support for tcpwrappers.

echo "#define VSF_BUILD_SSL" >>builddefs.h: Use this prior to make to add support for SSL.

install -v -m ...: The Makefile uses non-standard installation paths. These commands install the files in /usr and /etc.

vsftpd の設定

設定ファイル

/etc/vsftpd.conf

設定情報

vsftpd comes with a basic anonymous-only configuration file that was copied to /etc above. While still as root, this file should be modified because it is now recommended to run vsftpd in standalone mode. Also, you should specify the privilege separation user created above. Finally, you should specify the chroot directory. man vsftpd.conf will give you all the details.

cat >> /etc/vsftpd.conf << "EOF"
background=YES
nopriv_user=vsftpd
secure_chroot_dir=/usr/share/vsftpd/empty
EOF

To enable local logins, append the following to the /etc/vsftpd.conf file (as the root user):

cat >> /etc/vsftpd.conf << "EOF"
local_enable=YES
EOF

In addition, if using Linux-PAM and vsftpd with local user logins, you will need a Linux-PAM configuration file. As the root user, create the /etc/pam.d/vsftpd file, and add the needed configuration changes for Linux-PAM session support using the following commands:

cat > /etc/pam.d/vsftpd << "EOF" &&
# Begin /etc/pam.d/vsftpd
auth       required     /lib/security/pam_listfile.so item=user sense=deny \
                                                      file=/etc/ftpusers \
                                                      onerr=succeed
auth       required     pam_shells.so
auth       include      system-auth
account    include      system-account
session    include      system-session
EOF

cat >> /etc/vsftpd.conf << "EOF"
session_support=YES
pam_service_name=vsftpd
EOF

Systemd ユニット

Install the vsftpd.service unit included in the blfs-systemd-units-20231205 package:

make install-vsftpd

パッケージ構成

インストールプログラム: vsftpd
インストールライブラリ: なし
インストールディレクトリ: /usr/share/vsftpd, /home/ftp

概略説明

vsftpd

FTP デーモン。