ubuntu 使用 vsftpd 基于系统用户配置相互隔离的 ftp (ftps) 服务
我们在日常使用 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) 服务的更多相关文章
- vsftpd系统用户配置详解
1.安装yum -y install pam pam-devel db4 de4-devel db4-uitls db4-tclyum -y install vsftpd 新建vsftpd系统用户:u ...
- Vsftpd完全攻略(三)基于系统用户支持ftp上传 访问和vsftp安全设置
原文链接:http://viong.blog.51cto.com/844766/261342 1.关闭匿名用户登录 ftp支持匿名登录是不安全,所以要禁止匿名ftp登录 在/etc/vsftpd/vs ...
- 一个可以让vsftpd启动系统用户登陆ftp的例子
编辑 /etc/vsftpd.conf 如下: listen=YES anonymous_enable=NO local_enable=YES check_shell=NO write_enable= ...
- 在Ubuntu上为Android系统的Application Frameworks层增加硬件访问服务(老罗学习笔记5)
在数字科技日新月异的今天,软件和硬件的完美结合,造就了智能移动设备的流行.今天大家对iOS和Android系统的趋之若鹜,一定程度上是由于这两个系统上有着丰富多彩的各种应用软件.因此,软件和硬件的关系 ...
- 在Ubuntu上为Android系统的Application Frameworks层增加硬件访问服务
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6578352 在数字科技日新月异的今天,软件和硬 ...
- 在Ubuntu上为Android系统的Application Frameworks层增加硬件访问服务【转】
本文转载自:http://blog.csdn.net/luoshengyang/article/details/6578352 在数字科技日新月异的今天,软件和硬件的完美结合,造就了智能移动设备的流行 ...
- CentOS 6.8 ftp服务安装配置 基于本地用户和虚拟用户
CentOS 6.8 ftp服务安装配置 基于本地用户和虚拟用户 一.安装ftp服务 1.检查是否已经安装 # rpm -qa | grep ftp ftp-0.17-54.el6.x86_64 vs ...
- VSFTPD虚拟用户配置
转载:http://www.cnblogs.com/allenjin/archive/2011/12/03/2274542.html 以下操作验证OK!!!! VSFTPD虚拟用户配置 VSFTP = ...
- 烂泥:ubuntu下vsftpd虚拟用户配置
本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我微信ilanniweb. 以前搭建vsftpd都是在centos下,本以为在ubuntu按照以前的步骤搭建即可.可 ...
随机推荐
- Python 1基础语法四(数字类型、输入输出汇总和命令行参数)
一.数字(Number)类型 python中数字有四种类型:整数.布尔型.浮点数和复数. int (整数), 如 1, 只有一种整数类型 int,表示为长整型,没有 python2 中的 Long. ...
- kubernates常用命令
Kubernetes常用操作命令 kubectl log //查看日志 $ kubectl log myapp-pod –c test kubectl get pods查看pod列表 [root@n ...
- scala_spark实践4
SparkStreaming中foreachRDD SparkStreaming是流式实时处理数据,就是将数据流按照定义的时间进行分割(就是“批处理”).每一个时间段内处理的都是一个RDD.而Spar ...
- Python 中如何查看进行反汇编
dis模块 Python 反汇编是通过 dis 这个模块来查看的,一般有两种方式可以用来查看 方式一: 在命令行中使用 dis 查看 >>> def test ...
- 抠脚大叔如何改变性别,Python实现变声器功能
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 乔柯 PS:如有需要Python学习资料的小伙伴可以加点击下方链接 ...
- Xor Path 牛客,HPU--C--LCA
题解: 题目要求求出u和v两点在最短路径上的异或和.怎么确定最短路径呢?,就是U到LCA(u,v)的路径加上V到LCA(u,v).根据异或的性质,如k^a^a=k,即异或一个值两边等于原数值. 所以维 ...
- PHP常量:JSON_UNESCAPED_UNICODE
函数: json_encode() - 对变量进行 JSON 编码 说明: json_encode ( mixed $value [, int $options = 0 [, int $depth = ...
- JDBC教程——检视阅读
JDBC教程--检视阅读 参考 JDBC教程--W3Cschool JDBC教程--一点教程,有高级部分 JDBC教程--易百 JDBC入门教程 – 终极指南 略读 三层架构详解,JDBC在数据访问层 ...
- python 基础篇 匿名函数
匿名函数基础 首先,什么是匿名函数呢?以下是匿名函数的格式: lambda argument1, argument2,... argumentN : expression 我们可以看到,匿名函数的关键 ...
- Youtube推荐算法的前世今生
第一阶段,基于User-Video图游历算法,2008年[1]. 在这个阶段,YouTube认为应该给用户推荐曾经观看过视频的同类视频,或者说拥有同一标签的视频.然而此时,YouTube的视频已是数千 ...