日期:2014-05-16  浏览次数:20734 次

vsftpd本地用户
本帖最后由 steptodream 于 2011-03-02 10:12:24 编辑
本文属转帖http://litvip.com/2011/03/01/187

本篇将配置使用本地用户(系统用户)登录的ftp服务器。
因为ftp传输数据默认也是不加密的,因此我们将在配置中开启ssl。

第一步,如果你没有安装vsftpd,请执行如下命令安装。
[root@test ~]# yum -y install vsftpd

第二步,开始配置。vsftpd的默认配置文件目录是/etc/vsftpd,在配置开始前,
我们先把原来的主配置文件/etc/vsftpd/vsftpd.conf先备份。
[root@test ~]# cd /etc/vsftpd/
[root@test vsftpd]# cp vsftpd.conf vsftpd.conf.orig

一个基本的配置文件,根据你自己的需要你可能要做修改,在这里默认注释的行我就不写了。
[root@test vsftpd]# vim vsftpd.conf
#禁止匿名用户anonymous登录
anonymous_enable=NO

#允许本地用户登录
local_enable=YES

#让登录的用户有写权限(上传,删除)
write_enable=YES

#默认umask
local_umask=022

#把传输记录的日志保存到/var/log/vsftpd.log
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=NO

#允许ASCII模式上传
ascii_upload_enable=YES
#允许ASCII模式下载
ascii_download_enable=YES

# 使用20号端口传输数据
connect_from_port_20=YES

#欢迎标语
ftpd_banner=Welcome to use my test ftp server.

#接下来的三条配置很重要
#chroot_local_user设置了YES,那么所有的用户默认将被chroot,也就用户目录被限制在了自己的home下,无法向上改变目录
#chroot_list_enable设置了YES,即让chroot用户列表有效。
#★超重要:如果chroot_local_user设置了YES,那么chroot_list_file设置的文件里,是不被chroot的用户(可以向上改变目录)
#★超重要:如果chroot_local_user设置了NO,那么chroot_list_file设置的文件里,是被chroot的用户(无法向上改变目录)
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

#以standalone模式在ipv4上运行
listen=YES

#PAM认证服务名,这里默认是vsftpd,在安装vsftpd的时候已经创建了这个pam文件,
#在/etc/pam.d/vsftpd,根据这个pam文件里的设置,/etc/vsftpd/ftpusers
#文件里的用户将禁止登录ftp服务器,比如root这样敏感的用户,所以你要禁止别的用户
#登录的时候,也可以把该用户追加到/etc/vsftpd/ftpusers里。
pam_service_name=vsftpd

#userlist_enable=YES,用户访问控制列表有效,文件是/etc/vsftpd/user_list
#userlist_deny=YES,/etc/vsftpd/user_list里的用户不能登录
#userlist_deny=NO,只有/etc/vsftpd/user_list用户才可以登录
#★重要:无论这里如何设置,只是进一步限制用户,只是在上面/etc/vsftpd/ftpusers
#的效果上叠加。比如/etc/vsftpd/ftpusers里有root用户,即便是你设置了
#userlist_deny=NO并且/etc/vsftpd/user_list有root,那root也是不能登录的!
userlist_enable=YES
userlist_deny=YES

#允许使用/etc/hosts.allow和/etc/hosts.deny文件来限制对ftp的访问控制
tcp_wrappers=YES

#关于PASV模式的配置
pasv_enable=YES
#PASV模式连接时的最小端口
pasv_min_port=60000
#PASV模式连接时的最大端口
pasv_max_port=60500

#接下来是关于ssl的配置
#让ssl有效
ssl_enable=YES
#服务器证明书
rsa_cert_file=/etc/pki/tls/certs/vsftpd.pem
#不强制用户用ssl,也就是说不使用ssl连接也允许
#当然如果你要用户只能以ssl加密方式连接的话,那就改成YES
force_local_logins_ssl=NO
force_local_data_ssl=NO

第三步,制作vsftpd的服务器证明书。如果你没有安装openssl的话,需要先安装。
[root@test vsftpd]# cd /etc/pki/tls/certs/
[root@test certs]# make vsftpd.pem
umask 77 ; \
        PEM1=`/bin/mktemp /tmp/openssl.XXXXXX` ; \
        PEM2=`/bin/mktemp /tmp/openssl.XXXXXX` ; \
        /usr/bin/openssl req -utf8 -newkey rsa:1024 -keyout $PEM1 -nodes -x509 -days 365 -out $PEM2 -set_serial 0 ; \
        cat $PEM1 >  vsftpd.pem ; \
        echo ""    >> vsftpd.pem ; \
        cat $PEM2 >> vsftpd.pem ; \
        r