FTP服务器使用及配置

news2024/11/25 4:51:42

vsftp安装配置

环境配置

  • 服务端:CentOS 7.6 vsftpd

  • 客户端:Windows 10 xftp

服务端

yum -y install epel-release.noarch

 yum -y install vsftpd* pam* db4*


systemctl restart vsftpd

#修改配置前备份文件
[root@node1 ~]# cd /etc/vsftpd/
[root@node1 vsftpd]# ls
ftpusers  user_list  vsftpd.conf  vsftpd_conf_migrate.sh
[root@node1 vsftpd]# cp vsftpd.conf{,.bak}
[root@node1 vsftpd]# ls
ftpusers  user_list  vsftpd.conf  vsftpd.conf.bak  vsftpd_conf_migrate.sh
   
#查看配置文件
[root@node1 vsftpd]# cat vsftpd.conf | grep -v ^#
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES

pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES


vsftpd配置匿名用户

编辑配置文件

[root@node1 vsftpd]# vi vsftpd.conf

write_enable=YES
anon_umask=022    
anonymous_enable=YES 
anon_upload_enable=YES
anon_mkdir_write_enable=YES   
anon_other_write_enable=YES   
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

常用匿名配置项

anonymous_enable=YES # 是否允许匿名用户访问
anon_umask=022 # 匿名用户所上传文件的权限掩码
anon_root=/var/ftp # 设置匿名用户的FTP根目录
anon_upload_enable=YES # 是否允许匿名用户上传文件
anon_mkdir_write_enable=YES # 是否允许匿名用户允许创建目录
anon_other_write_enable=YES # 是否允许匿名用户有其他写入权
(改名,删除,覆盖)
anon_max_rate=0 # 限制最大传输速率(字节/秒)0为
无限制

重启服务

[root@node1 vsftpd]# systemctl restart vsftpd
[root@node1 vsftpd]# ps aux | grep  vsftpd
root      91454  0.0  0.0  53180   576 ?        Ss   11:54   0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
root      91738  0.0  0.0 112724   988 pts/0    S+   11:55   0:00 grep --color=auto vsftpd

注意关闭防火墙

一键关闭防火墙和SELinux脚本

#!/bin/bash

# 关闭防火墙
echo "正在关闭防火墙..."
sudo systemctl stop firewalld
sudo systemctl disable firewalld
echo "防火墙已关闭并禁用。"

# 检查 SELinux 状态
sestatus=$(sestatus | grep "SELinux status" | awk '{print $3}')

if [ "$sestatus" == "enabled" ]; then
    # 关闭 SELinux
    echo "正在关闭 SELinux..."
    sudo setenforce 0
    sudo sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
    echo "SELinux 已关闭。"
else
    echo "SELinux 已经处于禁用状态,无需操作。"
fi

echo "脚本执行完毕。"

[root@node1 ~]# vi script
[root@node1 ~]# chmod u+x script 
[root@node1 ~]# ./script 
正在关闭防火墙...
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
防火墙已关闭并禁用。
正在关闭 SELinux...
SELinux 已关闭。
脚本执行完毕。

修改权限实现文件上传

[root@node1 ~]# cd /var/ftp/
[root@node1 ftp]# ls
pub
[root@node1 ftp]# ll
总用量 0
drwxr-xr-x. 2 root root 6 69 2021 pub
[root@node1 ftp]# chown -R ftp.ftp pub/
[root@node1 ftp]# ll
总用量 0
drwxr-xr-x. 2 ftp ftp 6 69 2021 pub           
 
#记住重启服务生效
[root@node1 ftp]# systemctl restart vsftpd


#使用xftp尝试上传与下载文件

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

配置用户登录

配置系统用户登录

#新建两个用户并设置密码
[root@node1 ~]# useradd admin1
[root@node1 ~]# useradd admin2


  • 修改配置文件
 vi /etc/vsftpd/vsftpd.conf

local_enable=YES
local_umask=077
chroot_local_user=YES
allow_writeable_chroot=YES
write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
userlist_deny=NO
tcp_wrappers=YES
  • 常用配置
local_enable=YES # 是否允许本地系统用户访问
local_umask=022 # 本地用户所上传文件的权限掩码
local_root=/var/ftp # 设置本地用户的FTP根目录
chroot_list_enable=YES # 表示是否开启chroot的环境,默认
没有开启
chroot_list_file=/etc/vsftpd/chroot_list # 表示写
在/etc/vsftpd/chroot_list文件里面的用户是不可以出chroot环境的。默认是可以的。
Chroot_local_user=YES # 表示所有写
在/etc/vsftpd/chroot_list文件里面的用户是可以出chroot环境的,和上面的相反。
local_max_rate=0 # 限制最大传输速率(字节/秒)0为
无限制
  • 添加用户白名单
[root@node1 vsftpd]# vi /etc/vsftpd/user_list 
[root@node1 vsftpd]# cat /etc/vsftpd/user_list | grep admin
admin1
admin2
   #重启服务
[root@node1 vsftpd]# systemctl restart vsftpd


  • 测试
#新建文件
[root@node1 ~]# cd /home/admin1
[root@node1 admin1]# touch test.txt
[root@node1 admin1]# systemctl restart vsftpd


在这里插入图片描述

在这里插入图片描述

配置虚拟用户

  • 创建虚拟FTP用户账号

    [root@node1 ~]# useradd -s /sbin/nologin vu
    
    
  • 创建虚拟用户目录

[root@node1 ~]# useradd -s /sbin/nologin vu
[root@node1 ~]# cd /etc/vsftpd/
[root@node1 vsftpd]# ls
ftpusers  user_list  vsftpd.conf  vsftpd.conf.bak  vsftpd_conf_migrate.sh
[root@node1 vsftpd]# vi user
[root@node1 vsftpd]# cat user
test
123456

  • 创建数据文件
[root@node1 vsftpd]# db_load -T -t hash -f user user.db
 [root@node1 vsftpd]# ls
ftpusers  user  user.db  user_list  vsftpd.conf  vsftpd.conf.bak  vsftpd_conf_migrate.sh


  • 建立支持虚拟用户的PAM认证文件
[root@node1 vsftpd]# vi /etc/pam.d/vsftpd.vu 

auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/user
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/user

  • 修改配置文件
[root@node1 vsftpd]# vi vsftpd.conf


write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
userlist_enable=YES
tcp_wrappers=YES
allow_writeable_chroot=YES
guest_enable=YES
guest_username=vu
pam_service_name=vsftpd.vu
local_enable=YES
local_umask=077
chroot_local_user=YES
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/user_dir
[root@node1 vsftpd]# mkdir /etc/vsftpd/user_dir
[root@node1 vsftpd]# ls
ftpusers  user  user.db  user_dir  user_list  vsftpd.conf  vsftpd.conf.bak  vsftpd_conf_migrate.sh
[root@node1 vsftpd]# cd user_dir/
[root@node1 user_dir]# vi test   
[root@node1 user_dir]# cat test
cal_root=/etc/vsftpd/data # 虚拟用户数据的存放路径





  • 创建虚拟用户数据存放目录
[root@node1 user_dir]# cd ..
[root@node1 vsftpd]# mkdir data
[root@node1 vsftpd]# chmod 777 data/

  • 重启服务后登录测试
systemctl restart vsftpd
[root@node1 data]# touch a.txt
[root@node1 data]# pwd
/etc/vsftpd/data

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/740788.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Eclipse调整系统字体(亲测)

1. 打开eclipse的菜单栏windows->preferences 2. 选择General->Appearance->colors and fonts 3. 选择字号,Apply,ok 建议选择常规18号,这样对眼睛友好一些,不易太大太小 为了大家更好的学习交流,博主新建了v…

算法训练营第三十五天||860.柠檬水找零 ● 406.根据身高重建队列 ● 452. 用最少数量的箭引爆气球

860.柠檬水找零 这道题自己不看答案能自己做出来 class Solution { public:bool lemonadeChange(vector<int>& bills) {if(bills[0]10 || bills[0]20) return false;int fivenum 0;int tennum 0;int tewentynum 0;for(int i 0;i<bills.size();i){if(bills[…

Hyper-V 虚拟机安装Ubuntu

Hyper-V 是win自带的虚拟机软件&#xff0c; 免费 进入控制面板&#xff0c;启用功能 勾选Hyper-V 然后重启电脑 打开 Hyper-v快速创建 此处可能需要 science surf network&#xff0c;否则创建虚拟机按钮为灰色 选择合适的版本&#xff0c;点击右下角的创建虚拟机进行安装&a…

【云时代数据利器】奥威BI SaaS版:一键链接云星空,套用百张报表

SaaS模式可以有效加快部署、提高效率、降低成本、提高灵活性&#xff0c;因此广受欢迎。随着市场的需求以及SaaS模式的广为人知&#xff0c;SaaS BI正逐渐成为BI的未来趋势之一&#xff0c;正逐渐成为云时代数据分析利器。奥威BI SaaS版和金蝶云星空标准方案强强联合&#xff0…

C++学习 结构体

目录 结构体 结构体定义和使用 结构体数组 结构体指针 结构体嵌套结构体 结构体做函数的参数 结构体中const使用场景 结构体 结构体定义和使用 定义&#xff1a; 结构体属于用户自定义的数据类型&#xff0c;允许用户存储不同的数据类型。 语法&#xff1a; struct 结构体…

day4 qtqtqtc++

cppcpp ui代码 <?xml version"1.0" encoding"UTF-8"?> <ui version"4.0"><class>Widget</class><widget class"QWidget" name"Widget"><property name"geometry"><rec…

Linux--获取与杀死当前进程PID

获取当前进程的代码&#xff1a; #include <sys/types.h>pid_t idgetpid();//获取的是自己的进程PID 杀死当前进程的指令&#xff1a; kill -9 进程的PID 我要是kill -9 16865(-bash进程)&#xff0c;你会发现无论你输入clear、ls、还是vim...指令&#xff0c;都无…

云深处绝影四足机器人协议学习解析

绝影四足机器人通信协议学习解析 本学习文档介绍了云深处 绝影X20 四足机器人的通信协议&#xff0c;并对相关的通信机制和命令格式进行了简单的解析。该协议在机器人系统和上位机&#xff08;例如外部板卡或系统&#xff09;之间进行TCP通信时使用。 1. 协议端口号 在此协议…

定义一个派生自D1的D2类,并且在D2中覆盖pvf();建立一个D2类的对象并且调用f()、vf()、pvf()

运行代码&#xff1a; //定义一个派生自D1的D2类&#xff0c;并且在D2中覆盖pvf() //建立一个D2类的对象并且调用f()、vf()、pvf() #include"std_lib_facilities.h" //---------------------------------------------------------------------- //定义B1类。 class …

配置通过域名访问网站(NETBASE第七课)

1 DNS服务器 域名系统_百度百科 域名和与之相对应的IP地址转换的服务器 DNS&#xff08;Domain Name Server&#xff0c;域名服务器&#xff09;是进行域名(domain name)和与之相对应的IP地址 (IP address)转换的服务器。DNS中保存了一张域名(domain name)和与之相对应的IP地…

通过GitHub Desktop,将本地项目上传到gitee上

介绍 这里主要介绍&#xff0c;通过 gitHub Desktop 软件&#xff0c;将本地的项目&#xff0c;上传到 gitee的仓库里&#xff08;这里仓库为新建的仓库&#xff0c;什么东西都没有&#xff09;。 这里主要介绍&#xff0c;仓库的新建方式&#xff0c;及本地代码上传到远端的操…

Unity 实现一个揭面膜效果

源码 using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI;

【Django】列表页面的搜索功能

目的 页面列表增加多字段搜索显示查询结果 方案 分页显示搜索结果 效果 实现 列表页面 # list.html <div class"pull-left" style"margin-bottom: 10px"><form action"{% url api-search %}" method"get"><div …

ModaHub魔搭社区:开源向量数据库的Milvus怎么读?

Milvus是一个中文词语,意为“Milvus navigate,为智慧找方向,为价值做链接,为创作者做伙伴”。在读这个词语时,可以按照以下方式发音: 首先,我们需要将Milvus这个词语分解成多个音节。根据汉语拼音的规则,可以将其分解为“mi”、“lu”、“su”。 接下来,我们需要根…

Java阶段五Day03

Java阶段五Day03 文章目录 Java阶段五Day03回顾git命令Git远程仓库远程仓库概念远程仓库分支操作分支管理策略 回顾git命令 本地版本控制 git initgit addgit commitgit loggit statusgit taggit refloggit reset 分支管理 git branchgit branch b1git checkout b1git merg…

C#核心知识回顾——13.多线程、预处理器指令

1.多线程 了解线程前先了解进程 进程&#xff08;Process&#xff09;是计算机中的程序关于某数据集合上的一次运行活动 是系统进行资源分配和调度的基本单位&#xff0c;是操作系统结构的基础 说人话&#xff1a;打开个应用程序就是在慢作系统上开启了一个进程 进程之间可以相…

【Vscode】解决 An SSH installation couldn‘t be found

【Vscode】解决 An SSH installation couldn‘t be found 背景描述&#xff1a;在vscode中使用ssh进行连接到时候&#xff0c;已经安装了ssh romote的plugin插件&#xff0c;但是在输入了ssh连接命令之后&#xff0c;仍然出现报错&#xff1a;an ssh installation could not be…

vue3+mapboxgl鼠标浮动显示cgcs2000

一、需求 鼠标在地图中浮动展示地图的经纬度&#xff0c;cgcs2000 xy 还有显示带号 二、实现效果 展示经度&#xff0c;纬度&#xff0c;x值&#xff0c;y值显示的是带号和y值 三、思路 3.1、mapbox获取经纬度方法 初始化地图后.on方法中有个mousemove方法 mapboxUtil._m…

leetcode:递增的三元子序列

递增的三元子序列 题解部分转自leetcode:Xzz medium 给你一个整数数组 nums &#xff0c;判断这个数组中是否存在长度为 3 的递增子序列。 如果存在这样的三元组下标 (i, j, k) 且满足 i < j < k &#xff0c;使得 nums[i] < nums[j] < nums[k] &#xff0c;返回…

专享策略06 | 盘口策略CTP实盘版

量化策略开发&#xff0c;高质量社群&#xff0c;交易思路分享等相关内容 『正文』 ˇ 大家好&#xff0c;我们在6月29日发布了盘口策略| 回测版&#xff0c;今天我们做好了CTP的实盘版本供俱乐部会员使用和玩耍&#xff0c;今天主要说明一下如何使用CTP实盘版本。 先回顾一…