vsftpd パッケージは、セキュアで軽量な FTP デーモンを提供します。 ネットワークを通じてファイル提供を行う際に活用することができます。
LFS や依存パッケージが本ブックに示す最新安定バージョンでなかった場合には、BLFS 開発版においては、パッケージのビルドや処理実行が適切に行われないことがあります。
ダウンロード (HTTP): https://security.appspot.com/downloads/vsftpd-3.0.5.tar.gz
ダウンロード MD5 sum: efbf362a65bec771bc15ad311f5a982e
ダウンロードサイズ: 210 KB
必要ディスク容量: 1.9 MB
概算ビルド時間: 0.1 SBU 以下
セキュリティ上の理由から 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 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
Install the vsftpd.service
unit included in the
blfs-systemd-units-20231205 package:
make install-vsftpd