源码安装vsftpd

1、下载vsftpd,可以从官网(http://vsftpd.beasts.org)下载,也可以百度搜索

[root@localhost vsftpd]# wget http://down1.chinaunix.net/distfiles/vsftpd-3.0.2.tar.gz

2、解压压缩包并进入解压出来的目录

[root@localhost vsftpd]# tar -zxvf vsftpd-3.0.2.tar.gz
[root@localhost vsftpd]# cd vsftpd-3.0.2/

3、查看INSTALL文件

INSTALL文件中记录了创建、安装、运行vsftp的详细方法,主要包括以下7个步骤:


步骤一、编译vsftpd:


1a、进入vsftpd解压目录

         编辑“builddefs.h”,内容如下:

#ifndef VSF_BUILDDEFS_H
#define VSF_BUILDDEFS_H
#undef VSF_BUILD_TCPWRAPPERS
#define VSF_BUILD_PAM
#undef VSF_BUILD_SSL
#endif /* VSF_BUILDDEFS_H */

        将以上undef的都改为define,支持tcp_wrappers,支持PAM认证方式,支持SSL 

1b、输入“make”生成二进制安装程序:

        执行make时出现以下错误

tcpwrap.c:16:20: 致命错误:tcpd.h:没有那个文件或目录
   #include <tcpd.h>                    ^
编译中断。
make: *** [tcpwrap.o] 错误 1

        解决方法:

yum install tcp_wrappers
yum install tcp_wrappers-devel

        再次执行make时又出现以下错误:

ssl.c:28:25: 致命错误:openssl/err.h:没有那个文件或目录
 #include <openssl/err.h>

        解决方法:

yum install openssl*

        再次执行make时又出现以下错误:

/usr/bin/ld: cannot find -lcap
collect2: 错误:ld 返回 1
make: *** [vsftpd] 错误 1

        解决方法:

yum install libcap-devel

        最后执行make成功,结果如下:

[root@localhost vsftpd-3.0.2]# make
gcc -o vsftpd main.o utility.o prelogin.o ftpcmdio.o postlogin.o privsock.o tunables.o ftpdataio.o secbuf.o ls.o postprivparent.o logging.o str.o netstr.o sysstr.o strlist.o banner.o filestr.o parseconf.o secutil.o ascii.o oneprocess.o twoprocess.o privops.o standalone.o hash.o tcpwrap.o ipaddrparse.o access.o features.o readwrite.o opts.o ssl.o sslslave.o ptracesandbox.o ftppolicy.o sysutil.o sysdeputil.o seccompsandbox.o -Wl,-s -fPIE -pie -Wl,-z,relro -Wl,-z,now `./vsf_findlibs.sh`

1c、测试编译结果:

[root@localhost vsftpd-3.0.2]# ls -l vsftpd
-rwxr-xr-x. 1 root root 151832 3月   4 14:49 vsftpd


步骤二:满足vsftpd先决条件


2a、vsftp缺省配置需要“nobody”用户,如果系统中没有就先创建

[root@localhost vsftpd-3.0.2]# useradd nobody
useradd:用户“nobody”已存在

2b、vsftpd缺省配置需要目录“/usr/share/empty”,没有该目录的话就创建一个

[root@localhost vsftpd-3.0.2]# ls /usr/share |grep empty
empty

        这里显示目录已经存在

3c、匿名文件传输协议(anonymous FTP)需要创建用户“ftp”,创建一个主目录(属主不能是用户ftp,且用户ftp不可写)

[root@localhost vsftpd-3.0.2]# mkdir /var/ftp
[root@localhost vsftpd-3.0.2]# useradd -d /var/ftp ftp
useradd:用户“ftp”已存在

        用户ftp已存在,转至下面的命令(更改ftp目录的属主、数组及权限):

[root@localhost vsftpd-3.0.2]# chown root.root /var/ftp
[root@localhost vsftpd-3.0.2]# chmod og-w /var/ftp

        修改后ftp目录权限如下:

[root@localhost vsftpd-3.0.2]# ls -l /var/ |grep ftp
drwxr-xr-x.  2 root root    6 3月   4 16:31 ftp


步骤三:安装vsftpd配置文件


3a、运行“make install”

[root@REHL vsftpd-3.0.2]# make 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

        将配置样例拷贝到etc目录下

[root@REHL vsftpd-3.0.2]# cp vsftpd.conf /etc/


步骤四:冒烟测试

4a、编辑/etc/vsftpd.conf,在底部增加“listen=YES”(作用是让vsftpd不从inetd启动)

4b、以root权限登录,确保没有运行其他FTP服务(否则vsftpd不能使用ftp端口21)

        运行vsftpd二进制程序

[root@localhost root]#/usr/local/sbin/vsftpd &
[1] 2104

4c、关闭防火墙

[root@REHL soft]# service iptables stop
iptables:清除防火墙规则:                                 [确定]
iptables:将链设置为政策 ACCEPT:filter                    [确定]
iptables:正在卸载模块:                                   [确定]

4d、随便复制几个文件到“/var/ftp”目录下

4e、连接FTP

[root@REHL ftp]# ftp localhost
Trying ::1...
ftp: connect to address ::1拒绝连接
Trying 127.0.0.1...
Connected to localhost (127.0.0.1).
220 (vsFTPd 3.0.2)
Name (localhost:zcl): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

        Password处直接敲回车登录

4f、查看ftp文件

ftp> ls -l
227 Entering Passive Mode (127,0,0,1,183,34).
150 Here comes the directory listing.
-r--r--r--    1 0        0           58300 Mar 07 01:24 ftp-0.17-51.1.el6.x86_64.rpm
-rw-r--r--    1 0        0          192808 Mar 07 01:24 vsftpd-3.0.2.tar.gz
226 Directory send OK.
ftp>

4g、在windows系统上登录ftp

技术分享

技术分享

用户名输入ftp,密码为空,点击登录


步骤五:启动和关闭vsftpd

        启动vsftpd服务

[root@REHL ~]# /usr/local/sbin/vsftpd &
[1] 5205

        关闭vsftpd服务

[root@REHL ~]# ps -ef | grep vsftpd
root      5205  3234  0 13:43 pts/0    00:00:00 /usr/local/sbin/vsftpd
root      5231  3234  0 13:44 pts/0    00:00:00 grep vsftpd
[root@REHL ~]# kill -9 5205
[root@REHL ~]# ps -ef | grep vsftpd
root      5242  3234  0 13:45 pts/0    00:00:00 grep vsftpd
[1]+  已杀死               /usr/local/sbin/vsftpd

步骤六:为本地登录设置PAM


如果计算机启用了PAM,需要有一个/etc/pam.d/ftp文件,否则非匿名登录将会失败,对于标准安装,可以从vsftpd安装包解压目录中拷贝,命令如下:

[root@REHL pam.d]# cp /tmp/soft/vsftpd-3.0.2/RedHat/vsftpd.pam /etc/pam.d/ftp


步骤七:添加用户

1、useradd -d /var/ftp -g ftp -s /sbin/nologin ftpuser

2、passwd ftpuser

步骤八:修改配置文件

//被动模式

pasv_enable=YES
pasv_min_port=10030
pasv_max_port=10032


以上仅为vsftpd初级配置,本人为初学者,不到之处望各位大神多多指教(未完待续)!

### 安装和配置 VSFTPD 的指南 #### 准备工作 为了从源码安装并配置VSFTPD,需要先确保开发环境已经准备好。这通常意味着安装必要的编译工具和其他依赖项。 对于基于Debian的系统,可以通过以下命令来准备: ```bash sudo apt-get update && sudo apt-get install build-essential libpam0g-dev libssl-dev ``` 对于基于Red Hat的系统,则应使用yum包管理器: ```bash sudo yum groupinstall "Development Tools" sudo yum install pam-devel openssl-devel ``` #### 下载源代码 获取最新版本的VSFTPD源代码可以从官方网站下载或通过Git克隆官方仓库。这里以wget为例说明如何下载tarball压缩包形式发布的稳定版软件包: ```bash cd /usr/local/src/ wget https://security.appspot.com/downloads/vsftpd-3.0.5.tar.gz tar zxvf vsftpd-3.0.5.tar.gz cd vsftpd-3.0.5 ``` #### 编译与安装 完成上述操作之后就可以开始编译过程了。进入解压后的目录运行make指令即可开始构建程序。完成后还需要复制二进制文件到适当位置以及设置权限等。 ```bash make sudo make install ``` #### 配置服务 创建相应的初始化脚本以便能够方便地管理和控制该守护进程的状态。不同Linux发行版可能有不同的方法来做这件事,在此仅提供一种通用的方式作为参考。 编写一个简单的Systemd单元文件`/etc/systemd/system/vsftpd.service`: ```ini [Unit] Description=Very Secure FTP Daemon After=syslog.target network-online.target Wants=network-online.target [Service] Type=forking ExecStart=/usr/sbin/vsftpd /etc/vsftpd.conf PIDFile=/var/run/vsftpd.pid Restart=always [Install] WantedBy=multi-user.target ``` 使新的service生效,并启用它随系统启动自动加载: ```bash sudo systemctl daemon-reload sudo systemctl enable --now vsftpd ``` #### 修改配置文件 编辑主要配置文件 `/etc/vsftpd.conf` 来满足特定需求。例如开启SSL加密支持[^2]: ```bash sudo nano /etc/vsftpd.conf allow_anon_ssl=NO force_local_data_ssl=YES force_local_logins_ssl=YES ``` 当完成了所有更改后保存退出nano编辑器。此时建议重启服务让新参数立即起效而不是等待下一次开机时才应用这些修改。 #### 测试连接安全性 考虑到FTP协议本身存在安全隐患,因此除非必要否则不推荐长期开放这项功能给外部网络访问。可以在不需要的时候停止服务从而减少潜在风险[^3]。 ```bash sudo systemctl stop vsftpd ``` 若要恢复正常使用只需将上面命令中的stop替换为start即可。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值