前言
vsftpd是用于类Unix系统(包括Linux)的FTP服务器。那怎么搭建呢?请看下文在CentOS7 64位进行安装。
为了调试顺利,关闭selinux,防火墙iptables
一.yum安装vsftp
# yum -y install vsftpd
二.启动服务
# systemctl start vsftpd.service
三.配置文件
/etc/vsftpd/vsftpd.conf
四.配置部署
1、备份配置文件,修改配置文件
# cd /etc/vsftpd/# cp vsftpd.conf vsftpd.conf.bak # echo '' > vsftpd.conf# vim /etc/vsftpd/vsftpd.conf
2、配置文件内容(虚拟用户必须关闭虚拟用户anonymous_enable=NO)
anonymous_enable=NOwrite_enable=YESchroot_local_user=YESchroot_list_enable=YESuse_localtime=YESlocal_enable=YESallow_writeable_chroot=YESxferlog_enable=YESlocal_umask=022pam_service_name=vsftpd use_localtime=YESlisten_port=21chroot_local_user=YESidle_session_timeout=120 data_connection_timeout=120guest_enable=YESguest_username=ftpuser user_config_dir=/etc/vsftpd/vuser_confvirtual_use_local_privs=YES pasv_min_port=10060pasv_max_port=10090 accept_timeout=5connect_timeout=1
3、创建宿主用户
- 创建用户 ftpuser 指定 /home/vsftpd 目录
# useradd -g root -M -d /home/vsftpd -s /sbin/nologin ftpuser
- 设置用户 ftpuser 的密码
# passwd ftpuser
- 把 /home/vsftpd 的所有权给ftpuser.root
# mkdir -p /home/vsftpd # chown -R ftpuser.root /home/vsftpd
4、建立虚拟用户文件
# touch /etc/vsftpd/vuser_passwd# 编辑虚拟用户名单文件:(# 第一行账号,第二行密码,注意:不能使用root做用户名,系统保留)# vi /etc/vsftpd/vuser_passwd # 编辑内容,下面是 vuser_passwd 内容ftp112345678ftp212345678
保存退出
5、生成虚拟用户数据文件
# db_load -T -t hash -f /etc/vsftpd/vuser_passwd /etc/vsftpd/vuser_passwd.db# chmod 600 /etc/vsftpd/vuser_passwd.db
6、创建用户配置
# mkdir /etc/vsftpd/vuser_conf # 建立虚拟用户个人vsftp的配置文件# cd /etc/vsftpd/vuser_conf # 进入目录# touch ftp1 ftp2
每个文件(ftp1和ftp2写入如下内容,local_root=/home/vsftpd/ftp1#这里写入这个用户的实际存储路径)
local_root=/home/vsftpd/ftp1write_enable=YESanon_world_readable_only=NOanon_upload_enable=YESanon_mkdir_write_enable=YESanon_other_write_enable=YES
7、创建用户目录
# mkdir -p /home/vsftpd/ftp1# mkdir -p /home/vsftpd/ftp2
8、配置登录用户
# vi /etc/vsftpd/chroot_listftp1ftp2
9、服务启动、停止、状态命令
# systemctl restart vsftpd.service # 重启服务# systemctl start vsftpd.service # 启动服务# systemctl status vsftpd.service # 服务状态查看
10、生成虚拟用户的PAM文件
# cd /etc/pam.d/备份vsftpd文件# cp vsftpd vsftpd.bak
修改vsftpd文件内容(加入第二和第三行,下面的都全部注释,注意下面是64位操作系统,如果是32位的话lib64需要改成lib)
#%PAM-1.0auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwdaccount required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd#session optional pam_keyinit.so force revoke#auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed#auth required pam_shells.so#auth include password-auth#account include password-auth#session required pam_loginuid.so#session include password-auth
Centos6 安装遇到的问题
- Centos6 启动vsftp服务命令
# service vsftpd restart
- Centos6 启动报错500 OOPS: unrecognised variable in config file: allow_writeable_chroot
# service vsftpd restartShutting down vsftpd: [FAILED]Starting vsftpd for vsftpd: 500 OOPS: unrecognised variable in config file: allow_writeable_chroot [FAILED]
查看版本
# vsftpd -versionvsftpd: version 2.2.2
不支持,需要在配置文件/etc/vsftpd/vsftpd.conf屏蔽这个配置项
- Centos6 启动报错500 OOPS: vsftpd: not configured for standalone, must be started from inetd
# service vsftpd restartShutting down vsftpd: [FAILED]Starting vsftpd for vsftpd: 500 OOPS: vsftpd: not configured for standalone, must be started from inetd [FAILED]
需要在配置文件/etc/vsftpd/vsftpd.conf里新增
listen=yes