1、安装vsftpd软件包,命令如下:

sudo yum -y install vsftpd

2、查看vsftpd的运行状态,命令如下:

sudo netstat -nltp | grep 21

一般情况下,vsftpd安装完成后会自动启动,如下图所示通过 netstat 命令可以看到系统已经监听了 21 端口

特殊情况下,假如vsftpd没有自启动,可以手动开启:

sudo systemctl start vsftpd.service

3、配置ftp登录用户及权限

在这一步中,网上基本所有的帖子都用useradd,但是使用useradd时,如果后面不添加任何参数选项,例如:#sudo useradd test创建出来的用户将是默认“三无”用户:无Home Directory、无密码,无系统Shell,还需要自己配置,比较麻烦。

而使用adduser,创建用户的过程更像是一种人机对话,系统会提示你输入各种信息,然后会根据这些信息帮你创建新用户,所以,我用adduser来创建新的ftp登录用户。

 sudo adduser ftp

创建用户的过程如下图所示,创建完了后home下会自动出现一个对应的文件夹。

4、删除掉 pam.d 中 vsftpd,因为该配置文件会导致使用用户名登录 ftp 失败

sudo rm /etc/pam.d/vsftpd

5、限制用户 ftp只能通过 FTP 访问服务器,而不能直接登录服务器

sudo usermod -s /sbin/nologin ftp

注:此处一定要谨慎操作,如果新建的ftp用户只用来上传数据,可以这么操作。如果该用户还要ssh来连接,就不能这么操作。

6、配置vsftpd,这一步很关键,直接决定

sudo chmod a+w /etc/vsftpd.conf
sudo vim /etc/vsftpd.conf

主要添加以下几项权限:

# 限制用户对主目录以外目录访问
chroot_local_user=YES
​#是否允许匿名访问,NO为不允许
anonymous_enable=NO
​​​​​​
#是否允许本地用户访问,就是linux本机中存在的用户,YES允
local_enable=YES
#是否开启写模式,YES为开启
write_enable=YES#不允许下载
download_enable=NO
​​​​​​​
#新建文件权限,一般设置为022,那么新建后的文件的权限就是777-002=775
local_umask=002
#是否启动userlist为禁止模式,YES表示在userlist中的用户禁止登录ftp(黑名单),NO表示黑名单失效,我们已经让userlist作为一个白名单,所以无需使用黑名单功能userlist_deny=NO​​​​​​​#是否启动userlist为通过模式,YES的话只有存在于userlist文件中的用户才能登录ftp(可以理解为userlist是一个白名单),NO的话,白名单失效,和下面一个参数配合使用userlist_enable=YES​​​​​​​#指定哪个文件作为userlist文件,我们稍后编辑这个文件userlist_file=/etc/vsftpd.user_list​​​​​​​# 不配置可能导致莫名的530问题seccomp_sandbox=NO​​​​​​​#修改用户上传文件的所属主chown_uploads=YESchown_username=ftp​​​​​​​#是否限制本地所有用户切换根目录的权限,YES为开启限制,即登录后的用户不能访问ftp根目录以外的目录,当然要限制chroot_local_user=YES​​​​​​​#是否启动限制用户的名单list为允许模式,上面的YES限制了所有用户,可以用这个名单作为白名单,作为例外允许访问ftp根目录以外chroot_list_enable=YES​​​​​​​#设置哪个文件是list文件,里面的用户将不受限制的去访问ftp根目录以外的目录chroot_list_file=/etc/vsftpd.chroot_list​​​​​​​#是否开启写模式,开启后可以进行创建文件夹等写入操作,添加后可以解决“500 OOPS: vsftpd: refusing to run with writable root inside chroot ”的问题allow_writeable_chroot=YES​​​​​​​# 使用utf8编码utf8_filesystem=YES

7、新建文件 /etc/vsftpd.user_list,用于存放允许访问 ftp 的用户

修改 /etc/vsftpd.user_list ,加入刚刚创建的用户,一行一个用户

sudo touch /etc/vsftpd.user_listsudo chmod a+w /etc/vsftpd.user_list

8、设置访问权限

防止用户下载可以通过以下两个途径:

(1)在vsftpd.conf中后面添加download_enable=NO(已经添加)

(2)修改local_umask=477,默认是=700,自动把上传的文件修改权限为“----r---w-”

9、禁止ftp用户具有删除文件的权利

(1)创建文件vsftpd_user_conf

mkdir -p /etc/vsftpd/vsftpd_user_conf

(2)编辑vsftpd_user_conf

vim /etc/vsftpd/vsftpd_user_conf/ftp

注意:后面的 ftp对应自己要限制权限的账户,此处我限制的是ftp 账户的权限

在里面写入下面的一句话,这句话的意思是 禁止使用 删除命令。

cmds_denied=DELE

10、重新打开配置文件

vim /etc/vsftpd/vsftpd.conf

然后添加

user_config_dir=/etc/vsftpd/vsftpd_user_conf

11 重启vsftpd 服务:

sudo systemctl restart vsftpd.service

至此配置vsftpd,并且设定用户的权限为只可上传,禁止下载和删除。

搭建FTP服务器,设置用户权限775 ,并只许上传、禁止下载和删除相关推荐

  1. win7 ftp服务器修改读写权限,局域网ftp服务器设置不同权限

    在计算机网络发展的短短几十年的时间里,信息共享一直伴随着我们,那么你知道局域网ftp服务器设置不同权限的方法吗?下面是学习啦小编整理的一些关于局域网ftp服务器设置不同权限的相关资料,供你参考. 什么 ...

  2. [CentOs7]搭建ftp服务器(3)——上传,下载,删除,重命名,新建文件夹

    摘要 上篇文章介绍了如何为ftp添加虚拟用户,本篇将继续实践如何上传,下载文件. 上传 使用xftp客户端上传文件,如图所示 此时上传状态报错,查看详情 从错误看出是应为无法创建文件造成的.那么我们就 ...

  3. Windows FTP 服务器实现只能上传不能下载或删除

    Windows FTP 服务器实现只能上传不能下载或删除 需求:在 Windows 系统上搭建一个 FTP 服务器,用于收发作业. 其中单独支持下载文件,或是上传文件的需求,比较容易实现.但是有一种需 ...

  4. Java实现ftp的上传、下载和删除

    前期准备 1. 搭建Ftp服务器 为了方便本地测试,一开始可以先在本地搭建Ftp服务器.搭建Ftp服务器的教程有很多,这里就不多讲了,下面是我用到的教程你们可以参考一下. 百度经验:Win10如何搭建 ...

  5. 3行代码实现ftp 上传、下载、删除操作集合

    为了帮助小伙伴们便捷操作ftp,现对常用的上传.下载.删除功能进行封装,小伙伴只需要传入需要的参数操作即可!告诉小伙伴好消息,本项目我已开源,大家可以根据需要克隆run起来!!! 文章目录 一.集合总 ...

  6. java实现ftp连接、登陆、上传、下载、删除文件、获取目录、文件列表

    全栈工程师开发手册 (作者:栾鹏) java教程全解 java实现ftp连接.登陆.上传.下载.删除文件.获取目录.文件列表等操作. 本地调试,首先需要在本机上开启ftp服务和ftp站点. 测试代码 ...

  7. C# FTP上传、下载、删除

    01 - FTP概述 文件传输协议(File Transfer Protocol,FTP)是用于在网络上进行文件传输的一套标准协议,作为一套古老的网络工具,在工业界有着及其广泛的应用.本节主要给大家演 ...

  8. java使用Jsch实现远程操作linux服务器进行文件上传、下载,删除和显示目录信息...

    1.java使用Jsch实现远程操作linux服务器进行文件上传.下载,删除和显示目录信息. 参考链接:https://www.cnblogs.com/longyg/archive/2012/06/2 ...

  9. winform实现FTP上传、下载、删除文件(附源码下载)

    一个用winform开发的FTP上传.下载.删除文件的简单列子: 配套源码下载:https://download.csdn.net/download/djk8888/10473477 注释尽可能详尽, ...

最新文章

  1. 求非线性方程组的最小二乘解的广义逆法C实现
  2. 用Express、MySQL搭建项目(接口以及静态文件获取、文件上传等)
  3. delphi socket 流的使用_Socket
  4. CMD下查询Mysql中文乱码的解决方法
  5. 插入排序--Java
  6. Composer报错Could not find a matching version of package解决方式
  7. Python 深度学习库 Keras 发布官方中文文档,这里有你需要了解的一切
  8. 京东11.11携手小米上线“信用试”服务 手机先试用满意再付款
  9. QT每日一练day24:绘画事件
  10. 《推荐系统笔记(六)》svd在推荐系统中的应用推广(FunkSVD,BiasSVD以及SVD++)及简单实战(surprise库)
  11. 机器视觉光源学习总结——平行背光源
  12. 读书笔记--精通CSS高级Web标准解决方案(一)---CSS基础
  13. android仿微信图片编辑库,Android仿微信朋友圈添加图片
  14. 1234的平方根用计算机怎么算,平方根计算
  15. 普通的dub的sdl配置
  16. 安卓日历每日提醒_Android日历事件管理器,是时候为你的APP增加一个事件提醒功能啦!...
  17. 前端 html 文字在 div 中怎么实现自动换行
  18. 盐城北大青鸟:Java的四大就业方向,薪资也是一级棒
  19. java读pdf一行_java 用itext解析一个pdf文件, 一行数据为一个对象,怎么解析
  20. 十万万个为什么|二维码支付为啥要限额?

热门文章

  1. 某月影视app全新修复版源码 附教程
  2. android p_Android P如何增加电池寿命
  3. 2020年最正规阳光的网赚项目:结合自动发卡平台操作虚拟资源项目
  4. 北理工电子课设通信电路——锁相频率合成器的设计
  5. 设计模式系列文章-1.设计模式的概述及UML图
  6. 搜索引擎中输入检索词到返回十条结果,发生了哪些事情
  7. 带你一起了解不同高楼玻璃幕墙清洗方式的成本价格
  8. POW'ER 2019大会精彩回顾,除了CSDN联手火星竞选Libra超级节点, 大咖们还说了啥?...
  9. 推荐软件:Quset PowerGUI
  10. 【二】2D测量 Metrology—— set_metrology_model_image_size()算子