一、安装编译依赖组件
# yum -y groupinstall "Development Tools" "Server Platform Development" # yum -y install tcp_wrappers-devel openssl openssl-devel libcap libcap-devel pam-devel
二、编译安装配置vsftpd
# tar xf vsftpd-3.0.3.tar.gz # cd vsftpd-3.0.3/ # vim builddefs.h #ifndef VSF_BUILDDEFS_H #define VSF_BUILDDEFS_H #define VSF_BUILD_TCPWRAPPERS #define VSF_BUILD_PAM #define VSF_BUILD_SSL #endif /* VSF_BUILDDEFS_H */
1)如果是64位系统,需要替换lib目录的位置
# sed -i 's/lib\//lib64\//g' vsf_findlibs.sh
2)编译安装
# make && make install
3)创建配置文件
# mkdir /etc/vsftpd # cp vsftpd.conf /etc/vsftpd/vsftpd.bak # grep -Ev "^$|^#" /etc/vsftpd/vsftpd.bak > /etc/vsftpd/vsftpd.conf #配置文件 # cp RedHat/vsftpd.pam /etc/pam.d/vsftpd #PAM认证文件
4)如果是64位系统,需要替换lib目录的位置
# sed -i 's/lib\//lib64\//g' /etc/pam.d/vsftpd
5)修改配置文件vsftpd.conf
# vim /etc/vsftpd/vsftpd.conf anonymous_enable=NO #不允许匿名用户登录,默认是YES dirmessage_enable=YES #显示某目录下文件信息 xferlog_enable=YES #是否启用上传/下载日志记录 connect_from_port_20=YES #指定FTP使用20端口进行数据传输,默认值为YES listen=YES #设置FTP服务器建立连接所监听的端口,默认值为21 local_enable=YES #是否允许本地用户登入,默认是YES write_enable=YES #是否允许登陆用户有写权限 local_umask=022 #本地用户新增文件时的umask值,默认值为077 xferlog_std_format=YES #日志文件将会写成xferlog的标准格式 ascii_upload_enable=YES #是否启用ASCII模式上传数据,默认值为NO ascii_download_enable=YES #是否启用ASCII模式下载数据,默认值为NO pam_service_name=vsftpd #设置PAM使用的名称,默认值为/etc/pam.d/vsftpd userlist_enable=YES #是否启用user_list文件 userlist_file=/etc/vsftpd/user_list #控制用户访问FTP的文件,里面写着用户名称 tcp_wrappers=YES #是否与tcp wrapper相结合来进行主机的访问控制 guest_enable=YES #启用虚拟用户,默认值为NO guest_username=ftpuser #映射虚拟用户,默认值为ftp user_config_dir=/etc/vsftpd/vuser_conf #设置用户配置文件所在的目录 allow_writeable_chroot=YES pasv_enable=YES #使用PASV工作模式 pasv_min_port=40000 #在PASV工作模式下,数据连接可以使用的端口范围的最小端口 pasv_max_port=40080 #在PASV工作模式下,数据连接可以使用的端口范围的最大端口
6)创建ftpusers及user_list文件
# vim /etc/vsftpd/ftpusers # Users that are not allowed to login via ftp root bin daemon adm lp sync shutdown halt mail news uucp operator games nobody # vim /etc/vsftpd/user_list # vsftpd userlist # If userlist_deny=NO, only allow users in this file # If userlist_deny=YES (default), never allow users in this file, and # do not even prompt for a password. # Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers # for users that are denied. root bin daemon adm lp sync shutdown halt mail news uucp operator games nobody
三、虚拟用户配置
1)创建ftpuser用户以便虚拟用户映射
# useradd -d /data/ftpdata ftpuser
2)修改pam认证文件
# vim /etc/pam.d/vsftpd 注释掉原有所有添加如下两行 #%PAM-1.0 auth required pam_userdb.so db=/etc/vsftpd/vuser_passwd account required pam_userdb.so db=/etc/vsftpd/vuser_passwd #auth required /lib64/security/pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed #auth required /lib64/security/pam_unix.so shadow nullok #auth required /lib64/security/pam_shells.so #account required /lib64/security/pam_unix.so #session required /lib64/security/pam_unix.so
3)创建虚拟用户文件
# vim /etc/vsftpd/vuser_passwd.txt test #单数行为用户名 123456 #双数行为密码 通过命令进行hash运算生成db文件 # db_load -T -t hash -f /etc/vsftpd/vuser_passwd.txt /etc/vsftpd/vuser_passwd.db
4)为虚拟用户配置权限
# mkdir /etc/vsftpd/vuser_conf # vim /etc/vsftpd/vuser_conf/test local_root=/data/ftpdata/ write_enable=YES anon_world_readable_only=NO anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES
5)启动vsftpd
# /usr/local/sbin/vsftpd /etc/vsftpd/vsftpd.conf &
至此可以使用虚拟用户登录ftp进行测试