linux 搭建FTP服务器

2023-05-16

FTP用于计算机之间通过网络进行文件传输。你可以通过FTP在计算机账户间进行文件传输,也可以在账户和桌面计算机之间传输文件,或者访问在线软件归档。

服务器条件:基于VM的Ubuntu虚拟机20.04

1、保证虚拟机处于联网状态,进入特权模式或者用sudo下载vsftpd

apt install vsftpd

2、配置vsftpd,输入以下命令进入vsftpd的配置文件

vim /etc/vsftpd.conf

对配置文件举例:

#这里以下的是对设置的介绍
# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().
# (Warning! chroot'ing can be very dangerous. If using chroot, make sure that
# the user does not have write access to the top level directory within the
# chroot)
#此后是可以选择的设置
#chroot_local_user=YES
#chroot_list_enable=YES

根据介绍判断是否需要开启该功能,若是开启的话将#chroot_local_user=YES改为chroot_local_user=YES即可,也就是删除前面的#(也可以直接写),以下是常用的一些:

# 禁止匿名用户anonymous登录
#anonymous_enable=NO
# 允许本地用户登录
#local_enable=YES
# 让登录的用户有写权限(上传,删除)
#write_enable=YES
# 默认umask
#local_umask=022
# 把传输记录的日志保存到/var/log/vsftpd.log
#xferlog_enable=YES
#xferlog_file=/var/log/vsftpd.log
#xferlog_std_format=NO
# 允许ASCII模式上传
#ascii_upload_enable=YES 
# 允许ASCII模式下载
#ascii_download_enable=YES
# 使用20号端口传输数据
#connect_from_port_20=YES
# chroot_local_user设置了YES,那么所有的用户默认将被chroot,
# 用户目录被限制在了自己的home下,无法向上改变目录。
# chroot_list_enable设置了YES,即让chroot用户列表有效。
# 如果chroot_local_user设置了YES,那么chroot_list_file
# 设置的文件里,是不被chroot的用户(可以向上改变目录)
# 如果chroot_local_user设置了NO,那么chroot_list_file
# 设置的文件里,是被chroot的用户(无法向上改变目录)
#chroot_list_enable=YES
# touch /etc/vsftpd/chroot_list 新建
#chroot_list_file=/etc/vsftpd/chroot_list
#use_localtime=YES
# 以standalone模式在ipv4上运行
listen=YES
# PAM认证服务名,这里默认是vsftpd,在安装vsftpd的时候已经创建了这个pam文件,
# 在/etc/pam.d/vsftpd,根据这个pam文件里的设置,/etc/vsftpd/ftpusers
# 文件里的用户将禁止登录ftp服务器,比如root这样敏感的用户,所以你要禁止别的用户
# 登录的时候,也可以把该用户追加到/etc/vsftpd/ftpusers里。
pam_service_name=vsftpd
# 重启 vsftpd
service vsftpd restart

下面是我设置的:


listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO
pasv_enable=Yes
pasv_min_port=10000
pasv_max_port=10100
allow_writeable_chroot=YES

3、更新防火墙

FTP服务默认是21号端口,这里我们开放20和21号端口(默认禁止FTP通信):

ufw allow from any to any port 20,21,10000:10100 proto tcp

4、重启vsftpd服务

service vsftpd restart

5、建立FTP服务器的用户

useradd -m ftpuser
passwd ftpuser
//第一次输入密码
New password: 
//第二次输入密码
Retype new password: 
//账户设置成功
passwd: password updated successfully

6、验证登录

将一个文件存入FTP服务器中(/home/ftpuser目录存放上传到服务器的文件):

//建立一个FTP-TEST文件,里面打印FTP TESTING字符串
bash -c "echo FTP TESTING > /home/ftpuser/FTP-TEST"

终端输入:

ftp:127.0.0.1    //可以将127.0.0.1换成本机IP

输入账户名和密码:

 这里由于我存入的文件有中文,在这里显示的乱码(未解决!!!!求解!!!!

 我们在Windows机上也可以访问,打开文件管理器-此电脑-快捷访问-ftp:ip地址

 这样我们就可以把服务器上的文件得到了!!!

总结:

       1、 FTP主要是用来下载一些文件,可以把本次设置的Linux服务器当作一个网盘存放文件,当然你要用FTP服务的话,服务器要联网(如果条件允许的话你可与租一台服务器)。

        2、vsftpd服务登录后中文乱码问题没有解决,我用FileZilla FTP Client软件进行传输,在站点管理器中设置了强制UTF-8字符集,在vsftp配置文件也开启了utf8_systemtype但依旧显示的乱码,求广大家人们给出有效解决意见(拜托!!!!)。

        

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linux 搭建FTP服务器 的相关文章

  • 为arm构建WebRTC

    我想为我的带有arm926ej s处理器的小机器构建webrtc 安装 depot tools 后 我执行了以下步骤 gclient config http webrtc googlecode com svn trunk gclient s
  • SSE:跨页边界的未对齐加载和存储

    我在页面边界旁边执行未对齐加载或存储之前读过某处 例如使用 mm loadu si128 mm storeu si128内在函数 代码应首先检查整个向量 在本例中为 16 个字节 是否属于同一页 如果不属于同一页 则切换到非向量指令 我知道
  • 在我的 index.php 中加载 CSS 和 JS 等资源时出现错误 403

    我使用的是 Linux Elementary OS 并在 opt 中安装了 lampp My CSS and JS won t load When I inspect my page through browser The console
  • 查找哪个程序运行另一个程序

    我有一个 NAS 运行在 Redhat Linux 的有限版本上 我按照指示破解了它 这样我就可以访问 shell 这很有帮助 我还做了一些修改 其他人也做过修改 除了一个问题之外 它们似乎都工作得很好 不知何故 每隔 22 天 系统就会关
  • Gtk-ERROR **:检测到 GTK+ 2.x 符号

    我正在使用 gcc 编译我的 c 应用程序 并使用以下标志 gcc evis c pkg config cflags libs gtk 2 0 libs clutter gtk 1 0 libs gthread 2 0 Wall o evi
  • 我不明白 execlp() 在 Linux 中如何工作

    过去两天我一直在试图理解execlp 系统调用 但我还在这里 让我直奔主题 The man pageexeclp 将系统调用声明为int execlp const char file const char arg 与描述 execl exe
  • 当 grep "\\" XXFile 我得到“尾随反斜杠”

    现在我想查找是否有包含 字符的行 我试过grep XXFile但它暗示 尾随反斜杠 但当我尝试时grep XXFile没关系 谁能解释一下为什么第一个案例无法运行 谢谢 区别在于 shell 处理反斜杠的方式 当你写的时候 在双引号中 sh
  • Linux - 从第二个选项卡获取文本

    假设我们有这样的文件 一些文本11 一些文本12 一些文本13 一些文本21 一些文本22 一些文本23 文本由制表符分隔 我们知道第 1 列中的一些文本 但希望从第 2 列中获取文本 我知道我可以通过以下方式获取线路 grep somet
  • 在两次之间每分钟执行一次 Cronjob

    我需要在 crontab 中每分钟运行一个 bash 脚本8 45am and 9 50am每天的 Code 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 8 home pull sh gt ho
  • 如何在c linux中收听特定接口上的广播?

    我目前可以通过执行以下操作来收听我编写的简单广播服务器 仅广播 hello int fd socket PF INET SOCK DGRAM 0 struct sockaddr in addr memset addr 0 sizeof ad
  • C++ Boost ASIO 简单的周期性定时器?

    我想要一个非常简单的周期性计时器每 50 毫秒调用我的代码 我可以创建一个始终休眠 50 毫秒的线程 但这很痛苦 我可以开始研究用于制作计时器的 Linux API 但它不可移植 I d like使用升压 我只是不确定这是否可能 boost
  • 如何构建任务“gems:install”

    我正在将 Rails 应用程序部署到 Linux 服务器 并且缺少一些 rake 任务 包括 rake gems install 和 rake db 我正在运行来自 GEM 的 Rails 2 3 4 为什么是这样 我该如何解决 我可以以某
  • 高效的内存屏障

    我有一个多线程应用程序 其中每个线程都有一个整数类型的变量 这些变量在程序执行期间递增 在代码中的某些点 线程将其计数变量与其他线程的计数变量进行比较 现在 我们知道在多核上运行的线程可能会无序执行 一个线程可能无法读取其他线程的预期计数器
  • 在 C++ linux 中将 STRINGS 写入串口

    我知道这个问题遍布互联网 但仍然没有任何东西能让我完全解决这个问题 我想用 C linux 将数据写入 Propeller 板的串行端口 从控制台获取输入时程序运行良好 但是当我向它写入字符串时总是返回 ERROR Invalid comm
  • 捕获实时流量时如何开启纳秒精度?

    如何告诉 libpcap v1 6 2 将纳秒值存储在struct pcap pkthdr ts tv usec 而不是微秒值 捕获实时数据包时 Note This question is similar to How to enable
  • 为什么我可以在 /proc/pid/maps 输出中看到几个相同的段?

    测试在32位Linux上进行 代码如下 int foo int a int b int c a b return c int main int e 0 int d foo 1 2 printf d n d scanf d e return
  • 无法在 Perl 中找到 DBI.pm 模块

    我使用的是 CentOS 并且已经安装了 Perl 5 20 并且默认情况下存在 Perl 5 10 我正在使用 Perl 5 20 版本来执行 Perl 代码 我尝试使用 DBI 模块并收到此错误 root localhost perl
  • 警告:请求的映像平台 (linux/amd64) 与检测到的主机平台 (linux/arm64/v8) 不匹配

    警告 请求的映像平台 linux amd64 与检测到的主机平台 linux arm64 v8 不匹配 并且未请求特定平台 docker 来自守护程序的错误响应 无法选择具有功能的设备驱动程序 gpu 我在 mac 上尝试运行此命令时遇到此
  • 使用 WebClient 在 PowerShell 脚本中将 FTP 从二进制更改为 ascii

    简单的 PowerShell 脚本 它可以毫无问题地下载文件 二进制 我需要它的ascii 格式 File c temp ftpfile txt ftp ftp myusername email protected cdn cgi l em
  • 每个命令都返回“bash:<命令>:找不到命令...”[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我刚刚安装了 Scala 并添加了路径gedit bashrc export SCALA HOME home avijit sca

随机推荐

  • 修改Win10右键菜单

    目录 前言一 Win10右键菜单类型二 删除第一种类型三 删除第二种类型更新 2023 4 17 一 关于7zip的右键选项过多二 补充几个右键菜单对应的名字 前言 在电脑装了很多软件后 xff0c 鼠标右键菜单选项也会变得特别多 xff0
  • xrdp完美实现Windows远程访问Ubuntu 16.04【包括多人桌面与原生桌面】

    xrdp完美实现Windows远程访问Ubuntu 16 04 前言 xff1a 在很多场景下 xff0c 我们需要远程连接到Linux服务器 本文是Ubuntu xff0c 传统的连接主要分为两种 第一种 xff1a 通过SSH服务 xf
  • SPI走线距离

    SPI总线的四根线中频率最高的CLK的时钟约系统主频的四分之一到二分之一之间 xff0c 约在5MHz到80MHz之间 xff0c 具体值需要看芯片的数据手册 如果芯片规定SPI的SCLK为20MHz xff0c 那么这个频率的波长是15米
  • Python使用Tesseract-OCR

    提示 xff1a 文章写完后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 文章目录 前言一 tesseract ocr是什么 xff1f 二 Tesseract OCR 安装和使用1 引入库2 配置环境变量3 P
  • STM32F030 PB1引脚无法置高问题的解决

    一开始初始化代码如下 xff1a RCC APB2PeriphClockCmd RCC AHBPeriph GPIOB ENABLE 使能端口时钟 GPIO InitStructure GPIO Pin 61 GPIO Pin 1 GPIO
  • C++中string末尾追加char字符

    如果想在C 43 43 中的string类型末尾追加char字符 xff0c s span class token operator 61 span s span class token operator 43 span span clas
  • VMware设置虚拟机系统和主机系统在同一个网段内访问网络设备

    需要说明的是 xff0c 若主机是有线的网口连接设备 xff0c 则主机先关闭无线网络再打开虚拟机系统 xff0c 虚拟机系统即可正常连接设备 然后主机若需要使用无线网络再打开无线网络即可
  • 视频转GIF太模糊了吗?我来教你使用FFmpeg生成高清GIF!!!

    有钱能使鬼推磨 xff0c 昨天40多个阅读 xff0c 没有一个人给我实在是太惨了 xff0c 所以 xff0c 再来个第二弹吧 xff01 那么这次的主题 xff0c 就是教你如何通过视频生成高清的GIF图片 xff01 xff01 恩
  • PHP实现自定义if条件、动态if条件判断(店铺会员卡等级规则判断的实现)

    首先抛出一个问题 xff1a span class token comment 前端输入的字符 span span class token variable logic span span class token operator 61 s
  • Mac地址、IP、子网掩码、网关、DNS

    MAC xff08 Media Access Control 介质访问控制 xff09 MAC地址是烧录在Network Interface Card 网卡 NIC 里的 MAC地址 也叫物理地址或硬件地址 是由48比特长 xff0c 16
  • CSRF修复——看完的你多了一把刷子

    近期项目对漏洞修复这一块比较看重 xff0c 例举下CSRF的修复之路吧 提到我就心累 1 CSRF是什么 CSRF xff08 Cross Site Request Forgery 跨站域请求伪造 xff09 是一种网络的攻击方式 xff
  • 数据结构课设

    项目1 xff1a 中国计算机设计大赛赛事统计 设计目标 xff1a 1 xff0c 能统计各学校的总分 2 xff0c 能按照学校编号或者名称 xff0c 将学校的总分或者各项目的总分排序输出 3 xff0c 能够按照编号查询学校某个项目
  • idea往项目中添加jar包

    1 xff0c 项目中没有lib包则自行创建 xff0c 名字设为lib xff08 项目中已经有lib包则直接进入2 xff09 xff1b 2 xff0c 将下载好的jar包拖入刚刚创建好的lib文件包中 xff1b 3 xff0c 右
  • Windows10如何向GitHub上传文件夹?

    1 首先创建GitHub的账号 xff0c 建立好你的仓库 2 找到你的仓库 xff0c 点击 code 后点击 HTTPS 并对内容进行复制 xff0c 如下图所示 xff1a 3 下载安装git xff0c 官网下载后一直next傻瓜安
  • centos7安装tomcat9

    一 首先需要安装好jdk 1 通过yum search java grep jdk查看支持的jdk软件包 2 yum install y java 1 8 0 openjdk 安装你想要的jdk软件包 3 查看是否安装成功java vers
  • Linux的优点和缺点

    Linux的优点 xff1a 1 稳定的系统 xff1a Linux是基于Unix发展出来的操作系统 xff0c 继承了Unix的稳定并有效率的特点 经常听到安装Linux的主机连续运作一年以上而不当机 不必关机是稀松平常的事 2 免费 x
  • Effective C++条款(第三版-侯杰译)

    条款一 xff1a 视C 43 43 为一个语言联邦 C 43 43 高效编程守则视情况而变化 xff0c 取决于你使用的C 43 43 哪一部分 条款二 xff1a 尽量以const xff0c enum xff0c inline替换 d
  • obj * volatile *my_free_list ;

    今天看STL源码分析看到的一句话 xff1a obj volatile my free list 首先我们要明白一件事 xff1a volatile是一个特征修饰符 xff08 type specifier xff09 volatile的作
  • Linux下搭建路由器

    客户端1 xff1a CentOS6 9 客户端2 xff1a CentOS7 3 路由器 xff1a router1 xff08 CentOS7 3 xff09 router2 xff08 CentOS7 3 xff09 r router
  • linux 搭建FTP服务器

    FTP用于计算机之间通过网络进行文件传输 你可以通过FTP在计算机账户间进行文件传输 xff0c 也可以在账户和桌面计算机之间传输文件 xff0c 或者访问在线软件归档 服务器条件 xff1a 基于VM的Ubuntu虚拟机20 04 1 保