Ubuntu中FTP安装配置及基本概念(原创)
注:本文出自博主 Chloneda:个人博客 | 博客园 | Github | Gitee | 知乎
本文源链接:https://www.cnblogs.com/chloneda/p/ftp-install.html
安装
用apt-get工具安装vsftpd
$ sudo apt-get install vsftpd
检查FTP端口是否已经打开
$ netstat -tnl 或 ps -ef | grep ftp
检查FTP服务是否开启
$ service vsftpd status
如果FTP服务已经开启,则会显示如下信息,由Active关键词可知FTP服务正在运行

FTP启动、停止、重启、查看状态的三种方式。
$ service vsftpd start|stop|restart|status
$ systemctl start|stop|restart|status vsftpd
$ /etc/init.d/vsftpd start|stop|restart|status|reload
reload为重新加载配置文件
配置
修改FTP配置文件
$ sudo vi /etc/vsftpd.conf
FTP主要配置
主要配置说明:
# 设置登录FTP欢迎信息
ftpd_banner=Welcome to CHL FTP service.
# 基本配置1
listen=YES # 服务器监听
local_enable=YES # 是否允许本地用户访问
write_enable=YES # 是否允许上传文件,不开启会报 550 permission denied
anonymous_enable=NO # 匿名访问允许,默认不要开启
anon_upload_enable=YES # 匿名上传允许,默认是NO
anon_mkdir_write_enable=YES # 匿名创建文件夹允许
# 基本配置2
local_umask=022 # FTP上本地的文件权限,默认是077。此时umask为022,则目录为777-022=755,文件为666-022=644。
dirmessage_enable=YES # 进入文件夹允许
connect_from_port_20=YES # 启用20号端口作为数据传送的端口
data_connection_timeout=120 # 设置数据连接超时时间
# 日志配置
utf8_filesystem=YES # vsftpd使用utf8文件系统
use_localtime=YES
xferlog_enable=YES # 激活上传和下传的日志
xferlog_file=/var/log/vsftpd.log # 设定系统维护记录FTP服务器上传和下载情况的日志文件
xferlog_std_format=YES # 使用标准的日志格式
# 自定义
local_root=/share/vsftpd # 设置自定义的ftp根目录的位置
# 读写权限
allow_writeable_chroot=YES # 解决"500 OOPS: vsftpd: refusing to run with writable root inside chroot()" 问题
write_enable=YES # 允许向FTP服务器写入权限
chown_uploads=YES # 设定是否允许改变上传文件的属主,与下面一个设定项配合使用
chown_username=whoever # 设置想要改变的上传文件的属主,可设为ftp
ascii_upload_enable=YES # 允许服务器以ASCII方式传输数据,但引起"SIZE /big/file"方式的DoS攻击
ascii_download_enable=YES
deny_email_enable=YES # 黑名单设置。如果很讨厌某些email address,可以取消他的登录权限
banned_email_file=/etc/vsftpd.banned_emails
# FTP限制最大连接数和传输速率,进行资源控制,避免负担过大而运行异常
max_client=50 # FTP服务器的所有客户端最大连接数不超过50个
max_per_ip=5 # 同一IP地址的FTP客户机与FTP服务器建立的最大连接数不超过5个
local_max_rate=100000 # FTP服务器的本地用户最大传输速率设置为100KB/s.
anon_max_rate=50000 # FTP服务器的匿名用户最大传输速率设置为50KB/s.
# 权限设置
#是否启动userlist为禁止模式,YES表示在userlist中的用户禁止登录ftp(黑名单),NO表示黑名单失效
userlist_deny=NO
userlist_enable=NO # 是否启动限制用户的名单为允许模式,上面的YES限制了所有用户,可以用这个名单作为白名单,作为例外允许访问ftp根目录以外
userlist_file=/etc/vsftpd.user_list
# 在默认配置下,本地用户登入FTP后可以使用cd命令切换到其他目录,这样会对系统带来安全隐患,可配置如下
chroot_list_enable=YES # 设置是否启用chroot_list_file配置项指定的用户列表文件。默认值为NO。
chroot_local_user=YES # 用于指定用户列表文件中的用户是否允许切换到上级目录。默认值为NO。
chroot_list_file=/etc/vsftpd.chroot_list # 禁用名单,用于指定用户列表,该文件用于控制哪些用户可以切换到home目录的上级目录。
通过搭配能实现以下几种效果
当chroot_list_enable=YES,chroot_local_user=YES时,在/etc/vsftpd.chroot_list文件中列出的用户,可以切换到其他目录;未在文件中列出的用户,不能切换到其他目录。
当chroot_list_enable=YES,chroot_local_user=NO时,在/etc/vsftpd.chroot_list文件中列出的用户,不能切换到其他目录;未在文件中列出的用户,可以切换到其他目录。
当chroot_list_enable=NO,chroot_local_user=YES时,所有的用户均不能切换到其他目录。
当chroot_list_enable=NO,chroot_local_user=NO时,所有的用户均可以切换到其他目录。
配置正确后可浏览器或终端输入以下信息访问
ftp://服务器IP # 浏览器方式访问
$ ftp 服务器IP # 终端方式访问
也可以通过浏览器这样访问。
ftp://用户名:密码@IP/具体FTP路径 # 如:ftp://vsftpd:vsftpd@192.167.2.20/chl
修改默认端口
默认FTP服务器端口号是21,出于安全目的,有时需修改默认端口号,编辑/etc/vsftpd.conf文件。
listen_port=6666
重新指定了FTP服务器的端口号,需重启服务使配置生效,并利用终端访问。
$ /etc/init.d/vsftpd restart
$ ftp 服务器IP 6666
注:端口号需正确,否则连接失败。
设置FTP目录
创建FTP根目录,需与配置文件一致。
$ mkdir -p /share/vsftpd
创建FTP用户
$ sudo useradd -g vsftpd -d /share/vsftpd -m test
命令参数说明:
- g:用户所在的组
- d:指定FTP目录
- m:不建立默认家目录
设置FTP用户密码
$ sudo passwd vsftpd
编辑/etc/vsftpd.chroot_list文件,将vsftpd的帐户名添加进去,保存退出,并重启FTP服务。
卸载
当我们不需要FTP时,可以卸载FTP并删除FTP用户。
$ sudo apt-get remove --purge vsftpd # purge 选项表示彻底删除改软件和相关文件
删除FTP用户
$ sudo userdel vsftpd
常用命令
路径切换
FTP可以定位服务器与本地硬盘的路径。其中使用 lcd 命令切换宿主机本地路径,命令如下:
$ lcd 目录名 # 进入宿主机目录
而用 cd 命令切换远程服务器的路径,命令如下:
$ cd 目录名 # 进入FTP服务器目录
说到这里,得说说 ! 命令的作用,在FTP中!会执行宿主机shell命令,如:
$ !cmd [args] # 在宿主机中执行交互shell,exit回到FTP环境,例:
$ !dir 或 !ls
或如果不加!,显示FTP服务器当前目录内容,如:
$ dir 或 ls
此外,ftp命令支持"含有空格"的文件夹/文件名,即在引用时加上双引号""。
下载文件
- get:一次只下载一个文件。
- mget:一次可以下载多个文件,而且支持通配符。
上传文件
- send: 上传一个文件。
- put:上传一个文件。
- mput: 上传多个文件。
其他命令
其实FTP命令的核心就是善用 help 或 ? 查看具体命令的含义,例如:
ftp> help 或 ?
可利用 ? [cmd] 或 help [cmd] 查看具体命令含义,如图。

有时侯我们会对多个文件进行操作,此时需要对每一个文件都选择y/n,挺麻烦的!可用prompt命令关掉交互方式。
prompt off # 关闭
prompt on # 打开
其他信息
参考资料
vsftpd最详细的配置文件
Ubuntu中FTP安装配置及基本概念(原创)的更多相关文章
- 阿里云Ubuntu 16 FTP安装配置注意事项
1. 开放端口设置 阿里云控制台添加"安全组规则". 1) 21: FTP端口; 2) 15000~15100: 对应vsftpd.conf 自定义配置. (重要!) pasv_e ...
- Angularjs学习---ubuntu12.04中karma安装配置
Angularjs学习---ubuntu12.04中karma安装配置中常见的问题总结 karma启动时出现了很多问题: 1.安装karma前提条件 安装karma首先要安装nodejs,npm然 ...
- 海外ubuntu,lamp,ftp,phpmyadmin配置
海外ubuntu,lamp,ftp,phpmyadmin配置 1. 更换源 1.1 clean /etc/apt/sources.list file 1.2 Ubuntu Sources List G ...
- FTP 安装配置
FTP 安装配置: 一.基础操作 yum install -y ftp yum install -y vsftpd service iptables stop chkconfig iptables o ...
- Ubuntu下apache2安装配置(内含数字证书配置)
Ubuntu下apache2安装配置(内含数字证书配置)安装命令:sudo apt-get updatesudo apt-get install apache2 配置1.查看apache2安装目录命令 ...
- Ubuntu 18.04安装配置Apache Ant
Ubuntu 18.04安装配置Apache Ant 文章目录 Ubuntu 18.04安装配置Apache Ant 下载 执行以下命令 `/etc/profile`中配置环境变量 载入配置 测试 执 ...
- Linux中redis安装配置及使用详解
Linux中redis安装配置及使用详解 一. Redis基本知识 1.Redis 的数据类型 字符串 , 列表 (lists) , 集合 (sets) , 有序集合 (sorts sets) , 哈 ...
- Xdebug在PHP中的安装配置
Xdebug在PHP中的安装配置涉及php.ini配置文件的修改. 1 首先需要下载Xdebug,根据安装的PHP版本,选择合适的Xdebug版本, 2 安装Xdebug将下载的php_xdebu ...
- ubuntu中mysql安装失败
在ubuntu中mysql安装失败后,卸载重新安装还是安装失败,之后找了资料说是卸载的不干净,然后进行下面操作,重新安装成功. 解决办法如下: sudo rm /var/lib/mysql/ -Rsu ...
随机推荐
- Codeforces 1087B Div Times Mod(数学+暴力)
题意: 求(x div k) * (x mod k) = n的最小解x,保证有解 1<=n<=1e6, k<=1000,1s 思路: 注意到k的范围是1e3, 1<=x mod ...
- 一台电脑上配置多个git的ssh key
前几天公司的代码库全部迁移到了阿里云上,在配置git的ssh key的时候遇到了一个问题,那就是自己的密钥在添加时提示已经存在,原来是自己的个人账号上已经添加过这个密钥了,公司分配的账号就不能再添加这 ...
- java设计模式7——桥接模式
java设计模式7--桥接模式 1.桥接模式介绍 桥接模式是将抽象部分与它的实现部分分离,使他们都可以独立的变化.它是一种对象结构型模式,又称为柄体模式或接口模式. 2.解决问题 2.1.将复杂的组合 ...
- num06---代理模式
代理模式,比较好理解,关键点就是,被代理类 和 代理类 实现同一个接口,接口中定义着想要实现的被代理的方法,在代理类中引入 被代理类 对象, 最后直接调用代理类的方法即可实现代理功能.
- Android Spinner 下拉框简单应用 详细注解
目录 Android Spinner 代码部分 Spinner代码介绍 核心代码 说在最后 @ Android Spinner Spinner 提供下拉列表式的输入方式,该方法可以有效节省手机屏幕上的 ...
- CVE-2019-0232:Apache Tomcat RCE复现
CVE-2019-0232:Apache Tomcat RCE复现 0X00漏洞简介 该漏洞是由于Tomcat CGI将命令行参数传递给Windows程序的方式存在错误,使得CGIServlet被命令 ...
- python xlrd操作
python里面的xlrd模块详解(一) 那我就一下面积个问题对xlrd模块进行学习一下: 1.什么是xlrd模块? 2.为什么使用xlrd模块? 3.怎样使用xlrd模块? 1.什么是xlrd模 ...
- 关于开源,Git,Github
在Github和Git上fork之简单指南 https://linux.cn/article-4292-1.html,中文翻译 https://www.dataschool.io/simple-gui ...
- k8s系列---资源指标API及自定义指标API
不得不说千万不要随意更改版本,我用的1.13的版本,然后学到这一步时,还因yaml文件不同,卡住了很久,然后各种google才找到解决办法 https://www.linuxea.com/2112. ...
- Windows2008R2搭建共享存储服务器
说明: 为了方便公司个部门软件.项目.文档等资料的归档和保存,实现公司内部资料共享及重要资料备份,防止因个人计算机系统故障或硬件故障导致数据丢失而造成数据无法恢复的损失,特建立共享服务器 1.在共享服 ...