linux搭建ftp

2023-11-06

ftp一些概念了解

Linux安装vsftpd及配置详解

  • 1、安装 yum -y install vsftpd

  • 2、FTP主动模式与FTP被动模式

  • 3、防火墙开启21端口

    • 文中是使用iptables开启的
    • 现在centos7.2版本默认是防火墙,开启方法为:
    永久开启ftp服务,ftp服务默认端口为21
    firewall-cmd --add-service=ftp --permanent 
    firewall-cmd --reload
    复制代码
  • 4.1、匿名登录(了解)

  • 4.2、本地用户登录(了解)

  • 4.3、虚拟用户登录(了解)

  • 5、修改selinux

  • 6、设置开机启动vsftpd服务

    systemctl enable vsftpd.service
    复制代码

/etc/vsftpd目录下配置文件讲解

ftp服务安装完后
以下是一些文件的位置约定: 
/usr/sbin/vsftpd ---- VSFTPD的主程序 
/etc/rc.d/init.d/vsftpd ---- 启动脚本 
/etc/vsftpd/vsftpd.conf ---- 主配置文件 
/etc/pam.d/vsftpd ---- PAM认证文件 
/etc/vsftpd.ftpusers ---- 禁止使用VSFTPD的用户列表文件 
/etc/vsftpd.user_list ---- 禁止或允许使用VSFTPD的用户列表文件 
/var/ftp ---- 匿名用户主目录 
/var/ftp/pub ---- 匿名用户的下载目录
复制代码

/etc/vsftpd目录下配置文件讲解

1、ftpusers

 #这里设置黑名单 加入这里的用户都无法访问
复制代码

2、user_list

 #控制配置,这个既可以是黑名单,也可以是白名单
当vsftpd.conf中 userlist_enable=YES 时,为黑名单,加入这里的用户无法访问
当vsftpd.conf中 userlist_enable=NO 时,为白名单,加入这里的用户才能访问
复制代码

3、vsftpd.conf 配置文件

重要,太多了,自己搜
复制代码

vsftpd 配置:chroot_local_user与chroot_list_enable详解

了解
复制代码

4、chroot_list

为VSFTP用户指定登录后的目录

重要,下面步骤用到
复制代码

FTP常见命令详解

当搭建完vsftpd服务后,要进行用户登录访问ftp测试(可在window cmd下测试,但是注意Windows cmd下ftp只能使用主动模式进行连接哦)。
如果有错误,使用cmd命令可以返回详细错误信息
(如我遇到的错误提示[vsftpd:500 OOPS: vsftpd: ...](https://www.cnblogs.com/zuikeol/p/9647048.html))
用网页、文件夹登录不给相关错误信息
复制代码

Linux搭建vsftpd服务步骤

需求

搭建ftp服务,并分发用户。

上传用户uploadexample : 可创建文件夹,上传文件,查看文件,不可删除文件

下载用户downloadexample : 可查看文件,下载文件,不可删除文件

搭建

方式一:本地用户

在服务器B搭建ftp服务,并开通用户 uploadexample ,并配置只能操作指定文件夹/home/uploadexample,进行上传资源操作。

1、yum安装好ftp服务

yum -y install vsftpd
systemctl start vsftpd.service
此时匿名用户登录等应该都能登录
systemctl enable vsftpd.service #在开机时启用服务
复制代码

2、/etc/vsftpd目录下修改vsftpd.conf 配置文件


anonymous_enable=NO #关闭匿名登录

#打开注释
chroot_list_enable=YES 
chroot_list_file=/etc/vsftpd/chroot_list

#添加下面
#https://www.cnblogs.com/zuikeol/p/9647048.html
allow_writeable_chroot=YES
#添加读取用户配置目录(注:本行配置默认没有需要手动输入)
user_config_dir=/etc/vsftpd/userconf

#开启被动模式及设置端口段
pasv_enable=YES
pasv_min_port=6990
pasv_max_port=7000

#开启防火墙对应端口 -- 这一步先不做,视情况而定
cd /usr/lib/firewalld/services/
cp mysql.xml ftp-PassiveMode.xml
vi ftp-PassiveMode.xml #手动配置服务管理端口
    #修改内容后如下:
    <?xml version="1.0" encoding="utf-8"?>
    <service>
      <short>ftp Passive Mode</short>
      <description>ftp Server Passive Mode </description>
      <port protocol="tcp" port="6990"/>
      <port protocol="tcp" port="6991"/>
      <port protocol="tcp" port="6992"/>
      <port protocol="tcp" port="6993"/>
      <port protocol="tcp" port="6994"/>
      <port protocol="tcp" port="6995"/>
      <port protocol="tcp" port="6996"/>
      <port protocol="tcp" port="6997"/>
      <port protocol="tcp" port="6998"/>
      <port protocol="tcp" port="6999"/>
      <port protocol="tcp" port="7000"/>
    </service>
firewall-cmd --reload #刷新
firewall-cmd --get-services | grep ftp-PassiveMode #确认一下
firewall-cmd --permanent --add-service=ftp-PassiveMode #加载服务,开启端口

复制代码

3、添加用户

为了安全,FTP用户一般是不能登录系统的。
在系统中,没有权限登录系统的用户一般也被称之为虚拟用户;虚拟用户也是要写进/etc
/passwd中;这只是一种虚拟用户的方法,但说实在的并不是真正的虚拟用户,只是把他登录SHELL的权限去掉了,所以他没有能力登录系统;
所以应该如下操作
新建用户:
# adduser -d /home/uploadexample -g ftp -s /sbin/nologin uploadexample //新建用户 
# passwd uploadexample //给用户设置密码
如果现存用户不用新建,另外要确定不在黑名单ftpusers(user_list-yes)中,
并且usermod命令设置这个用户不能登录系统
最后,确认一下配置文件vsftpd.conf ,以确保本地虚拟用户能有读写权限:
      local_enable=YES
      write_enable=YES
      local_umask=022

复制代码

4、用户ftp相关权限设置

chroot_list文件内容添加上用户uploadexample,一行一个用户,保存
# vi /etc/vsftpd/chroot_list 

建立用户配置目录
# mkdir /etc/vsftpd/userconf

建立用户登陆后的目录,也就是允许用户操作的目录 若存在不用创建
# mkdir /home/uploadexample

添加用户配置文件
注:有很多用户时,需要建每个用户相对应的文件
# vi /etc/vsftpd/userconf/uploadexample
 添加内容FTP用户登陆后指定的目录:
 local_root=/home/uploadexample 

复制代码

5、配置成功 重启ftp服务,并测试。

  • 553 Could not create file.错误的解决

      selinux打开的状态下,vsftp会出现本地用户无法上传的问题(可能是本地用户的home目录,或者是整个目录)
      错误信息为:
      553 Could not create file.
      要解决这个问题只要:
      1. setsebool -P ftpd_disable_trans 1
      2. systemctl restart vsftpd.service 
      就可以了
    复制代码

方式二:虚拟用户登录

目的:设置用户的上传、下载、删除权限

  • 1 创建虚拟用户的账号及密码
首先需要建立一个文本格式的用户名/密码列表文件,奇数行为用户名,偶数行为上一行中用户名所对应的密码。

#vi /etc/vsftpd/logins.txt
saupload
daka123
sadownload
daka456
saadmin
daka789
复制代码
生成数据库

# cd /etc/vsftpd (option)
# yum -y install db4* (option)
# db_load -T -t hash -f logins.txt vsftpd_login.db    

# file vsftpd_login.db  #查看转换后的文件类型
vsftpd_login.db: Berkeley DB (Hash, version 9, native byte-order)

# chmod 600 vsftpd_login.db  #修改数据文件访问权限

复制代码

查看vsftp登录认证数据库db文件内容的方法 /usr/bin/db_dump -d a /etc/vsftpd/vsftpd_login.db

另外,如果新增用户,重新新建包含新用户数据的txt文件,并运行db_load命令,就会将新用户数据加入搭配db文件中。删除数据未试。

  • 2 为虚拟用户创建PAM认证文件
新建pam:

# vi /etc/pam.d/vsftpd_login.pam //为虚拟用户创建PAM认证文件,文件名为vsftpd_login.pam
    auth    required    pam_userdb.so   db=/etc/vsftpd/vsftpd_login
    account    required        pam_userdb.so   db=/etc/vsftpd/vsftpd_login

//下面的vsftpd.conf中配置:
//pam_service_name=vsftpd_login.pam  //指定新的PAM认证文件

或在默认文件中修改
# vi /etc/pam.d/vsftpd
    //将里面其他的都注释掉,添加下面这两行:
    auth    required        pam_userdb.so   db=/etc/vsftpd/vsftpd_login
    account    required        pam_userdb.so   db=/etc/vsftpd/vsftpd_login
  
//下面的vsftpd.conf中配置:
//pam_service_name=vsftpd(指定PAM配置文件为在/etc/pam.d/下的vsftpd)

复制代码
  • 3 创建虚拟账号对应的系统用户
# useradd -d /home/ftpexample -s /sbin/nologin ftpexample 
//添加用户ftpexample,指定到新建的家目录,将虚拟用户对应到这个系统账号上,这个
账号无需设置密码及登录Shell (另外 如果用其他本地用户,那么该本地用户不能再用原来的账号密码登录了)

# chmod 755 /home/ftpexample/  
//调整权限以允许浏览目录

//下面的vsftpd.conf中配置:   
//guest_username=ftpexample      //指定映射的系统用户名称
  
复制代码
  • 4.修改主配置文件
# vi /etc/vsftpd/vsftpd.conf

anonymous_enable=no#禁用匿名用户登录
(anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_umask=022   //指定上传权限掩码)(option)

allow_writeable_chroot=YES#https://www.cnblogs.com/zuikeol/p/9647048.html
local_enable=YES#需映射本地用户,所以启用些项
write_enable=YES#启用上传写入支持
chroot_local_user=YES     
#将所有本地用户限制在家目录中,新建的用户必须设置家目录,example:adduser -d /home/uploadexample... 
#(或按照方式一种第二步设置相关用户限制目录:)

guest_enable=YES#启用映射功能
guest_username=ftpexample#指定映射的系统用户名称
pam_service_name=vsftpd_login.pam#指定新的PAM认证文件
user_config_dir=/etc/vsftpd/userconf#(自建配置)用户配置文件夹,需要创建 
max_clients=300#(自建配置)设置FTP服务器最大接入客户端数为300个 
max_per_ip=10#(自建配置)设置每个IP地址最大连接数为10个 

pasv_enable=YES#         //(自建配置)允许PASV模式进行数据传输 
pasv_min_port=65341#     //(自建配置)PASV模式下数据传输所使用port范围下界 
pasv_max_port=65351#     //(自建配置)PASV模式下数据传输所使用port范围上界
...
 
复制代码
  • 5.建立虚拟账户的配置文件
 # mkdir /etc/vsftpd/userconf (option)
 # cd /etc/vsftpd/userconf 
 
 创建相关用户配置文件
 # touch saupload
 # touch sadownload
 # touch saadmin
 
 配置文件内容,设置具体的权限:
 
 
 write_enable=YES 允许写入
 download_enable=NO 是否能下载
 anon_world_readable_only=NO 允许浏览FTP目录和下载
 anon_upload_enable=YES 允许虚拟用户上传文件
 anon_mkdir_write_enable=YES 允许虚拟用户创建目录
 anon_other_write_enable=YES 允许虚拟用户执行其他操作(如改名、删除)
 anon_umask=022 上传文件的掩码,如022时,上传目录权限为755,文件权限为644(例如供http访问)
 local_root=/ftproot/admin 指定虚拟用户的虚拟目录(虚拟用户登录后的主目录)

 # vi saupload  
    //可以:上传,创建文件夹, 查看下载文件 不能:删除,重命名
    anon_world_readable_only=NO
    anon_upload_enable=YES
    anon_mkdir_write_enable=YES
    
    //可以:上传,创建文件夹, 查看 不能:删除,重命名,下载文件
    anon_world_readable_only=NO
    anon_upload_enable=YES
    anon_mkdir_write_enable=YES
    download_enable=NO  
    
 # vi sadownload
    
    //只能查看下载文件
    anon_world_readable_only=NO
    
# vi saadmin
    
    //所有权限:上传,创建文件夹 查看下载文件 重命名 删除
    anon_world_readable_only=NO
    anon_upload_enable=YES
    anon_mkdir_write_enable=YES
    anon_other_write_enable=YES
复制代码
  • 重启服务,登录相关虚拟用户名密码,进行测试


作者:safiri
链接:https://juejin.cn/post/6844903940262199309
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

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

linux搭建ftp 的相关文章

  • Rclone笔记

    关于 rclone 在windows Linux上面得一些基本用法之前几篇文章介绍过 见 HomePage 官方文档 https rclone org commands 目录 一些简单命令 挂载 rclone命令 用自己的 api 进行 g
  • Putty基础教程之(一).入门命令学习及编写HTML

    这篇文章主要介绍Putty的基础用法 同时通过Putty来编辑HTML文件 一方面是自己最近学习的在线笔记 另一方面希望文章对你有所帮助 Putty是Windows下操作Linux命令的小工具 也是一个跨平台的远程登陆工具 非常好用 常见命
  • 9个Linux 查看系统硬件信息命令(实例详解)

    在Linux下 我们精要遇到需要查看系统的硬件信息 这里我罗列了查看系统硬件信息的实用命令 并做了分类 实例解说 执行环境 ubuntu 16 04 1 cpu lscpu命令 查看的是cpu的统计信息 root ubuntu home p
  • 这些 Shell 分析服务器日志命令集锦,收藏好

    自己的小网站跑在阿里云的ECS上面 偶尔也去分析分析自己网站服务器日志 看看网站的访问量 看看有没有黑阔搞破坏 于是收集 整理一些服务器日志分析命令 大家可以试试 1 查看有多少个IP访问 awk print 1 log file sort
  • 怎样查看Linux服务器配置

    1 前言 本文主要讲解如何查看Linux服务器配置 主要是查看服务器硬件配置 怎样查看Linux服务器配置 2 查看CPU信息 2 1 使用 lscpu 命令查看服务器CPU信息 lscpu 如下图 使用lscpu命令查看服务器CPU信息
  • 手把手教你ubuntu下移植MJPG-streamer

    一 嵌入式视频图像开源库 在嵌入式系统中 常用的视频图像处理开源系统有 luvcview cheese motion mjpg streamer或者ffmpeg 其中 luvcview 基于V4L2 SDL的程序 支持拍照录像 参数调节 代
  • Linux Tensorflow2.0安装

    安装Tensorflow2 0 conda update conda pip install tf nightly gpu 2 0 preview conda install https mirrors tuna tsinghua edu
  • 一款运行于windows上的linux命令神器-Cmder(用过后爱不释手)

    一 前言 很多工程师都习惯了使用linux下一些命令 再去用Windows的 cmd 简直难以忍受 要在windows上运行linux命令 目前比较流行的方式由 GunWin32 Cygwin WSL Bash on Windows Git
  • linux搭建ftp

    ftp一些概念了解 Linux安装vsftpd及配置详解 1 安装 yum y install vsftpd 2 FTP主动模式与FTP被动模式 3 防火墙开启21端口 文中是使用iptables开启的 现在centos7 2版本默认是防火
  • Linux内存占用分析的几个方法,你知道几个?

    0 引言 系统内存是硬件系统中必不可少的部分 定时查看系统内存资源运行情况 可以帮助我们及时发现内存资源是否存在异常占用 确保业务的稳定运行 例如 定期查看公司的网站服务器内存使用情况 可以确保服务器的资源是否够用 或者发现服务器内存被占用
  • ImportError: libopenblas.so.0: cannot open shared object file: No such file or directory

    安装OpenBLAS的步骤 1 下载最新的openblas git clone https github com xianyi OpenBLAS git 没有安装git 先安装git CentOS安装git yum install git
  • 多个项目引用,如何打包项目成为war,jar包

    原文链接 多个项目引用 如何打包项目成为war jar包 推荐导入项目 IDEA如何导入多个maven项目在pox引入自建包 那么我们导入了多个项目的依赖关系后 随之而来产生多个项目 那我们打包的时候 应该如何将其建在一个war或war包
  • 在Ubuntu 16.04 LTS服务器上安装FreeRADIUS和Daloradius的方法

    FreeRADIUS 为AAA Radius Linux下开源解决方案 DaloRadius为图形化web管理工具 freeradius一般用来进行账户认证管理 记账管理 常见的电信运营商的宽带账户 上网账户管理 记账 都是使用的radiu
  • Linux进程管理

    一 Linux下的进程 每个用户均可同时运行多个程序 为了区分每一个运行的程序 Linux给每个进程都做了标识 称为进程号 process ID 每个进程的进程号是唯一的 Linux 给每个进程都打上了运行者的标志 用户可以控制自己的进程
  • 如何重装Linux系统

    大家都知道我们平常所用的windows系统 可以很方便的重装系统 有U盘安装 还有光盘安装 那么我们在Linux下如何重装系统呢 其实和Windows下方法大同小异 如果你手上正好有个U盘的话 那就可以试试做一个USB Linux启动盘 它
  • 手把手教你安装MINIGUI编程环境 (MINIGUI版本3.2.0)

    0 MINIGUI MiniGUI 是一款面向嵌入式系统的高级窗口系统 Windowing System 和图形用户界面 Graphical User Interface GUI 支持系统 由魏永明先生于 1998 年底开始开发 2002
  • nginx重启命令

    nginx s reload 修改配置后重新加载生效 nginx s reopen 重新打开日志文件 nginx t c path to nginx conf 测试nginx配置文件是否正确 关闭nginx nginx s stop 快速停
  • Notepad++作死,国产文本编辑器Notepad--发布

    作死的Notepad Notepad 和 Notepad 都是基于 Windows 的文本编辑器 通常用于编写和编辑纯文本文件 这两个应用程序都是简单的轻量级程序 提供基本的文本编辑功能 Notepad 是一口君经常使用的一款文本编辑软件
  • Linux 基础知识

    一 从认识操作系统开始 1 1 操作系统简介 我通过以下四点介绍什么操作系统 操作系统 Operation System 简称OS 是管理计算机硬件与软件资源的程序 是计算机系统的内核与基石 操作系统本质上是运行在计算机上的软件程序 为用户
  • linux与线程

    1 1 1 进程 在早期 人们都是为特定机器编写程序 并在其上运行计算任务 task 渐渐的人们发现CPU与IO设备之间速度差太多了 往往CPU都在空转 是不是可以在CPU空闲的时候做些其他事呢 于是 就有了多任务 每个任务就是一个进程 有

随机推荐

  • vue ajax异步提交文件,vue中用ajax上传文件

    直接上代码 uploadCompany function event this file event target files let formdata new FormData formdata append file this file
  • 深度学习中常用的Adam算法

    一 Adam算法 Adam Adaptive momentum 是一种自适应动量的随机优化方法 A method for stochastic optimization 经常作为深度学习中的优化器算法 二 算法详细步骤 引用 三 Adam优
  • Java开发的模板引擎--freemarker

    模板引擎 freemarker 一 基础知识 1 1 模版引擎 1 2 关于freemarker 1 3 常用的java模版引擎 1 4 快速入门 1 4 1 指定了SpringBoot的版本 1 4 2 指定了pom xml文件依赖 1
  • dataframe将某列的空值填充为12

    工作中遇到某列数据中空值需要替换为12 df 支付周期 fillna 12 inplace True
  • 配置描述文件mobileconfig的生成

    为什么80 的码农都做不了架构师 gt gt gt 使用总结 http huodong kuaiyong com kymobile trust mobileconfig 可以把这个文件下载下来之后 借用一下 http app shouyou
  • CUDA矩阵乘法的优化

    本文以 深入浅出谈cuda 中矩阵乘法优化的部分为主线 体会cuda的并行执行过程 文章目录 1 实验环境 2 实验过程 2 1 初始版本 2 2 第一次改良 提高精度 2 3 第二次改良 使用共享内存 2 4 第三次改良 使用cudaMa
  • 四十七.快速排序C语言实现

    include
  • vim命令模式操作

    问题 以下所有操作都在命令模式进行 把 etc passwd文件 拷贝到 opt命名为nsd txt 对 opt nsd txt进行如下操作 切换到最后一行 切换到第一行 删除第二行 复制第一行到最后一行 查找root字符串 方案 本题主要
  • QRadioButton 选中/取消选中

    QRadioButton 选中的方法比较简单 ui gt radioButton gt setChecked true 取消选中怎么办 如果单纯使用 ui gt radioButton gt setChecked false 你会发现 然并
  • 写一个个人认为比较详细的adaboost算法

    最近在看机器学习中adaboost adaptive boostint 算法部分的内容 在csdn上面查找一番发现 好像没有讲的特别的详尽的 当然可能是我人品不佳 所以没有找到 为了防止同样的事情发生在其他人的身上 所以就写了这篇博文 尽量
  • 城堡争霸服务器维护,城堡争霸 - 阵营守护神(国际服)无法连接服务器是什么原因...

    城堡争霸 阵营守护神 国际服 无法连接服务器是什么原因 相信大家在玩城堡争霸 阵营守护神 国际服 的过程中 经常会遇到这样的问题 下面ourplay小编就简单为大家介绍几种常见的解决方案 城堡争霸 阵营守护神 国际服 游戏简介 城堡争霸 阵
  • Mac安装zmap

    安装 zmap官网地址 https github com zmap zmap brew install zmap 然后就可以试一下调用 zmap h 如果无法提示zmap 导入路径即可 echo export PATH PATH usr l
  • MATLAB中深度学习的多级神经网络构建

    创建一个简单的有向无环图 DAG 网络用于深度学习 训练网络对数字图像进行分类 layers imageInputLayer 28 28 1 Name input convolution2dLayer 5 16 Padding same N
  • python 数据全部显示,去掉中间省略号的终极办法

    data describe T 因为有省略号所以不能显示全 试了很多方法都不好用 包括 import numpy as np np set printoptions threshold np inf import pandas as pd
  • 推荐几个可以写到简历上的Go方向优质开源项目(需花点心思研究)

    前言 哈喽 大家好 我是asong 最近总有读者问我有没有Go语言方向优质的开源项目 可以写在简历上那种 一时还真想不起来 花了两天时间调研了一下 针对有无工作经验的分别推荐几个开源项目 下面我们一起来看一下 无工作经验 对于还在上学的朋友
  • java中怎么从一个数组中截取一定长度的元素放到新数组中

    可以直接用Arrays的静态方法copyOfRange int original int from int to 下面是一个简单的演示程序 1 2 3 4 5 6 7 8 9 10
  • mysql Navicat12约束条件的设置和详解

    文章目录 一 什么是mysql约束条件 1 1 说明 1 2 约束的分类 二 Navicat对应约束的设置位置 2 1 not null 非空约束 primary key 主建约束 default 默认约束 2 2 unique 唯一 2
  • OpenBSD 加速 下载安装

    OpenBSD 安装后需要安装其它软件时候 发现它要自动下载源文件 要不就手动下载 反正就是慢 我发现有个方法可以加快自动安装时候的下载 su root cat gt gt etc mk conf DISTDIR usr files dis
  • 字符串一次编辑

    一次编辑 字符串有三种编辑操作 插入一个字符 删除一个字符或者替换一个字符 给定两个字符串 编写一个函数判定它们是否只需要一次 或者零次 编辑 作者 LeetCode Solution 链接 https leetcode cn proble
  • linux搭建ftp

    ftp一些概念了解 Linux安装vsftpd及配置详解 1 安装 yum y install vsftpd 2 FTP主动模式与FTP被动模式 3 防火墙开启21端口 文中是使用iptables开启的 现在centos7 2版本默认是防火