FTP简要概述#
- FTP是在互联网上提供文件存储和服务访问的计算机服务
- 其可以在互联网上进行文件传输下载
VSFTP#
- VSFTP是一个基于GPL类unix系统上使用的FTP服务
- 其是一个安全高速稳定的FTP服务器
FTP监听端口#
- 端口20:用来传输数据
- 端口21:用来传输信道指令
FTP模式#
主动模式#
- FTP的客户端主动向服务端的21号端口发起请求,客户端随机开启一个端口(1024以上)发送port命令到服务端,告知服务端采用主动模式并且开放端口
- 当FTP服务端收到客户端的请求时候进行校验(用户名+密码之类的)校验通过则控制通道建立成功
- 服务度通过20号端口向客户端的空闲端口发起请求进行数据传输

被动模式#
- FTP客户端主动向FTP服务端21号端口发起请求连接
- 客户端通过pasv发送用户名+密码到服务端
- 服务端收到客户端发送来的用户信息进行校验 校验通过随机开启一个端口(大于1024)告知客户端
- 客户端向服务端开放端口进行数据传输

VSFTP搭建#
安装VSFTP#
Copy
[root@SR~]
[root@SR~]
[root@SR~]
配置文件位置#
Copy
[root@server ~]
[root@server ~]
[root@server ~]
[root@server ~]
[root@server ~]
服务搭建#
Copy
[root@server ~]
[root@server ~]
[root@client ~]

配置文件修改#
匿名用户访问#
Copy
[root@server ~]
[root@server vsftpd]
[root@server vsftpd]
anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
[root@server vsftpd]

Copy
[root@server vsftpd]
[root@server vsftpd]

Copy
[root@server vsftpd]
anon_other_write_enable=YES
[root@server vsftpd]

Copy
[root@server vsftpd]
[root@server vsftpd]
[root@server vsftpd]
[root@server vsftpd]
[root@server vsftpd]

用户名+密码#
Copy
'''
1:公司内部现在有一台 FTP 和 WEB 服务器, FTP 的功能主要用于维护公司的网站内容,包括上传文件、创建目录、更新网页等等
2:司现有两个部门负责维护任务,他们分别使用 ftpteam 和 webteam帐号进行管理。
3:先要求仅允许 ftpteam 和 webteam帐号登录 FTP 服务器,但不能登录本地系统,并将这两个帐号的根目录限制为/var/www/html,不能进入该目录以外的任何目录。
4:只允许ftpteam 和 webteam两用户 可以上传, vsftp 禁止匿名。
'''
[root@server vsftpd]
[root@server vsftpd]
[root@server vsftpd]
anonymous_enable=NO
local_enable=YES
local_root=/var/www/html
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
allow_writeable_chroot=YES
[root@server vsftpd]
[root@server vsftpd]
webteam
ftpteam
[root@server vsftpd]
[root@server vsftpd]
[root@server vsftpd]
[root@server vsftpd]

Copy
[root@server ~]

SSL+FTP#
Copy
[root@server ~]
[root@server vsftpd]
[root@server vsftpd]
[root@server vsftpd]
[root@server vsftpd]
ssl_enbale=YES
allow_anon_ssl=NO
force_anon_data_ssl=YES
force_anon_logins_ssl=YES
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlvs1=YES
ssl_sslv2=YES
ssl_sslv3=YES
require_ssl_reuse=NO
ssl_ciphers=HIGH
rsa_cert_file=/etc/vsftpd/.sslkey/vsftpd.pem
res_private_key_file=/etc/vsftpd/.sslkey/vsftpd.pem
[root@servervsftpd]
OpenSSL 简单参数解释:
req
x509
days
newkey
keyout
out
nodes

NFS#
- NFS即网络文件系统,网络问卷系统是FreeBSD支持的文件系统,也被称之为NFS
- NFS允许一个系统在一个网络内进行文件共享
- 通过NFS用户可以像访问本地文件一样访问远程文件系统
- 其基于C/S模式监听2049端口

RPC#
- NFS通过网络进行文件传输,默认使用端口2049,但是由于文件系统及其复杂还需要有额外的程序启动额外的端口
- NFS 默认使用传输的端口是随机选择的小于 1024 的端口。将端口告知客户端是需要依赖于 RPC( remote procedure call, RPC)协议。
- 当 NFS 服务启动时,会随机选取数个端口,并向 RPC 注册,因此 RPC 就可以知道每个端口对应的NFS功能。
- RPC 最主要的功能就是指定每个 NFS 功能所对应的端口号,并告知客户端。以便客户端连接至正确的端口号。
安装启动NFS#
Copy
[root@server ~]
[root@server ~]
[root@server ~]
[root@server ~]
[root@server ~]
配置使用#
Copy
[root@client ~]

文件挂载#
Copy
[root@server ~]
/media *(rw)
[root@server ~]
[root@client ~]
[root@client ~]
[root@server ~]
1.1.1.1:/media /mnt nfs defaults 0 0

验证效果#
Copy
[root@client ~]
touch: 无法创建"/mnt/a.txt": 权限不够
[root@server ~]
drwxr-xr-x. 8 root root 2048 9月 12 2019 /media/
[root@server ~]
[root@server ~]
[root@client ~]
[root@server ~]
[root@client ~]

NFS共享参数#
NFS共享的常用参数
Copy
'''
以下是一些 NFS 共享的常用参数:
ro #只读访问。
rw #读写访问。
sync #资料同步写入到内存与硬盘当中。
async #资料会先暂存于内存当中,而非直接写入硬盘。
secure #NFS 通过 1024 以下的安全 TCP/IP 端口发送。
insecure #NFS 通过 1024 以上的端口发送。
wdelay #如果多个用户要写入 NFS 目录,则归组写入(默认)。
no_wdelay #如果多个用户要写入 NFS 目录,则立即写入,当使用 async 时,无需此设置。
hide #在 NFS 共享目录中不共享其子目录。
no_hide #共享 NFS 目录的子目录。
subtree_check #如果共享/usr/bin 之类的子目录时,强制 NFS 检查父目录的权限(默认)。
no_subtree_check #和上面相对,不检查父目录权限。
all_squash #共享文件的 UID 和 GID 映射匿名用户 anonymous,适合公用目录。
no_all_squash #保留共享文件的 UID 和 GID(默认)。root_squash #root 用户的所有请求映射成如 anonymous 用户一样的权限(默认)。
no_root_squash #root 用户具有根目录的完全管理访问权限。
选项使用方法示例:
[root@SR ~]# cat /etc/exports
/tmp/a/no_root_squash *(rw,no_root_squash)
/tmp/a/sync 192.168.0.0/24(rw,sync)
/tmp/a/ro 192.168.1.64(ro)
/tmp/a/all_squash 192.168.0.0/24(rw,all_squash,anonuid=500,anongid=500)
/tmp/a/async 192.168.3.0/255.255.255.0(async)
/tmp/a/rw 192.168.3.0/255.255.255.0(rw) 192.168.4.0/255.255.255.0(rw)
/tmp/a/root_squash *(rw,root_squash)
'''
客户端挂载参数优化#
客户端挂载参数的优化
Copy
'''
NFS 客户端挂载参数的优化:
NFS 高并发环境下的服务端重要优化( mount -o 参数)。
async:异步同步,此参数会提高 I/O 性能,但会降低数据安全(除非对性能要求很高,对数据可靠
性不要求的场合。一般生产环境,不推荐使用)。
noatime:取消更新文件系统上的 inode 访问时间,提升 I/O 性能,优化 I/O 目的,推荐使用。
nodiratime:取消更新文件系统上的 directory inode 访问时间,高并发环境,推荐显式应用该选
项,提高系统性能。
intr:可以中断不成功的挂载。
rsize/wsize:读取( rsize) /写入( wsize)的区块大小( block size),这个设置值可以影响客户
端与服务端传输数据的缓冲存储量。一般来说,如果在局域网内,并且客户端与服务端都具有足够的内
存,这个值可以设置大一点,比如说 32768( bytes) ,提升缓冲区块将可提升 NFS 文件系统的传输能
力。但设置的值也不要太大,最好是实现网络能够传输的最大值为限。
'''
内核优化#
内核优化
Copy
'''
root@server ~]# vim /etc/sysctl.conf #修改/etc/sysctl.conf,在文件最后添加如
下。
net.core.wmem_default = 8388608 #内核默认读缓存
net.core.rmem_default = 8388608 #内核默认写缓存
net.core.rmem_max = 16777216 #内核最大读缓存
net.core.wmem_max = 16777216 #内核最大写缓存
[root@xuegod63 ~]# sysctl -p #使用 sysctl.conf 文件内的参数生效,执行命令输出
的结果中的参数代表生效。
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
'''
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!