使用vsftp搭建ftp服务器

服务器资源

服务器:阿里云CentOS 7.3

安装部署

检测是否已安装

rpm -qa | grep vsftpd   //如果出现相应版本信息表示已安装如:vsftpd-3.0.2-25.el7.x86_64

否则执行以下命令进行安装:

yum install -y vsftpd

等待安装结束执行检测命令查看到相应版本信息表示安装成功。

配置启动

配置文件综述:

vsftp的默认安装目录是:/etc/vsftpd/  进入改目录即可看到如下几个文件:

/etc/vsftpd/vsftpd.conf     // vsftpd 的核心配置文件

/etc/vsftpd/ftpusers    //用于指定哪些用户不能访问FTP 服务器。 默认禁用登录名单

/etc/vsftpd/user_list://自定义ftp登录用户名单,具体作用稍后讲解

此外为了控制用户登录目录权限,我们自己在次目录下再新建一个以下文件:

/etc/vsftpd/chroot_list  //登录用户能否跳出其用户家目录的控制名单,具体作用稍后讲解


创建ftp登录用户:

通常我们你推荐开放匿名用户登录而使用本地用户(vsftp部署服务器的系统用户),因此这里创建一个本地用户,以备配置vsftp的相关用户名单所用:

创建用户:【useradd -d 用户家目录  用户名】

备注:执行以下命令创建用户seally,同时指定并创建家目录为 /usr/local/ftpworkspace/seally

useradd  -d  /usr/local/ftpworkspace/seally seally

设定用户密码:【passwd 用户名】

passwd seally   //跟着提示输入密码

备注:一般用于ftp的登录账号,最好禁用其登录ssh,因此我们可以执行以下命令,禁用制定的账号登录服务器:【chsh  账号  -s  /sbin/nologin】

chsh seally -s /sbin/nologin


开始配置:

\odot 编辑user_list,将账号 seally 加入到该文件(如果原来有用户列表,可先删除所有默认用户再加入,每个用户独占一行)

\odot 编辑ftpusers,清理掉原有所有默认用户列表,该文件中的用户是ftp黑名单用户,加入其中的账号默认不能够登录。特殊情况下要禁用某些账号时才需要配置进去。

\odot 编辑vsftpd.conf,清理掉所有原有配置,将最核心的配置进去,如下贴出一个核心配置,拷贝过去适当修改即可:

#vsftp最核心的配置示例:/etc/vsftpd/vsftpd.conf

#允许本地用户写入文件 设置为YES

write_enable=YES

#开启目录限制名单可写 一律设置为YES 否则启动目录限制功能的的用户不能够登录

allow_writeable_chroot=YES

#启用记录上传下载日志

xferlog_enable=YES

#设置日志目录

xferlog_file=/var/log/xferlog

#启用日志格式化

xferlog_std_format=YES

#开启默认情况下的主动模式数据传输使用20端口

connect_from_port_20=YES

#设置空闲连接的超时时间

idle_session_timeout=6000

#设置数据传输的超时时间

data_connection_timeout=1200

#是否启用独立监听

listen=YES

#自定义服务监听端口

listen_port=21

pam_service_name=vsftpd

#启用主机访问控制机制,设置为YES

tcp_wrappers=YES 


#为了安全性,关闭匿名访问 配置为NO

anonymous_enable=NO

#关闭匿名用户上传文件 设置为NO  即使开启也需 write_enable=YES

anon_upload_enable=NO

#关闭匿名用户创建文件目录 设置为NO

anon_mkdir_write_enable=NO

#开启本地账号登录 配置为YES

local_enable=YES

#设置本地账户登录后的主目录,不设置或设置不存在路径则登录后会到各自家目录

local_root=/usr/local/ftpworkspace/

#设备本地用户上传文件的默认文件掩码(022代表最终文件权限为755)

local_umask=022


#使用限制所有用户只能在自己的主目录

chroot_local_user=YES

#是否启用目录切换限制排除名单功能

chroot_list_enable=YES

#指定目录切换限制排除名单文件路径,即自己创建的chroot_list文件

chroot_list_file=/etc/vsftpd/chroot_list


#登录名单限制类型 NO=user_list名单中的用户可登录  YES=名单中的用户不可登录

userlist_deny=NO

#是否启用user_list登录限制名单功能

userlist_enable=YES

#登录名单文件路径(每个用户独占一行)

userlist_file=/etc/vsftpd/user_list

备注:vsftpd.conf文件中两个比较绕的配置说明如下:

1、关于登录名单  由3个配置项【userlist_deny、userlist_enable、userlist_file】共同决定,如果userlist_deny配置为NO表示允许userlist_file中的用户登录,如果userlist_deny设置为YES表示拒绝userlist_file中的用户登录,userlist_enable表示是否启用userlist_file的自定义用户用户列表,开启后即在userlist_deny=NO时控制userlist_file中的账号能够登录,当userlist_deny=YES时userlist_file中的用户不能够登录,因此通常我们会userlist_deny配置为NO,将分配的账号添加到userlist_file中,以达到只有分配的用户可登录。

2、关于限制目录切换名单 由4个配置项【allow_writeable_chroot、chroot_local_user、chroot_list_enable、chroot_list_enable、chroot_list_file】共同决定,allow_writeable_chroot一律设置为YES,否则在chroot_local_user开启后用户不能够登录(暂时不明原因,通过测试发现该现象),chroot_local_user表示是否限制所有用户只能在主目录切换,YES=表示所有用户都只能在主目录切换,NO=表示所有用户都可在任意目录切换,为了方便安全管理,通常设置为YES,chroot_list_enable表示是否添加为chroot_local_user的限制添加排除项用户,如果设置为YES则表示chroot_list_file中的用户不受chroot_local_user的限制,且刚好意义与其相反,即如果chroot_local_user=YES限制所有用户,那么chroot_list_file中的用户则不受限制可任意切换目录,如果chroot_local_user=NO不限制所有用户,那么chroot_list_file中的用户则没有这么自由,只能在主目录切换。

综上所述:

登录控制通常情况下的组合设置为如下:

userlist_deny=NO、userlist_enable=YES、userlist_file中加入允许登录的账号。

目录切换控制的组合设置为如下:

chroot_local_user=YES、chroot_list_enable=YES、chroot_list_file中加入允许跳出其主目录的账号。


启动服务,浏览器访问测试:

执行以下命令启动服务:

/bin/systemctl  restart  vsftpd.service

使用java客户端登录或是浏览器输入地址 ftp://www.seally.cn/ 其中www.seally.cn为部署vsftp服务器的域名或是ip,根据弹出的提示输入seally用户及其密码即可登录。

功能扩展

通常我们在创建新用户同时指定好其家目录之后,将该新用户添加到ftp的登录用户列表文件中后,重启ftp服务新的用户便能够进行登录了,同时该用户的ftp工作目录也便限制在其家目录里面,只能上传文件至其指定的目录,ftp的主配置文件中只能指定一个主目录,因此我们只能把许多用户的家目录建立在此主目录之下,这样有个弊端,不同的用户可以看到别人的目录,因此我们进一步扩展为不同的用户单独指定其家目录,来屏蔽它看到别人的目录:

这里假如又新家了一个ftp用户seally2

目前两个用户的家目录情况是:

seally  -->  /usr/local/ftpworkspace/seally

seally2  -->  /usr/local/ftpworkspace/seally2

我们主配置文件vsftpd.conf中设置的本地用户主目录为:local_root=/usr/local/ftpworkspace/

因此账号seally、seally2登录后会进入/usr/local/ftpworkspace/ 即能够互相看到彼此的家目录,虽然不能上传文件到彼此家目录里面去,但是也不太合适,因此增加各自的家目录配置来规避这个问题:

创建多用户配置文件目录:

mkdir  /etc/vsftpd/userconfig

进入该配置目录,建立与用户名相同的文件如此处需要为seally建立单独的登录目录:

vi seally  并输入:local_root=/usr/local/ftpworkspace/seally  然后保存。

vi seally2  并输入:local_root=/usr/local/ftpworkspace/seally2  然后保存。

编辑主配置文件vsftpd.conf 加入以下配置项:

user_config_dir=/etc/vsftpd/userconfig/

重启服务登录验证即可!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,881评论 4 368
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,052评论 1 301
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 110,598评论 0 250
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,407评论 0 217
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,823评论 3 294
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,872评论 1 224
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,037评论 2 317
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,778评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,505评论 1 247
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,745评论 2 253
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,233评论 1 264
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,568评论 3 260
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,231评论 3 241
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,141评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,939评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,954评论 2 283
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,784评论 2 275

推荐阅读更多精彩内容