目录
- vsftpd 编译安装流程
- 1、下载源码包并上传致服务器解压
- 2、进入源码目录后编译源码文件
- 3、将对应文件安装到指定位置
- 4、准备 vsftpd 的运行环境
- 5、启动 vsftpd 服务进行测试
- 6、编译安装说明
vsftpd 编译安装流程
1、下载源码包并上传致服务器解压
-
源码包下载地址:https://security.appspot.com/vsftpd.html#download
-
官方指令手册:https://security.appspot.com/vsftpd/vsftpd_conf.html
2、进入源码目录后编译源码文件
源码包里面提供了MakeFile
文件,直接执行make
即可编译源码,编译安装后,会在源码生成一个名为vsftpd
的可执行二进制文件
3、将对应文件安装到指定位置
需要将可执行文件vsftpd
、配置文件vsftpd.conf
、以及帮助文件vsftpd.conf.x
放在服务器的对应路径下,然后设置PATH变量即可。
安装vsftpd就是将编译好的可执行文件、帮助文件以及配置文件拷贝到服务器对应目录即可,有两种方式实现vsftpd的安装。
-
方式一:直接执行
make install
,这样会默认按照MakeFile文件中指定的路径,将相关文件进行拷贝到对应路径。 -
方式二:手动 cp 文件,将
vsftpd 、vsftpd.conf.5、 vsftpd.8
三个文件拷贝到对应位置。
例如:手动安装vsftpd
sudo cp vsftpd /usr/local/sbin/
sudo cp vsftpd.conf.5 /usr/local/man/man5/
sudo cp vsftpd.8 /usr/local/man/man8/
4、准备 vsftpd 的运行环境
(1)创建匿名用户: vsftpd
的匿名模式下需要存在nobody
和ftp
两个用户,所以这两个用户不存在的话需要手动创建。
# 创建 FTP 用户
sudo mkdir -p /var/ftp && sudo chown root:root /var/ftp
# 匿名模式下,vsftpd是在禁锢模式(chroot)下运行,即匿名用户`ftp`和`annymouse`不能对`/var/ftp`目录具有写权限。
sudo chmod -w /var/ftp
sudo useradd -d /var/ftp -s /sbin/nologin ftp
# 创建nobody用户
sudo useradd -r -s /usr/sbin/nologin nobody
(2)创建特定目录:/usr/share/empty/
目录用于 chroot 操作,确保匿名用户不能访问系统的其他部分。
sudo mkdir -p /usr/share/empty/
(3)创建 service 文件:如果是使用systemd
做为init
进程的操作系统,可以将vsftpd
交给systemd
以service
的形式托管。
例如:
# /lib/systemd/system/vsftpd.service
[Unit]
Description=vsftpd FTP server
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/sbin/vsftpd /etc/vsftpd.conf
ExecReload=/bin/kill -HUP $MAINPID
ExecStartPre=-/bin/mkdir -p /var/run/vsftpd/empty
[Install]
WantedBy=multi-user.target
(4)拷贝配置文件:即使是使用 make install
这种方式来安装vsftpd,配置文件也不会默认拷贝,需要手动将vsftpd.conf文件拷贝到/etc
目录下,因为vsftpd
进程启动时默认会读取/etc/vsftpd.conf
这个配置文件。
如果需要存放到其他路径下,则运行vsftpd进程的时候需要指定配置文件的路径。格式为:vsftpd /path/vsftpd.conf
5、启动 vsftpd 服务进行测试
将vsftpd交给systemd托管时候,需要让vsftpd以独立服务的形式运行(默认就是,一些老版本不是),所以需要在配置文件中加入listen=YES
配置项,从而以独立服务形式运行。
6、编译安装说明
1、如果使用 make install
进行安装,默认的安装位置是:
install:
if [ -x /usr/local/sbin ]; then \
$(INSTALL) -m 755 vsftpd /usr/local/sbin/vsftpd; \
else \
$(INSTALL) -m 755 vsftpd /usr/sbin/vsftpd; fi
if [ -x /usr/local/man ]; then \
$(INSTALL) -m 644 vsftpd.8 /usr/local/man/man8/vsftpd.8; \
$(INSTALL) -m 644 vsftpd.conf.5 /usr/local/man/man5/vsftpd.conf.5; \
elif [ -x /usr/share/man ]; then \
$(INSTALL) -m 644 vsftpd.8 /usr/share/man/man8/vsftpd.8; \
$(INSTALL) -m 644 vsftpd.conf.5 /usr/share/man/man5/vsftpd.conf.5; \
else \
$(INSTALL) -m 644 vsftpd.8 /usr/man/man8/vsftpd.8; \
$(INSTALL) -m 644 vsftpd.conf.5 /usr/man/man5/vsftpd.conf.5; fi
if [ -x /etc/xinetd.d ]; then \
$(INSTALL) -m 644 xinetd.d/vsftpd /etc/xinetd.d/vsftpd; fi
2、编译安装 vsftpd 的时候,没有提供类似于 PREFIX
这种选项来指定安装位置,如果要自定义安装位置,只需要在源代码编译完成后,将二进制文件vsftpd、man帮助文件vsftpd.con.x 和 配置文件vsftpd.conf 拷贝到自定义的位置,然后设置PATH变量就行了。