vsftp服务器搭建
vsftpd是Linux下比较着名的FTP服务器,搭建FTP服务器当然首选这个。
本文介绍了在CentOS 6.4下安装vsftpd、配置虚拟用户登录FTP的过程。
正文:
一:安装vsftpd
查看是否已经安装vsftpd
rpm -qa | grep vsftpd
如果没有,就安装,并设置开机启动
yum -y install vsftpd
chkconfig vsftpd on
二:基于虚拟用户的配置
所谓虚拟用户就是没有使用真实的帐户,只是通过映射到真实帐户和设置权限的目的。虚拟用户不能登录CentOS系统。
修改配置文件
打开/etc/vsftpd/vsftpd.conf,做如下配置
anonymous_enable=NO //设定不允许匿名访问
local_enable=YES //设定本地用户可以访问。注:如使用虚拟宿主用户,在该项目设定为NO的情况下所有虚拟用户将无法访问
chroot_list_enable=YES //使用户不能离开主目录
ascii_upload_enable=YES
ascii_download_enable=YES //设定支持ASCII模式的上传和下载功能
pam_service_name=vsftpd //PAM认证文件名。PAM将根据/etc/pam.d/vsftpd进行认证
以下这些是关于vsftpd虚拟用户支持的重要配置项,默认vsftpd.conf中不包含这些设定项目,需要自己手动添加
guest_enable=YES //设定启用虚拟用户功能
guest_username=ftp //指定虚拟用户的宿主用户,CentOS中已经有内置的ftp用户了
user_config_dir=/etc/vsftpd/vuser_conf //设定虚拟用户个人vsftp的CentOS FTP服务文件存放路径。存放虚拟用户个性的CentOS FTP服务文件(配置文件名=虚拟用户名
进行认证
首先,安装Berkeley DB工具,很多人找不到db_load的问题就是没有安装这个包。
yum install db4 db4-utils
然后,创建用户密码文本/etc/vsftpd/vuser_passwd.txt ,注意奇行是用户名,偶行是密码
test
123456
接着,生成虚拟用户认证的db文件
db_load -T -t hash -f /etc/vsftpd/vuser_passwd.txt /etc/vsftpd/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
最后,创建虚拟用户配置文件
mkdir /etc/vsftpd/vuser_conf/
vi /etc/vsftpd/vuser_conf/test //文件名等于vuser_passwd.txt里面的账户名,否则下面设置无效
内容如下
local_root=/ftp/www //虚拟用户根目录,根据实际情况修改
write_enable=YES //可写
anon_umask=022 //掩码
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
设置Selinux
setsebool -P ftp_home_dir=1 //设置ftp可以使用home目录
sersebool -P allow_ftpd_full_access=1 //设置ftp用户可以有所有权限
设置FTP根目录权限
mkdir /ftp/www //创建目录
chmod R 755 /ftp
chmod R 777 /ftp/www
最新的vsftpd要求对主目录不能有写的权限所以ftp为755,主目录下面的子目录再设置777权限
设置防火墙
打开/etc/sysconfig/iptables
在“-A INPUT –m state --state NEW –m tcp –p –dport 22 –j ACCEPT”,下添加:
-A INPUT -m state --state NEW -m tcp -p -dport 21 -j ACCEPT
然后保存,并关闭该文件,在终端内运行下面的命令,刷新防火墙配置:
service iptables restart
OK,运行“service vsftpd start”,你就可以访问你的FTP服务器了。
② linux怎么搭建ftp服务器
1、用在线安装
yum install vsftpd pam* db4*-y
使用命令将vsftp配置为系统服务
chkconfig --level 35 vsftpd on
2、配置vsftpd服务的宿主
useradd vsftpdadmin -s /sbin/nologin -M
这个vsftpdadmin只是用来替换root的,并不需要登录
3、建立ftp虚拟宿主帐户
useradd vsftpuser -s /sbin/nologin -M
这ftpuser只个虚拟帐户的宿主,本身是不用登录的
4、配置vsftpd.conf 配置之前要先备份一下原来的
vi /etc/vsftpd/vsftpd.conf
anonymous_enable=YES --> anonymous_enable=NO //不允许匿名用户访问,默认是允许。
chroot_list_enable=YES --> chroot_list_enable=YES //不允许FTP用户离开自己主目录
增加
#设定虚拟用户个人Vsftp的配置文件存放路径。也就是说,这个被指定的目录里,将存放每个Vsftp虚拟用户个性的配置文件,一个需要注意的地方就是这些配置文件名必须和虚拟用户名相同。
user_config_dir=/etc/vsftpd/vconf/userlocal
#这一大陆烂步非常重要,要记住这滚漏一步。一会要根据这个配置新建文件夹
#修改端口号
ftp_data_port=4040
reverse_lookup_enable=NO
pasv_enable=yes
pasv_min_port=48790
pasv_max_port=48800
listen_port=48796 #端口可以根据你自己实际情况配置,也可以用默认端口。但是为了安全考虑根据自己实际情况配置
5、建立虚拟用户文件
mkdir /etc/vsftpd/vconf
touch /etc/vsftpd/vonf/vir_user
6、建立虚拟用户
vi /etc/vsftpd/vonf/vir_user
virtualuser //用户名
12345678 //密码
7、生成数据库
db_load -T -t hash -f /etc/vsftpd/vconf/vir_user /etc/vsftpd/vconf/vir_user.db
8、设置数据库文件访问权限
chmod 600 /etc/vsftpd/vconf/vir_user
chmod 600 /etc/vsftpd/vconf/vir_user.db
9、修改/etc/pam.d/vsftpd
auth sufficient pam_userdb.so db=/etc/vsftpd/vconf/vir_user
account sufficient pam_userdb.so db=/etc/vsftpd/vconf/vir_user
(要想同时使用系统用户和虚拟用户,就需要把required改成sufficient)
10
根据第四步配置的user_config_dir=/etc/vsftpd/vconf/userlocal
新建userlocal文件夹
mkdir /etc/vsftpd/vconf/userlocal
11、根据第六步建立的用户名建立一个文件
例如第六步建立的帐号是virtualuser,则新建一个virtualuser文件
touch /etc/vsftpd/conf/userlocal/virtualuser
12、编辑该用户访问的文件路径
vi /etc/vsftpd/conf/userlocal/virtualuser
输入如下
local_root= //需要指定的网站根目录,例如www..com所在文件夹为/www/
anonymous_enable=NO #禁止匿名用户访问
write_enable=YES #开启写权限
local_umask=022 #上传后文悉差件的权限掩码
anon_upload_enable=NO #关闭匿名下载
anon_mkdir_write_enable=NO #关闭匿名创建文件夹
idle_session_timeout=60 #会话自动关闭时间 60是因分钟
data_connection_timeout=120 #数据延迟时间
max_clients=10 #最大连接数
max_per_ip=5 #同一个ip同时允许5个IP联机
local_max_rate=1048576 #实体用户传输速度限制,单位B/s。0代表不限制
13、配置就此完成,重启vsftpd服务:service vsftpd restart。
查看系统端口状态:netstas -tulnp。如果能看到48796端口正在被vsftpd调用说明启动成功。
③ CentOS安装vsftp建新用户的方法
rpm -qa | grep vsftpd 查看有没有安装vsftp
运行命令开始安装
yum -y install vsftpd
centos会自动下载安装。
安装完毕后
设置每次开机时自动运行
chkconfig vsftpd on
手工启动
service vsftpd start
可以通过 netstat -tl查看是否在监听21端口。
建新用户
# useradd –d /var/www -g ftp –s /sbin/nologin myftp
说明:
-s /sbin/nologin 是让其不能登陆系统
-d 是指定用户目录为/var/www ,这里可以替换成任何你需要的目录。
-g ftp 把用户加入到ftp组中(vsftp已创建)
myftp是ftp用户名,在配置时把这个myftp换成你的ftp用户名。
执行该命令后,如果出现这样的错误提示:
useradd: warning: the home directory already exists.
Not ing any file from skel directory into it.
这说明用户的目录已经存在(/var/www,这个可以是任何你设定的目录),不可再新建此目录,并非添加用户失败,可以忽略。
特别提醒:用useradd建立的用户,如果后面不加–s /sbin/nologin参数,建立的用户为普通系统用户,有系统登陆centos服务器的权限,在虚拟主机环境下,这非常危险。所以要在useradd命令后面加上参数–s /sbin/nologin,为centos 服务器虚拟主机添加不可以登录系统的ftp专用账号(虚拟账户)
设置密码
# passwd myftp
提示:重复输入2次
修改/var/www目录属性:(或任何自己定义的目录)
# chown -R myftp /var/www 递归把所有目录及文件的拥有者设为新添加的ftp用户
# chmod -R 755 /var/www 递归地设置拥护者全部权限,其他用户只有读取和执行权限
这样,如果网站运行时需要有写入权限,可以直接通过ftp的用户名来修改。
配置文件 /etc/vsftpd/vsftpd.conf
设置帐户只能访问自己的目录,也就是上面建用户的时候设置的目录–d /var/www
Chroot_local_user=yes
重启 vsftpd服务
# service vsftpd restart
④ 如何在Linux操作系统下搭建ipv6ftp服务器
Linux下可以配置vsftp服务来实现FTP的部署明友。
配置支持ipv6地址的服务只要启用listen_ipv6=yes将ipv6的监听设置开启即可。
当然具体配置没有那么简单,比如设置用户权限拉,部署过程中出现错误和排错纳谈拉。最好网络一下配置说激茄槐明。
⑤ Ubuntu用VSFTP搭建FTP服务器设置教程
本文将介绍Ubuntu 用VSFTP搭建FTP服务器,需要的朋友可以参考下1、安装vsftpd
终端输入sudo apt-get install vsftpd
安装之后会在/home/下建立一个ftp目录,访问下可以看到一个空白内容的ftp空间。
默认设置下需要匿名用户不可以登录
2、设置 vsftpd.conf文件
修改之前最好先备份这个文件:sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.old
参数意义:
Anonymous_enable=yes (允许匿名登陆)
Dirmessage_enable=yes (切换目录时,显示目录下.message的内容)
Local_umask=022 (FTP上本地的文件权限,默认是077)
Connect_form_port_20=yes (启用FTP数据端口的数据连接)*
Xferlog_enable=yes (激活上传和下传的日志)
Xferlog_std_format=yes (使用标准的日志格式)
Ftpd_banner=XXXXX (欢迎信息)
Pam_service_name=vsftpd (验证方式)*
Listen=yes (独立的VSFTPD服务器)*
功能:只能连接FTP服务器,不能上传和下传
注:其中所有和日志欢迎信息相关连的都是可选项,打了星号的无论什么帐户都要添加,是属于FTP的基本选项
开启匿名FTP服务器上传权限:
Anon_upload_enable=yes (匿名帐号开放上传权限)
Anon_mkdir_write_enable=yes (匿名帐号可创建目录的同时可以在此目录中上传文件)
Write_enable=yes (开放本地用户写的权限)
Anon_other_write_enable=yes (匿名帐号可以有删除的权限)
Anon_world_readable_only=no(开启匿名服务器下传的权限)
普通用户FTP服务器的连接(独立服务器)配置:
Local_enble=yes (本地帐户能够登陆)
Write_enable=no (本地帐户登陆后无权删除和修改文件)
功能:可以用本地帐户登陆vsftpd服务器,有下载上传的权限
注:在禁止匿名登陆的信息后匿名服务器照样可以登陆但不可以上传下传
用户登陆限制进其它的目录,只能进它的主目录:
设置所有的本地用户都执行chroot
Chroot_local_user=yes (本地所有帐户都只能在自家目录)
设置指定用户执行chroot
Chroot_list_enable=yes (文件中的名单可以调用)
Chroot_list_file=/任意指定的路径/vsftpd.chroot_list
注意:vsftpd.chroot_list 是没有创建的需要自己添加,要想控制帐号就直接在文件中加帐号即可
限制本地用户访问FTP:
Userlist_enable=yes (用userlistlai 来限制用户访问)
Userlist_deny=no (名单中的人不允许访问)
Userlist_file=/指定文件存放的路径/ (文件放置的路径)
注:开启userlist_enable=yes匿名帐号不能登陆
安全选项
Idle_session_timeout=600(秒) (用户会话空闲后10分钟)
Data_connection_timeout=120(秒) (将数据连接空闲2分钟断)
Accept_timeout=60(秒) (将客户端空闲1分钟后断)
Connect_timeout=60(秒) (中断1分钟后又重新连接)
Local_max_rate=50000(bite) (本地用户传输率50K)
Anon_max_rate=30000(bite) (匿名用户传输率30K)
Pasv_min_port=50000 (将客户端的数据连接端口改在
Pasv_max_port=60000 50000—60000之间)
Max_clients=200 (FTP的最大连接数)
Max_per_ip=4 (每IP的最大连接数)
Listen_port=5555 (从5555端口进行数据连接)
查看谁登陆了FTP,并杀死它的进程
ps –xf |grep ftp
kill 进程号
3、配置本地组访问的FTP
首先创建用户组 test和FTP的主目录
groupadd test
mkdir /tmp/test
然后创建用户
useradd -G test –d /tmp/test –M usr1
注:G:用户所在的组
d:表示创建用户的自己目录的位置给予指定
M:不建立默认的自家目录,也就是说在/home下没有自己的目录
useradd –G test –d /tmp/test –M usr2
接着改变文件夹的属主和权限
chown usr1.test /tmp/test ----这表示把/tmp/test的属主定为usr1
chmod 750 /tmp/test ----7表示wrx 5表示rx 0表示什么权限都没有
这个实验的目的就是usr1有上传、删除和下载的权限,而usr2只有下载的权限没有上传和删除的权限
主配置文件vsftpd.conf要确定local_enable=yes、write_enable=yes、chroot_local_usr=yes这三个选项是有的哦!
4、配置独立FTP的服务器的非端口标准模式进行数据连接
在VSFTPD_CONF中添加Listen_port=33333
5、配置单独的虚拟FTP,使用虚拟FTP用户,并使建立的四个帐户中有不同的权限
(两个有读目录的权限,一个有浏览、上传、下载的权限,一个有浏览、下载、删除和改文件名的权限)
1>配置网卡
第一块网卡地址是10.2.3.4 掩码是255.255.0.0
ifconfig eth0:1 211.131.4.253 netmask 255.255.255.0 up
2>写入/etc/sysconfig中(为了重起后IP地址不会丢失)
cd /etc/sysconfig/network-scripts
cp ifcfg-eth0 ifcfg-eth0:1
vi ifcfg-eth0:1在其中修改内容如下
DEVICE=eth0:1
BROADCAST=211.131.4.255
HWADDR=该网卡的MAC地址
IPADDR=211.131.4.253
NETMASK=255.255.255.0
NETWORK=211.131.4.0
ONBOOT=yes
TYPE=Ethernet
wq退出
3>进入vsftpd.conf所在的文件夹cp vsftpd.conf vsftpd2.conf
修改vsftpd.conf添加以下信息
Listen_address=10.2.3.4
修改vsftpd2.conf添加以下信息
Listen_address=211.131.4.253
Ftpd_banner=this is a virtual ftp test
到此虚拟的FTP服务器建立好了
4>建立logins.txt
vi /tmp/logins.txt
添加入下信息:
longlei------------用户名
longlei------------密码
zhangweibo
zhangweibo
jinhui
jinhui
lxp
lxp
格式:一个用户名,一个密码
5>建立访问者的口令库文件,然后修改其权限
db_load –T –t hash –f /tmp/logins.txt /etc/vsftpd_login.db
6>进如/etc/pam.d/中创建
在中添加如下信息
auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd_login
7>在/var/ftp/创建目录并改变其属性和它的属主
useradd -d /var/ftp/test qiang
chmod 700 /var/ftp/test
在目录中添加test_file测试文件
8>进入vsftpd2.conf修改其中的信息(可以是)
Listen_yes
Anonymous_enable=no
Local_enable=yes
Write_enable=no
Anon_upload_enable=no
Anon_mkdir_write_enable=no
Anon_other_write_enable=no
Chroot_local_user=yes
Guest_enable=yes----------起用虚拟用户
Guest_username=qiang------将虚拟用户映射为本地用户
Listen_port=5555
Max_client=10
Max_per_ip=1
Ftpd_banner=this is a virtual server and users
Pam_service_name=ftp.vu
注:在主配置文件中给的权限越低,在后面分用户管理的时候对用户的权限划分的空间就越大,因为主配置文件最高的限制服务先读主配置文件,然后再读用户的配置文件
配置完成时候执行/etc/init.d/vsftpd restart重启ftp服务器即可
到此虚拟USER就建好了
9>在VSFTPD_CONF所在的目录中创建virtaul文件目录,并在文件目录中创建以你用户名命名的配置文件
Longlei zhangweibo jinhui lxp
在longlei中添加:
Anon_world_readable_only=no
在lxp中添加
Anon_world_readable_only=no
这样此两个用户就有了浏览目录的权限了
在jinhui中添加
Anon_world_readable_only=no
Write_enable=yes
Anon_upload_enable=yes
此用户就有了上传、下载和浏览的权限
在zhangweibo中添加
Anon_world_readable_only=no
Write_enable=yes
Anon_upload_enable=yes
Anon_other_write_enable=yes
此用户就有了上传、下载、删除文件目录、修改文件名和浏览的权限
10>修改vsftpd2.conf
加入user_config_dir=/vsftpd.conf所在的目录/virtual
重起服务器就搞定了
VSFTPD_CONF中的所有配置信息
Anonymous_enable=yes (允许匿名登陆)
Dirmessage_enable=yes (切换目录时,显示目录下.message的内容)
Local_umask=022 (FTP上本地的文件权限,默认是077)
Connect_form_port_20=yes (启用FTP数据端口的数据连接)*
Xferlog_enable=yes (激活上传和下传的日志)
Xferlog_std_format=yes (使用标准的日志格式)
Ftpd_banner=XXXXX (欢迎信息)
Pam_service_name=vsftpd (验证方式)*
Listen=yes (独立的VSFTPD服务器)*
Anon_upload_enable=yes (开放上传权限)
Anon_mkdir_write_enable=yes (可创建目录的同时可以在此目录中上传文件)
Write_enable=yes (开放本地用户写的权限)
Anon_other_write_enable=yes (匿名帐号可以有删除的权限)
Anon_world_readable_only=no (放开匿名用户浏览权限)
Ascii_upload_enable=yes (启用上传的ASCII传输方式)
Ascii_download_enable=yes (启用下载的ASCII传输方式)
Banner_file=/var/vsftpd_banner_file (用户连接后欢迎信息使用的是此文件中的相关信息)
Idle_session_timeout=600(秒) (用户会话空闲后10分钟)
Data_connection_timeout=120(秒) (将数据连接空闲2分钟断)
Accept_timeout=60(秒) (将客户端空闲1分钟后断)
Connect_timeout=60(秒) (中断1分钟后又重新连接)
Local_max_rate=50000(bite) (本地用户传输率50K)
Anon_max_rate=30000(bite) (匿名用户传输率30K)
Pasv_min_port=50000 (将客户端的数据连接端口改在
Pasv_max_port=60000 50000—60000之间)
Max_clients=200 (FTP的最大连接数)
Max_per_ip=4 (每IP的最大连接数)
Listen_port=5555 (从5555端口进行数据连接)
Local_enble=yes (本地帐户能够登陆)
Write_enable=no (本地帐户登陆后无权删除和修改文件)
这是一组
Chroot_local_user=yes (本地所有帐户都只能在自家目录)
Chroot_list_enable=yes (文件中的名单可以调用)
Chroot_list_file=/任意指定的路径/vsftpd.chroot_list (前提是chroot_local_user=no)
这又是一组
Userlist_enable=yes (在指定的文件中的用户不可以访问)
Userlist_deny=yes
Userlist_file=/指定的路径/vsftpd.user_list
又开始单的了
Banner_fail=/路径/文件名 (连接失败时显示文件中的内容)
Ls_recurse_enable=no
Async_abor_enable=yes
One_process_model=yes
Listen_address=10.2.2.2 (将虚拟服务绑定到某端口)
Guest_enable=yes (虚拟用户可以登陆)
Guest_username=所设的用户名 (将虚拟用户映射为本地用户)
User_config_dir=/任意指定的路径/为用户策略自己所建的文件夹 (指定不同虚拟用户配置文件的路径)
又是一组
Chown_uploads=yes (改变上传文件的所有者为root)
Chown_username=root
又是一组
Deny_email_enable=yes (是否允许禁止匿名用户使用某些邮件地址)
Banned_email_file=//任意指定的路径/xx/
又是单的
Pasv_enable=yes ( 服务器端用被动模式)
User_config_dir=/任意指定的路径//任意文件目录 (指定虚拟用户存放配置文件的路径)
如需要使用本地用户登陆关闭来宾用户,必须设置如下命令:
anonymous_enable=no
guest_enable=no
local_enable=yes
write_enable=yes
local_umask=022
chroot_list_enable=yes
chroot_list_file=/etc/vsftpd.chroot_list (如没有则自己创建) (在etc/vsftpd.chroot_list 填入需要登陆的本地用户名)
6、解决vsftpd的中文乱码问题
先安装源中的vsfpd,然后把所有的功能都配置完后,再解决中文乱码问题
因为删除源的vsftpd后它的/init.d/vsftpd与/vsftpd.conf是不会删除的,可以为我们打好铺垫,不然你会发现很无奈的!如果 你是直接编译安装,附件给出会给出我的init.d/vsftpd与vsftpd.conf文件,把他们覆盖到/etc下吧!
开始做编译的准备工作,准备编译环境需要的库包
sudo apt-get build-dep vsftpd
这里使用先安装源里的vsftpd,然后卸载
sudo apt-get install vsftpd
apt-get remove vsftpd
下载附件并解压包
tar -zxvf vsftpd-2.0.6
cd vsftpd-2.0.6
sudo su :使用root用户开始编译
make #编译命令,如果无错误出现,表示成功
make install #安装
如果安装中出现找不到目录的话,就建立那个缺的目录就好了
基本上都会提示缺少/man8和/man5目录的,建立后在重新make install
下边就来测试下效果修改配置文件,加入
charset_filter_enable=YES #开启字符过滤
charset_client=GB2312 #客户端字符设置为简体中文
好了现在把服务开启测试下吧
sudo /etc/init.d/vsftpd restart
在win下上传一个中文文件,看看效果吧,然后在把配置文件中关于字符的关掉,重起服务,在看吧.