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

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,并且设定用户的权限为只可上传,禁止下载和删除。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/547519.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mongodb replicaset shard 集群性能测试

2019独角兽企业重金招聘Python工程师标准>>> mongodb支持自动分片的功能,并且可以让数据尽可能地均匀分布在各个节点上,本身支持横向扩展。 1,环境搭建 此次性能测试对象为mongodb的replicaset自动分片功能,集群拓扑…

entity framework使用技巧

1、无需先查询数据的修改方法 // 将创建的data实体添加到ObjectContextdb.Data.Attach(data);// 手动设置状态为修改 db.ObjectStateManager.ChangeObjectState(data, EntityState.Modified);db.SaveChanges(); 2、嵌套Action(页面) Html.Action("l…

一维离散小波c语言,《二维离散小波分解的C语言实现》》-毕业论文.doc

PAGE高等教育自学考试毕业论文(设计)题 目: 二维离散小波分解的C语言实现摘 要小波变换用于图像处理是小波变换应用效果比较突出的领域之一。由于图像是二维信号,因此首先需要把小波变换由一维推广到二维。本文在一维离散Mallat算法的基础上&#xff0c…

基于Python的开源人脸识别库,离线识别率高达99.38%

使用 dlib 顶尖的深度学习人脸识别技术构建,在户外脸部检测数据库基准(Labeled Faces in the Wild benchmark)上的准确率高达 99.38%。 这也提供了一个简单的 face_recognition 命令行工具,你可以打开命令行中任意图像文件夹&…

打油诗

嫁人不嫁造船郎,一年四季总在忙,春夏秋东不见面,回家一包臭衣裳!我是一个造船郎,背井离乡在外闯,白天累得腿发软,晚上仍为资料忙;思乡痛苦心里藏,四海漂泊习为常&#xf…

entity framework不查数据库修改或排除指定字段集合通用方法

其中DataDBEntities为数据库实体对象,代码如下: 下载地址:http://files.cnblogs.com/stone_w/EFDBHelper.zip using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Reflection;using System.D…

去马赛克神器 JavPlayer TG Modle 最新版

本帖最后由 cyberim 于 2019-8-28 22:13 编辑 -----知识点----- Mosaic的原理就是将1个像素的颜色填满一个小区域,所以在平面图片上是无法还原的--简单说就是单一图片的Mosaic不可逆! 但是…如果是Mosaic影片的话,一个Mosaic方格的中心点就会是一个原始影…

jQuery日期和时间插件(jquery-ui-timepicker-addon.js)中文破解版使用

简介 jQuery UI Datepicker日期选择插件很好用了,只不过只能精确到日,不能选择时间(小时分钟秒)很遗憾,而jquery-ui-timepicker-addon.js正是基于jQuery UI Datepicker的一款可选时间的插件。 官网地址:h…

Linux服务之httpd基本配置详解

当今主流的开源Web服务器软件有httpd(Apache),lighttpd,nginx,thttpd等,而httpd是迄今为止使用量多的web服务器,据统计目前httpd的全球占有量是47%左右,虽然有所下降但是使用两仍然是最多的,统计web服务器使用率的网站是&#xff…

超松弛迭代法解线性方程组c语言,超松弛迭代法解线性方程组.doc

PAGEPAGE 2姓名:___________________________设计题目:超松弛迭代法解线性方程组专业:摘要本文是在matlab环境下熟悉的运用计算机编程语言并结合超松弛变量超松弛迭代法的理论基础对方程组求解。首先,本文以微分方程边值问题为例,导出了离散化后线性方程…

Meidapipe 3D手势姿态跟踪算法,手机端实时检测 ,多个手势同时捕捉

Ubuntu安装MediaPipe 1. github下载Meidapipe代码2. [安装Bazel](https://docs.bazel.build/versions/master/install-ubuntu.html)3. Install OpenCV and FFmpeg4. 安装在Linux desktop运行需要的工具5. 运行Hello World desktop example安装Android SDK和NDK 1. 安装[Android…

android新建工程横屏,华为MatePad Pro构建的安卓平板横屏生态有何不同?来看看

在过去很多年中,Android 平板或者说 Android大屏设备一直受限于 Android生态的限制,无法发挥出本应具备的大屏使用体验,也正是因为这个原因,Android平板电脑一直被当做娱乐设备。在去年11月25日,华为正式发布了主打生产…

Flutter笔记:Web支持原理与实践

Flutter笔记 Web支持原理与实践 作者:李俊才 (jcLee95):https://blog.csdn.net/qq_28550263 邮箱 :291148484163.com CSDN:https://blog.csdn.net/qq_28550263/article/details/135037756 华为开发者社区…

设置MAC 下 Vim 语法高亮显示

一:终端进入 cd /usr/share/vim/ 二: sudo vim vimrc 三:添加 syntax enablesyntax on 四:保存退出 转载于:https://www.cnblogs.com/cocoajin/p/3284604.html

外部服务发现之 ingress(一) traefik 的安装使用

Ingress其实就是从 kuberenets 集群外部访问集群的一个入口,将外部的请求转发到集群内不同的 Service 上,其实就相当于 nginx、haproxy 等负载均衡代理服务器,有的同学可能觉得我们直接使用 nginx 就实现了,但是只使用 nginx 这种…

ASP.NET MVC 3发布报错(ASP.NET MVC 3在没有安装环境的服务器上运行)的解决方案

前言 ASP.NET MVC 3在没有安装MVC3的环境的服务器上运行,就会报错,缺少引用,本文就为mvc3发布报错的解决方案。 解决方案 思路:提供ASP.NET MVC 3运行所需的的dll即可解决报错问题。 1、项目添加ASP.NET MVC 3的引用&#xff…

android 切换字体崩溃,androidx - 在Android 10 / Android Q上使用捆绑的ttf字体时崩溃 - 堆栈内存溢出...

将我的Android应用的目标级别从28更新为29(Android 10)后,该应用在Pixel 3(使用Android 10)上崩溃了。使用的版本Android Gradle插件3.5.0摇篮5.5.1问题:这是一个已知问题吗?细节崩溃发生在使用不同标签(TextView,androidx.appcom…

vsftp socket 报错

FTP显示数据 Socket 错误: 连接超时解决数据Socket错误及连接后为什么列表错误的解决方法 [右] 正打开数据连接 IP: 192.168.1 端口: 2226[右] 数据 Socket 错误: 连接被拒[右] 列表错误[右] PASV[右] 227 Entering Passive Mode (192,168,1,1,8,183)[右] 正打开数据连接 IP: 1…

Android Button 单击事件

方法一&#xff1a;在XML文件中指定 单击事件函数 <Button android:id"id/button1" android:layout_width"120dip" android:layout_height"wrap_content" android:layout_alignParentLeft"…

Python破解滑块验证码算法,完美避开人机识别

| 完美是不可能的&#xff0c;加个震惊&#xff01;Python破解BiliBili滑块验证码&#xff0c;完美避开人机识别&#xff0c;可以有 准备工作 B站登录页 https://passport.bilibili.com/loginpython3pip install selenium &#xff08;webdriver框架&#xff09;pip install P…