CentOS安装vsftpd架设ftp服务器(配置虚拟用户)

2013-12-30 浏览:2503
CentOS安装vsftpd架设ftp服务器(配置虚拟用户)
评论:(0)复制地址

安装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*****';


评论:(0)复制地址
发布:zpblog | 分类:Linux | Tags:ftp

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。