安装vsftpd
1、以管理员(root)身份执行以下命令
yum install vsftpd
2、设置开机启动vsftpd ftp服务
chkconfig vsftpd on
3、启动vsftpd服务
service vsftpd start
配置防火墙
/sbin/iptables -I INPUT -p tcp --dport 20 -j ACCEPT #开启20端口 /sbin/iptables -I INPUT -p tcp --dport 21 -j ACCEPT #开启21端口 /etc/rc.d/init.d/iptables save #保存配置 /etc/rc.d/init.d/iptables restart #重启防火墙
配置vsftpd服务器
默认的配置文件是/etc/vsftpd/vsftpd.conf,你可以用文本编辑器打开。
vi /etc/vsftpd/vsftpd.conf
添加FTP本地用户(即虚拟用户的宿主用户)
FTP用户一般是不能登录系统的,只能进入FTP服务器自己的目录中,这是为了安全.
这样的用户就叫做虚拟用户了.实际上并不是真正的虚拟用户,只是不能登录SHELL了而已,没权限登录系统.
/usr/sbin/adduser -d /opt/test_ftp -g ftp -s /sbin/nologin ftpuser
这个命令的意思是:
使用命令(adduser)添加test用户,不能登录系统(-s /sbin/nologin),自己的文件夹在(-d /opt/test_ftp)),属于组ftp(-g ftp)
然后你需要为它设置ftp登录密码 passwd ftpuser
passwd ftpuser Changing password for user ftpuser. New UNIX password: Changing password for user test.New UNIX password:
添加配置FTP虚拟用户
1)我们在/etc/vsftpd/vsftpd.conf中做如下CentOS FTP服务配置:
anonymous_enable=NO 设定不允许匿名访问 local_enable=YES 设定本地用户可以访问。注:如使用虚拟宿主用户,在该项目设定为NO的情况下所有虚拟用户将无法访问。 chroot_list_enable=YES 使用户不能离开主目录 chroot_list_file=/etc/vsftpd/chroot_list xferlog_file=/var/log/vsftpd.log 设定vsftpd的服务日志保存路径。注意,该文件默认不存在。必须要手动touch出来 ascii_upload_enable=YES ascii_download_enable=YES 设定支持ASCII模式的上传和下载功能。 pam_service_name=vsftpd PAM认证文件名。PAM将根据/etc/pam.d/vsftpd进行认证
以下这些是关于Vsftpd虚拟用户支持的重要CentOS FTP服务配置项目。
默认vsftpd.conf中不包含这些设定项目,需要自己手动添加CentOS FTP服务配置。
guest_enable=YES 设定启用虚拟用户功能。 guest_username=ftpuser 指定虚拟用户的宿主用户。刚我们在上面已经建好ftpuser user_config_dir=/etc/vsftpd/vuser_conf 设定虚拟用户个人vsftp的CentOS FTP服务文件存放路径。 virtual_use_local_privs=YES 虚拟用户拥有chmod的权限
存放虚拟用户个性的CentOS FTP服务文件(配置文件名=虚拟用户名)
#启用被动模式 pasv_enable=YES pasv_min_port=1024 pasv_max_port=1048 #pasv_addr_resolve=YES //指定被动连接IP #pasv_address=xxx.xxx.xxx.xxx //公网IP
2)创建chroot list,将用户加入其中:
touch /etc/vsftpd/chroot_list echo ftpuser1 >> /etc/vsftpd/chroot_list
3)进行认证:
首先,安装Berkeley DB工具,很多人找不到db_load的问题就是没有安装这个包。(默认db_load以装 跳过安装)
yum install db4 db4-utils(默认db_load已装,可跳过安装)
然后,创建用户密码文本/etc/vsftpd/vuser_passwd.txt ,注意奇行是用户名,偶行是密码
ftpuser1 //用户名 ftppass1 //密码 ftpuser2 ftppass2
接着,.生成虚拟用户认证的db文件
db_load -T -t hash -f /etc/vsftpd/vuser_passwd.txt /etc/vsftpd/vuser_passwd.db
!!!特别注意:以后账号密码更新,一定不能直接命令覆盖vuser_passwd.db文件,一定要删掉或者备份到别处,然后新生成文件。否则历史账号依旧可以访问,且权限巨大!!!
随后,编辑认证文件/etc/pam.d/vsftpd,全部注释掉原来语句
再增加以下两句
auth required pam_userdb.so db=/etc/vsftpd/vuser_passwd account required pam_userdb.so db=/etc/vsftpd/vuser_passwd
最后,创建虚拟用户个性CentOS FTP服务文件
mkdir /etc/vsftpd/vuser_conf/ vi /etc/vsftpd/vuser_conf/ftpuser1
内容如下:
local_root=/opt/ftpuser/fuser1 虚拟用户的根目录(根据实际修改) download_enable=YES anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES anon_world_readable_only=NO
同上创建其他用户 如ftpuser2
现在就可以用虚拟用户ftpuser来访问FTP了 ftp://***ip***/
附:ftp添加用户 ftpuser.sh
#!/bin/bash ## By Zpblog.cn clear echo "*****Ftp User Add*****" echo "Enter User | [email protected]" read User echo "Enter Passwd | ******" read Passwd echo "Enter Dir | /home/www/www.xxx.com" read Dir echo "$User" >> /etc/vsftpd/vuser_passwd.txt echo "$Passwd" >> /etc/vsftpd/vuser_passwd.txt echo "$User" >> /etc/vsftpd/chroot_list echo "local_root=$Dir" > /etc/vsftpd/vuser_conf/$User mv -f /etc/vsftpd/vuser_passwd.db /etc/vsftpd/vuser_passwd.db.bak db_load -T -t hash -f /etc/vsftpd/vuser_passwd.txt /etc/vsftpd/vuser_passwd.db echo '*****Added successfully*****';
相关文章
VSFTP访问软连接目录时权限不足2018-10-29
开启 vsftpd SSL 安全认证2015-02-07