我们在日常使用 UbuntuServer 服务器时,经常会直接使用基于 ssh 的  sftp 连接服务器直接进行文件上传和下载,不过这个方式其实有一定的安全隐患,当一个团队有多个人员,需要连接服务器去发布时,如果使用 ssh 则意味着需要将系统的 账户和密码 告知对方,别人就不仅拥有了 sftp 的连接权限,同时也拥有了 ssh 的连接权限,意味着可以直接登陆服务器,而且 对方使用 sftp 登陆之后可以看到服务器上全部的文件,这显示是不符合预期的,我们要的仅仅是给对方提供一个 ftp 文件上传下载的权限,并且最好能够限定到具体的目录。

针对上面的痛点,我也百度看过不少解决方案,有人说可以 通过配置 账户的 shell ,比如 /usr/sbin/nologin 来实现 账户禁止 ssh 登陆,只保留 sftp 权限,然而我按照多个文章的教程,进行反复操作之后,发现这样的配置确实禁止对应账户远程登陆 ssh 了,但是,,,sftp 也连不上了,,所以在反复实验之后,选择放弃,这时回归最原始的点,想想我需要的是一个ftp服务来提供文件上传下载的方法,为何不直接独立配置 ftp 服务,顺着这个思路,我找到了 Linux Server 下非常优秀的一款软件  vsftpd,这款软件 支持  ftp, ftps(隐式加密), ftpes(显示加密) ,可以完美解决我们的需求,接下来开始我们的正文,在 Ubuntu Server 配置 vsftpd 实现不同通过账户,指向不同的文件夹,并且禁用账户的 shell 登陆功能。

sudo apt-get update   #刷新软件源信息

sudo apt-get vsftpd    #安装 vsftpd

sudo vim /etc/vsftpd.conf   安装好之后开始编辑配置文件,进行如下几项的调整,有些配置项在配置文件中本来存在,修改对应的值即可,有些则不存在需要手动编写,在操作的时候小伙伴要注意

listen=YES                            #开启监听 ipv4 地址

listen_ipv6=NO                    #关闭监听 ipv6 地址,ipv4 和 ipv6 不可以同时监听,否则会无法启动

chroot_local_user=YES        #限定用户只能操作主目录

write_enable=YES                #开启文件写入功能

ssl_enable=YES                    #开启 ssl 加密功能,默认为 ftpes 显示加密

ssl_tlsv1=YES                       #开启 tlsv1 加密支持,默认为 tlsv1

ssl_sslv2=YES                       #开启 sslv2 协议支持

ssl_sslv3=YES                       #开启 sslv3 协议支持

implicit_ssl=YES                   #指定ssl 加密方式为隐式加密(该项开启之后 ftp 工作于 ftps 隐式加密模式下,ftps 模式端口默认为 990,需要特意指定端口为 990,如果不开启则,不需要修改端口)

listen_port=990                    #设定ftp服务端口 (默认情况不需要指定端口值,implicit_ssl=YES 时才需要该端口配置,个人推荐使用隐式加密,连接更加稳定)

file_open_mode=0777         #配置 用户默认上传的文件权限为 0777

pasv_min_port=6000           #被动连接模式 最小端口

pasv_max_port=7000          #被动连接模式最大端口

pasv_enable=YES                 #启用被动连接模式

pasv_address=x.x.x.x           #服务器对应的外部IP地址(云服务器,这里一定要填写外网ip地址,如果在内网中使用这边,这行配置可以直接注释)

经过上面的调整,vsftpd 模块就算配置完成了,大家可能在百度的时候可能会看到别人还要配置其他很多选项,但是那些其实没必要了,vsftpd 的默认配置,在加上我们上面的调整就相对来说比较完美了,下面介绍三个 vsftpd 的常用命令。

sudo service vsftpd start         #启动 vsftpd

sudo service vsftpd restart     #重启 vsftpd

sudo service vsftpd stop        #停止 vsftpd

vsftpd服务安装完成之后,就可以创建账户来进行测试,我们今天教大家的方法,账户是基于系统账户来配置的,操作如下:

vim /etc/shells       #编辑系统 shell 规则,加入静止登陆的 shell 规则,追加在文件最后一行即可

/usr/sbin/nologin    #屏蔽 ssh 登陆

sudo useradd xiaoming      #创建用户xiaoming

sudo passwd xiaoming        #修改用户 xiaoming 的密码

sudo usermod -d /var/www xiaoming        #为xiaoming 指定账户主目录

sudo chmod 555 /var/www        #去除主目录的可写权限 (vsfpd在 chroot_local_user=YES 禁止默认的登陆目录拥有可写权限,如果拥有则会无法登陆)

sudo usermod -s /usr/sbin/nologin xiaoming        #屏蔽xiaoming对于系统的 ssh 登陆权限    如果要重新放开登陆权限,执行 sudo usermod -s /bin/bash xiaoming

这样一来我就创建了一个账户xiaoming,该账户无法使用 ssh 连接系统,但是支持 ftp 登陆系统,ftp 登陆系统之后默认就会进入 ubuntu 中 nginx 默认的网站目录  /var/www ,这个其实就是我们配置的主目录,大家可以根据自己需求自己调整,主目录地址。客户端这时候可以进行连接测试,客户端推荐使用 FileZilla 创建一个站点,注意 协议选择 ftp,加密方式 选择 要求隐式的 FTP over TLS,如下图:

FileZilla 这时候应该就可以连接到我们 ftp 服务器了,这时候各位如果进行文件上传动作,应该会全部失败,因为我之前设定了主目录的权限为 555,意味着没有任何的可写权限,所以我们需要 在 服务器上提前创建好子目录,以方便我们使用,操作如下:

sudo mkdir /var/www/www.xxxx.com            #创建一个文件夹用于存放 www.xxxx.com 的文件

sudo chmod 777 /var/www/www.xxxx.com        #调整创建的文件夹权限为 777

这时候我们重新刷新 ftps 应该就可以看到我们创建的  www.xxxx.com 这个文件夹了,点击进入这个文件夹,然后进行文件上传下载删除动作就会发现全部都可以正常操作了。

ubuntu 使用 vsftpd 基于系统用户配置相互隔离的 ftp (ftps) 服务的更多相关文章

  1. vsftpd系统用户配置详解

    1.安装yum -y install pam pam-devel db4 de4-devel db4-uitls db4-tclyum -y install vsftpd 新建vsftpd系统用户:u ...

  2. Vsftpd完全攻略(三)基于系统用户支持ftp上传 访问和vsftp安全设置

    原文链接:http://viong.blog.51cto.com/844766/261342 1.关闭匿名用户登录 ftp支持匿名登录是不安全,所以要禁止匿名ftp登录 在/etc/vsftpd/vs ...

  3. 一个可以让vsftpd启动系统用户登陆ftp的例子

    编辑 /etc/vsftpd.conf 如下: listen=YES anonymous_enable=NO local_enable=YES check_shell=NO write_enable= ...

  4. 在Ubuntu上为Android系统的Application Frameworks层增加硬件访问服务(老罗学习笔记5)

    在数字科技日新月异的今天,软件和硬件的完美结合,造就了智能移动设备的流行.今天大家对iOS和Android系统的趋之若鹜,一定程度上是由于这两个系统上有着丰富多彩的各种应用软件.因此,软件和硬件的关系 ...

  5. 在Ubuntu上为Android系统的Application Frameworks层增加硬件访问服务

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6578352 在数字科技日新月异的今天,软件和硬 ...

  6. 在Ubuntu上为Android系统的Application Frameworks层增加硬件访问服务【转】

    本文转载自:http://blog.csdn.net/luoshengyang/article/details/6578352 在数字科技日新月异的今天,软件和硬件的完美结合,造就了智能移动设备的流行 ...

  7. CentOS 6.8 ftp服务安装配置 基于本地用户和虚拟用户

    CentOS 6.8 ftp服务安装配置 基于本地用户和虚拟用户 一.安装ftp服务 1.检查是否已经安装 # rpm -qa | grep ftp ftp-0.17-54.el6.x86_64 vs ...

  8. VSFTPD虚拟用户配置

    转载:http://www.cnblogs.com/allenjin/archive/2011/12/03/2274542.html 以下操作验证OK!!!! VSFTPD虚拟用户配置 VSFTP = ...

  9. 烂泥:ubuntu下vsftpd虚拟用户配置

    本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我微信ilanniweb. 以前搭建vsftpd都是在centos下,本以为在ubuntu按照以前的步骤搭建即可.可 ...

随机推荐

  1. python 入门 之 Json 序列化

    开发网站,离不了Json 但是一般情况,不支持python的其它对象,怎么办? 有办法:Json 序列化!!! 总体来说,需要序列化的数据类型为 字典,类,嵌套类. 下面是我做的一个demo,都包含了 ...

  2. 通过Java HTTP连接将网络图片下载到本地

    通过Java HTTP连接将网络图片下载到本地   只知道浏览器使用的是HTTP协议,那么如何将网络资源使用JavaHTTP下载下来呢! 这只是一个非常简单的小示例,只是不想每次碰到关于此方面的内容忘 ...

  3. Floyd-例题-实现-我的第一篇博客

    https://www.cnblogs.com/lbssxz/p/11014911.html 这是网上看到的题目,以上是原博主的解答和题目来源(没找到别的题目来源) 题目大意: 城市交通费 [问题描述 ...

  4. 【Server】Windows系统安装Tomcat服务器

    安装Tomcat服务器 Tomcat服务器地址:https://tomcat.apache.org/download-80.cgi 当前版本点选8以上版本,最新的可能不稳定,所以选8或者9版本 直接解 ...

  5. EFCore.Sharding(EFCore开源分表框架)

    EFCore.Sharding(EFCore开源分表框架) 简介 引言 开始 准备 配置 使用 按时间自动分表 性能测试 其它简单操作(非Sharing) 总结 简介 本框架旨在为EF Core提供S ...

  6. Linux/UNIX 下终端复用利器 tmux

    简介 tmux 是一个终端复用器类自由软件,功能类似 GNU Screen,但使用 BSD 许可发布.用户可以通过 tmux 在一个终端内管理多个分离的会话,窗口及面板,对于同时使用多个命令行,或多个 ...

  7. 用threejs 实现3D物体在浏览器展示

    用threejs 实现3D物体在浏览器展示,通过鼠标平移,缩放,键盘箭头按钮左右移动等功能展示. <!DOCTYPE html> <html> <head> < ...

  8. stand up meeting 12/28/2015

    part 组员                今日工作              工作耗时/h 明日计划 工作耗时/h    UI 冯晓云   解决生词本显示[阅读页面]的滑动条和PDF的滑动条冲突 ...

  9. O - Navigation System CodeForces - 1321D

    题目大意:有一个导航系统,会根据你当前的位置,规划到目的地的最短路线,给你一个有向图,和一条行驶路径,问你导航重新规划路径的最大次数和最小次数. 读题的时候题意特别不理解,何为最大次数,何为最小次数? ...

  10. PHP函数:array_rand

    array_rand()  - 从数组中随机取出一个或多个单元. 说明: array_rand ( array $array [, int $num = 1 ] ) : mixed 参数: array ...