1、首先停止正在启动的vsftpd服务,并卸载软件
service vsftpd stop
#查看已安装的版本
rpm -qa |grep vsftpd
#删除已安装的版本
rpm –e vsftpd-2.2.2-24.el6.x86_64
可以看到已经查询不到安装的vsftpd软件了,并将vsftpd.conf进行了备份。
2、先将下载的vsftpd-3.0.2.tar.gz包上传至服务器然后解压缩至目标目录
/etc/
tar -zxvf vsftpd-3.0.2.tar.gz
然后进入目录vsftpd-3.0.2:cd vsftpd-3.0.2
3、进行编译安装前的准备工作
1)添加nobody用户
useradd nobody
一般情况下是已经存在了,可以通过vim /etc/pass文件确认
2)创建/usr/share/empty目录
mkdir /usr/share/empty
如果存在了就不需要创建
3)创建匿名用户登录的目录
mkdir /home/sftpuser
如果已存在就不需要创建
4)创建ftp用户并指定家目录为/var/ftp
useradd –d 家目录 用户名:
useradd -d /home/sftpuser sftpuser
如果已存在就不需要创建:
cat /etc/pass|grep ftp
5) 修改builddefs.h 文件,添加需要的功能
在vsftpd-3.0.2目录下vim builddefs.h
如果需要某个功能就将undef修改为define
比如其中的undef VSF_BUILD_TCPWRAPPERS,如果在vsftpd.conf中增加tcp_wrappers=YES的配置就需要将这项改为define VSF_BUILD_TCPWRAPPERS
可以看到已经开启的有ftp登录验证方式pam,建议将SSL验证方式也加上
4、开始编译安装
1)编译:
64位系统,因此需要更改vsf_findlibs.sh文件库中lib 路径:
sed -i 's/lib\//lib64\//g' vsf_findlibs.sh
make
编译完成
2)安装:
make install
完成后将vsftpd.conf文件复制到/etc目录下,否则在启动vsftpd服务时需要指定启动服务使用的配置文件:
2.1)cp vsftpd.conf /etc
2.2)cp RedHat/vsftpd.pam /etc/pam.d/vsftpd //PAM验证文件
2.3)修改/etcvsftpd.conf配置文件,将
local_enable=YES
write_enable=YES
xferlog_enable=YES
xferlog_std_format=YES
解除注释
如果不使用默认端口20需要将connect_from_port_20=YES注释掉,并添加下面的配置:
listen_port=14888//使用的连接端口
pasv_min_port=14100//主动模式的端口范围
pasv_max_port=14200
在配置文件中添加:
pam_service_name=vsftpd
userlist_enable=YES
#tcp_wrappers=YES
其中pam_service_name是指定pam验证的文件是/etc/pam.d/vsftpd
userlist_enable=YES是限制其中的用户不能ftp登录,这是为了防止权限过高的用户登录进行非法操作。
2.4)下面的文件根据情况进行复制,可以先不复制
cp vsftpd /usr/local/sbin/vsftpd
cp vsftpd.conf.5 /usr/local/man/man5
cp vsftpd.8 /usr/local/man/man8
3)启动vsftpd服务
/usr/local/sbin/vsftpd &
需要加&进行后台启动
3.1)连接ftp
ftp 127.0.0.1 14888
报错如下:
说明文件不存在,可以自己手动创建,然后将需要禁止的用户加入其中
touch /etc/vsftpd.user_list
如果也报vsftpd.ftpusers文件不存在,同样的也创建vsftpd.ftpusers文件。
继续登录系统报如下错误:
530一般有这几种情况
1、vsftpd.conf中是否添加了如下配置:
local_enable=YES
pam_service_name=vsftpd
userlist_enable=YES
2、修改/etc/vsftpd/ftpusers
编辑vim /etc/pam.d/vsftpd
其中ftpusers是ftp拒绝的系统用户,如果需要登录的用户在其中,将其去掉。
另外,不要把/etc/pam.d/vsftpd里面的deny改成allow,不然你自己建立的用户就会报530 Login incorrect。
3、注释掉
#auth required pam_shells.so
4、还有一种情况是我遇到到,比较特殊,是/etc/pam.d/vsftpd中配置的文件目录是/lib下,而实际上需要修改为lib64下的文件,如果找不到报530的原因可以尝试这种方法。
4)500 OOPS: vsftpd: refusing to run with writable anonymous root解决方法
当使用匿名用户登录时有可能报这种错,因为vsftpd出于安全考虑对 /home/ftp是不允许没有限制的,所以需要手动修改权限:
chown root:root /home/ftp
chmod 755 /home/ftp
chown root:root /var/ftp
chmod 755 /var/ftp
4)这样自己创建的用户就可以通过ftp登录了,别忘记修改防火墙配置。
useradd –d /home/ftpuser fuser
5)关闭服务
使用ps –rf|grep vsftpd查看vsftpd服务进程
然后通过kill -9 PID删除进程
设置开机自启动 :用vim打开etc/rc.local在里面加入/usr/local/sbin/vsftpd & 即可。
查看vsftpd版本:vsftpd –version
500 OOPS: priv_sock_get_cmd /etc/vsftpd.conf 添加 seccomp_sandbox=NO