vsftp linux
查看是否安装 rpm -qa|grep vsftpd yum -y install vsftpd
/etc/vsftpd/vsftpd.conf #主配置文件
/usr/sbin/vsftpd #主程序
/etc/vsftpd/ftpusers #FTP用户黑名单
/etc/vsftpd/user_list #控制用户登录
/var/ftp #匿名用户主目录
anonymous_enable=YES #是否启用匿名用户
anon_upload_enable=NO #是否允许匿名用户上传文件
anon_mkdir_write_enable=NO #是否允许匿名用户创建文件夹
local_enable=YES #是否允许本地用户
write_enable=YES #是否允许本地用户具有写权限
local_umask=022 #本地用户掩码 777-022 755默认权限
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
ftpd_banner=Welcome to blah FTP service. dongyanming
chroot_local_user=YES
chroot_list_enable=YES #锁定用户在自己的家目录
chroot_list_file=/etc/vsftpd/chroot_list #此文件中的用户将启用chroot!
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
userlist_enable=YES #NO时, user_list文件不生效
#YES时 userlist_deny=YES时: user_list 和 ftpusers 同为黑名单
# user_list文件中的用户不能登录FTP,列表外的用户可以登录。
# userlist_deny=NO时: user_list中用户可以登录,列表外不可以登录
userlist_deny=YES
#userlist_file=/etc/vsftpd/vsftpd.user_list
======================================================================
这里是用CentOS7.0来进行配置的,和其他不同的版本号大同小异,仅仅是在此做一个记录,方便自己查看的同时也能够分享出来给有需要的人看看
1、配置防火墙,开启所需端口
7.0使用的防火墙是firewall,我改成用iptables作为防火墙
(1)关闭firewall:
systemctl stop firewalld.service
#停止firewall
systemctl disable firewalld.service
#禁止firewall开机启动
(2)安装iptables防火墙
yum install iptables-services
#安装
vi /etc/sysconfig/iptables
#编辑防火墙配置文件
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 10060:10090 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
:wq!
#保存退出
systemctl restart iptables.service
#最后重启防火墙使配置生效
systemctl enable iptables.service
#设置防火墙开机启动
说明:21端口是ftp服务端口;10060到10090是Vsftpd被动模式需要的端口,可自定义一段大于1024的tcp端口。
2、关闭selinux
vi /etc/selinux/config
#SELINUX=enforcing
#注释掉
#SELINUXTYPE=targeted
#注释掉
SELINUX=disabled
#增加
:wq! #保存退出
setenforce 0 #使配置立即生效
3、安装vsftp
yum install -y vsftpd
#安装vsftpd
yum install -y psmisc net-tools systemd-devel libdb-devel perl-DBI
#安装vsftpd虚拟用户配置依赖包
systemctl start vsftpd.service
#启动
systemctl enable vsftpd.service
#设置vsftpd开机启动
4、配置vsftp
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf-bak
#备份默认配置文件
执行以下命令进行设置
sed -i "s/anonymous_enable=YES/anonymous_enable=NO/g" '/etc/vsftpd/vsftpd.conf'
sed -i "s/#anon_upload_enable=YES/anon_upload_enable=NO/g" '/etc/vsftpd/vsftpd.conf'
sed -i "s/#anon_mkdir_write_enable=YES/anon_mkdir_write_enable=YES/g" '/etc/vsftpd/vsftpd.conf'
sed -i "s/#chown_uploads=YES/chown_uploads=NO/g" '/etc/vsftpd/vsftpd.conf'
sed -i "s/#async_abor_enable=YES/async_abor_enable=YES/g" '/etc/vsftpd/vsftpd.conf'
sed -i "s/#ascii_upload_enable=YES/ascii_upload_enable=YES/g" '/etc/vsftpd/vsftpd.conf'
sed -i "s/#ascii_download_enable=YES/ascii_download_enable=YES/g" '/etc/vsftpd/vsftpd.conf'
sed -i "s/#ftpd_banner=Welcome to blah FTP service./ftpd_banner=Welcome to FTP service./g" '/etc/vsftpd/vsftpd.conf'
echo -e "use_localtime=YES\nlisten_port=21\nchroot_local_user=YES\nidle_session_timeout=300
\ndata_connection_timeout=1\nguest_enable=YES\nguest_username=vsftpd
\nuser_config_dir=/etc/vsftpd/vconf\nvirtual_use_local_privs=YES
\npasv_min_port=10060\npasv_max_port=10090
\naccept_timeout=5\nconnect_timeout=1" >> /etc/vsftpd/vsftpd.conf
5、建立虚拟用户文件
touch /etc/vsftpd/virtusers
编辑虚拟用户名单文件:(第一行账号,第二行密码,注意:不能使用root做用户名,系统保留)
vi /etc/vsftpd/virtusers
web1
123456
web2
123456
web3
123456
:wq!
#保存退出
6、生成虚拟用户数据文件
db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db
chmod 600 /etc/vsftpd/virtusers.db
#设定PAM验证文件,并指定对虚拟用户数据库文件进行读取
7、在/etc/pam.d/vsftpd的文件头部加入以下信息(在后面加入无效)
修改前先备份 cp /etc/pam.d/vsftpd /etc/pam.d/vsftpdbak
vi /etc/pam.d/vsftpd
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers
注意:如果系统为32位,上面改为lib,否则配置失败
8、新建系统用户vsftpd,用户目录为/home/wwwroot, 用户登录终端设为/bin/false(即使之不能登录系统)
useradd vsftpd -d /home/wwwroot -s /bin/false
chown vsftpd:vsftpd /home/wwwroot -R
chown www:www /home/wwwroot -R
#如果虚拟用户的宿主用户为www,需要这样设置。
9、建立虚拟用户个人Vsftp的配置文件
mkdir /etc/vsftpd/vconf
cd /etc/vsftpd/vconf
touch web1 web2 web3
#这里创建三个虚拟用户配置文件
mkdir -p /home/wwwroot/web1/http/
vi web1
#编辑用户web1配置文件,其他的跟这个配置文件类似
local_root=/home/wwwroot/web1/http/
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
10、最后重启vsftpd服务器
systemctl restart vsftpd.service
备注:
guest_username=vsftpd #指定虚拟用户的宿主用户(就是我们前面新建的用户)
guest_username=www
#如果ftp目录是指向网站根目录,用来上传网站程序,可以指定虚拟用户的宿主用户为nginx运行账户www,可以避免很多权限设置问题
========================================================================
这里是对vsftp配置文件的详细解释,主要参考了《RedHat8.0网络服务》一书中《使用vsftpd架设FTP服务器》一节的内容。
除了安全、高速、稳定之外,vsftpd还具有如下的特性:
支持虚拟用户
支持PAM或xinetd / tcp_wrappers的认证方式
支持两种运行方式:独立和Xinetd
支持每个虚拟用具有独立的配置
支持带宽限制等
/etc/vsftpd.ftpusers
/etc/vsftpd.user_list
anonymous_enable=YES
//允许本地用户登录
local_enable=YES
//开放本地用户的写权限
write_enable=YES
//设置本地用户的文件生成掩码为022,默认值为077
local_umask=022
//当切换到目录时,显示该目录下的.message隐含文件的内容
//这是由于默认情况下有message_file=.message的 设置
dirmessage_enable=YES
//激活上传和下载日志
xferlog_enable=YES
//启用FTP数据端口的连接请求
connect_from_port_20=YES
//使用标准的ftpd xferlog日志格式
xferlog_std_format=YES
//设置PAM认证服务的配置文件名称,该文件存放 在/etc/pam.d/目录下
#pam_service_name=vsftpd
为了使匿名用户能够上传,需要在/etc/vsftpd中激活两个配置选项,分别是:
//允许匿名用户上传
anon_mkdir_write_enable=YES
//开 启匿名用户的写和创建目录的权限
若要以上两项设置生效,同时还要求:
//匿名用户对文件系统的上传目录具有写权限
//上面的配置语句用于放开匿名用户的浏览权限
默认情况下,vsftpd为了安全,禁止了ASCII传输方式。虽然在ftp客户软件中可以使用asc命 令,但是传输文件时仍然使用二进制传输方式。可以分别启用上传和下载的ASCII传输方式,方法是编辑/etc/vsftpd配置文件,将如下两 行前的#去掉即可 启用:
#ascii_download_enable=YES
为了使用户连接服务器后显示信息,vsftpd提供了两个选项,分别是:
banner_file
也可以设置如下的banner_file选项的值:
注意:(1)如果设置了ftpd_banner的值,将覆盖vsftpd默认的服务器连接后的信息。
(2)如果ftpd_banner和banner_file同时设置,那么banner_file将覆盖ftpd_banner的设置。
//设置空闲的用户会话的中断时间
例如下面的配置:
例如下面的配置:
例如下面的配置:
connect_timeout=60
例如下面的配置:
anon_max_rate=30000
例如下面的配置:
pasv_max_port=60000
在 默认配置中,本地用户可以切换到自家目录以外的目录进行浏览,并在权限许可的范围内进行下载和上传。这样的设置对于一个FTP服务器来说是不安全的。如果希望用户登录后不能切换到自家目录以外的目录,则需要设置chroot选项,涉及如下选项:
chroot_list_enable
chroot_list_file
(1)设置对所有的本地用户执行chroot(即活动范围限制在自家目录)只要将chroot_local_user的值设 为YES即可, 即:
chroot_list_enable=YES
chroot_list_file= /etc/vsftpd.chroot_list
注意 :上面所提及的文件/etc/vsftpd.chroot_list和下面将要提及的文件 /etc/vsftpd.user_list的格式要求均为每个 用户名占一行。
要配置基于本地用户的访问控制,可以通过修改vsftpd的主配置文件/etc/vsftpd.conf来进行, 有两种限制方法:
例如下面的设置:
userlist_deny=YES
userlist_file= /etc/vsftpd.user_list
例如下面的设置:
userlist_deny= NO
userlist_file= /etc/vsftpd.user_list
注意:对于userlist_enable可以这样理解:
如 果userlist_enable=YES,表示vsftpd将从userlist_file选项给出的文件名中装载一个含有用户名的清单。然后再读取 userlist_deny的值来确定vsftpd.user_list中的用户是否允许访问FTP服 务器。如果用户不能访问,将在输入用户口令前被拒绝。
由于vsftpd有两种运行方式,即:由inetd启动和独立启动。 这两种运行方式的主机访问控制配置是不同的,下面介绍的是由xinetd启动的vsftpd的主机访问控制的配置。显然,要配置这种主机访问控制,需要修 改配置文件/etc/xinetd.d/vsftpd。
在配置文件/etc/xinetd.d/vsftpd的{}中添加如下的配置语句:
表示只允许192.168.1.0网段内的主机访问。
在配置文件/etc/xinetd.d/vsftpd的{}中添加如下的配置语句:
表示只有192.168.1.0网段内的主机不能访问。
访问控制表时主机表的书写语法
选项值 含义
Hostname 可解析的主机名
IP Address 十进制表示的IP地址
Net_name 在/etc/networks中定义的网络名
x.x.x.0 x.x.0.0 x.0.0.0 0.0.0.0 0作为通配符看待。如:191.72.61.0匹配从191.72.61.0到191.72.61.255的所有IP地址。0.0.0.0表示匹配所有的IP地址
x.x.x.{a,b,.} x.x.{a,b,.} x.{a,b,.} 指定主机表。如:191.72.61.{1,3,123}表示包含地址191.72.61.1、191.72.61.2和191.72.61.123
IPAddress/netmask 定义要匹配的网络或子网。如:172.19.16/20匹配从172.19.16.0到172.19.31.255
//在置文件/etc/xinetd.d/vsftpd的{}中添加如下的配置语句:
在配置文件/etc/xinetd.d/vsftpd的{}中添加如下的配置语句:
又如:access_time = 8:30-11:30 13:00-18:00 表示只有在上午8点半到11点半和下午1点到下午6点才能访问此FTP服务器。
在配置文件/etc/xinetd.d/vsftpd的 {}中添加如下的配置语句:
可以用下面的命令生成文件/etc/vsftpd.busy_banner:
高安全级别匿名FTP服务器的配置要求:
不允许本地用户访问
关闭所有写权限
不允许匿名用户上传
设置客户端连接时的端口范围
设置匿名用户的最大传输速率限制
设置空闲的数据连接的中断时间
设置客户端空闲时的自动中断和激活连接的时间
配置每个主机的最大连接数
配置总的并发连接数
配置禁止访问的主机
配置安全日志
# cd /usr/local/src/vsftpd-1.1.3/EXAMPLE/INTERNET_SITE
# cp vsftpd.conf /etc
# cp vsftpd.xinetd /etc/xinetd.d/vsftpd
//修改主配置文件/etc/vsftpd.conf,添加一 个连接后的信息
# cat >>/etc/vsftpd.conf < > ftpd_banner=This FTP server is anonymous only.
> !
//显示主配置文件的内容如下:
# cat /etc/vsftpd.conf
# Access rights
anonymous_enable=YES
local_enable=NO
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
# Security
anon_world_readable_only=YES
connect_from_port_20=YES
hide_ids=YES
pasv_min_port=50000
pasv_max_port=60000
# Features
xferlog_enable=YES
ls_recurse_enable=NO
ascii_download_enable=NO
async_abor_enable=YES
# Performance
one_process_model=YES
idle_session_timeout=120
data_connection_timeout=300
accept_timeout=60
connect_timeout=60
anon_max_rate=50000
ftpd_banner=This FTP server is anonymous only.
# cat /etc/xinetd.d/vsftpd
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/local/sbin/vsftpd
per_source = 5
instances = 200
no_access = 192.168.1.3
banner_fail = /etc/vsftpd.busy_banner
log_on_success += PID HOST DURATION
log_on_failure += HOST
}
//重新启动xinetd
建立虚拟FTP的服务器目录并设置适当的权限
建立虚拟FTP的服务器的xinetd配置文件
建立虚拟FTP的服务器的主配置文件
chroot_local_user=NO时 能,其值为YES时不能
不能激活此类用户的命令
local_enable=YES
guest_enable=YES
anonymous_enable=YES
生成虚拟用户口令库文件
配置生成vsftpd的认证文件
建立虚拟用户所要访问的目录并设置相应权限
建立配置文件
//生成虚拟用户口令库文件,以mysql数据库为例:
//修改口令库 文件的权限
# chmod 600 /etc/vsftpd_login.db
# vi /etc/pam.d/ftp
//插入如下两行
auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd_login
//保存后退出vi
// cd /usr/local/src/vsftpd-1.1.3/EXAMPLE/
// cp VIRTUAL_USERS/vsftpd.pam /etc/pam.d/ftp
//建立虚拟用户所要访问的目录并设置仅virtual用户访问的权限
# chmod 700 /home/ftpsite/
# vi /etc/vsftpd.standalone.vu.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=virtual 将虚拟用户映射为本地virtual用户
pasv_min_port=30000
pasv_max_port=30999
ftpd_banner=This FTP server is virtual user only.
pam_service_name=ftp 指定PAM配置文件为ftp.vu
//插入完毕,保存退出。
# killall vsftpd
# /usr/local/sbin/vsftpd /etc/vsftpd.standalone.vu.conf &
//配置结束
/etc/vsftpd.standalone.vu.conf中添加配置语句anon_world_readable_only=NO
配置好后,新的口令库中的所有用户就都可以登录此FTP服务器了。
虚拟用户valid具有浏览目录、上传和下载的权限
虚拟用户dede具有浏览目录、上传、下载、文件改 名和删除的权限
虚拟用户tom和fred具有浏览目录和下载的权限
//激活对不同的虚拟用户进行不同权限配置的配置语句
user_config_dir=/etc/vsftpd_user_conf
//添加后保存退出vi
//接下来创建此目录
# mkdir /etc/vsftpd_user_conf
#echo "anon_world_readable_only=NO">/etc/vsftpd_user_conf/tom
#echo "anon_world_readable_only=NO">/etc/vsftpd_user_conf/fred
//开放valid和dede的读写权限
> write_enable=YES
> anon_upload_enable=YES
> !
# kill -HUP `pidof vsftpd`
#
xinetd启动的FTP服务器,同时也可以将虚拟用户的FTP服务器配置为基于IP的虚拟FTP服务器
vsftp linux的更多相关文章
- 从Linux服务器下载网站文件
最近公司迁来一个新客户,该客户的网站是别的网络服务商做的,放在linux主机上,因为客户跟之前的网络服务商合作的不愉快 所以就把网站迁到我们公司,经理让我把网站文件和数据库download下来并在我们 ...
- Linux 驱动开发
linux驱动开发总结(一) 基础性总结 1, linux驱动一般分为3大类: * 字符设备 * 块设备 * 网络设备 2, 开发环境构建: * 交叉工具链构建 * NFS和tftp服务器安装 3, ...
- Linux系统Vsftp 传文件出现 553 Could Not Create File错误的解决方法
解决方法: 登录出现了这个错误提示:553 Could not create file SELinux设置如下 查看SELinux设置 [root@localhost ~]# getsebool -a ...
- Linux之VSFTP服务
一 .文件服务器简介 ftp:在内网和公网使用. 服务器:windows,linux 客户端:windows,linux samba:只能在内网使用(文件共享服务) 服务器:windows,linux ...
- linux上配置网络/安装vsftp服务器
1 准备用yum方式安装,小红帽linux原版不注册无法适用,只好安装centos系统 2 安装好centos系统注意事项: 硬盘得是IDE 配置好网络必须通,eth0的配置文件设置一下,联网启用 c ...
- linux 安装jdk,tomcat 配置vsftp 远程连接
不知不觉入行也有一年了,这两天在公司上班有空了就自己装了个vmware虚拟机,装了个红帽6.1完全命令行的操作系统,想着搭个公司现在在用的测试环境,没想到中间碰到了很多问题,不过大部分都解决了,现在可 ...
- linux下安装vsftp
1. yum安装vsftp # yum install vsftpd 2. 配置Vsftpd 安装完之后我们要对它进行配置,才能正常使用.编辑vsftpd的配置文件vi /etc/vsftpd/vsf ...
- linux用VSFTP搭建FTP服务器
一般在各种linux的发行版中,默认带有的ftp软件是vsftp,从各个linux发行版对vsftp的认可可以看出,vsftp应该是一款不错的ftp软件. sudo apt-get install v ...
- Linux vsftp
本机环境CentOS-6.6-i386-bin-DVD1.iso安装盘.安装时选择minimal模式.本机IP地址配置为192.168.0.211. 1.查询系统是否已安装了vsftpd [root@ ...
随机推荐
- mybatis - resultMap
resultMap有比较强大的自动映射,下面是摘自mybatis中文官网的的片段: 当自动映射查询结果时,MyBatis会获取sql返回的列名并在java类中查找相同名字的属性(忽略大小写). 这意味 ...
- 重走java---Step 1
开发环境 1.使用java开发,首先要完成java运行环境的安装配置,JVM可以说是java最大的优点之一,就是它实现了java一次编译多次运行,关于JVM以后再详谈.安装配置JDK,完成java开发 ...
- Java入门记(三):初始化顺序
初始化顺序的规则 1.在一个类的对象实例化时,成员变量首先初始化,然后才调用构造器,无论书写顺序.如果调用构造器前,没有显式初始化,那么会赋默认值. 这样做法的原因可以理解为:构造器执行时可能会用到一 ...
- 使用Linux碎解三_CentOS7搭建Lamp环境安装zabbix遇到的问题
问题一: 执行不了 yum命令 解决方案:配置系统的DNS(详细参见碎解二) 问题二: make 命令的时候,出现错误 提示 和没有gcc大体相关 解决方案:yum install gcc (在网 ...
- DIOCP之编写第一个应用程序(二)
构建client界面: 构建界面要比写代码更难爱,不是专业UI设计太丑,先有个界面,好写代码,客户端代码与界面设计思想:界面与数据之间分离处理,不能要接收数据的地方写代码,不然以后修改程序会死人的.
- centos 安装 nginx
采用版本 nginx-1.9.8.tar.gz yum -y install pcre-devel yum -y install openssl openssl-devel tar –zxvf ngi ...
- WPF自适应窗体实现小结
WPF自适应窗体实现小结 这几天,因工作需要,要对一个小软件进行UI调整.主要内容就是让其能够实现自适应窗体(包括文字和图标),做成像WIN7下的Media Center一样的UI.自适应窗体,顾名思 ...
- 基于Web2.0的RIA框架设计与实现
http://www.doc88.com/p-8866851533856.html http://cdmd.cnki.com.cn/Article/CDMD-10614-1012472890.htm
- 关于ajax载入窗口使用RedirectToAction在窗口显示的问题
在过滤器中过滤用户是否登录,没有登录就RedirectToAction("Login", "Auth", new { Area = "Account& ...
- android添加第三方字体并设置的简单使用
1.java文件 package lpc.com.project006; import android.app.Activity; import android.content.res.AssetMa ...