基本服务 FTP & SMB

基本服务 FTP & SMB

前言:

FTP简称为文件传输协议 前面说的 他可以做到备份的功能 那么它可以做到文件传输的过程 smb 我们简单来说 共享文件夹

NFS

NFS(Network File System,网络文件系统)是一种分布式文件系统协议,允许不同计算机之间通过网络共享文件和目录,使远程文件系统像本地文件系统一样被访问。它最初由 Sun Microsystems 开发,现在已成为 UNIX/Linux 系统中常用的网络文件共享方案。

NFS 的主要特点:
  • 透明性:用户无需知道文件实际存储在远程服务器,操作方式与本地文件一致。
  • 跨平台性:支持 UNIX、Linux、macOS 等系统,Windows 也可通过插件支持。
  • 高效性:采用无状态设计,服务器不保存客户端状态,降低了服务器负担。
  • 安全性:可通过 IP 地址、主机名限制访问,结合 RPCSEC_GSS 实现加密认证。
NFS 的工作原理:

NFS 基于 RPC(Remote Procedure Call,远程过程调用)协议实现,通过以下步骤完成文件共享:

  1. 客户端向 NFS 服务器发送挂载请求(通过 RPC 端口映射器 portmapper)。
  2. 服务器验证客户端权限,允许挂载后返回文件系统信息。
  3. 客户端将远程文件系统挂载到本地目录,实现读写操作。

NFS 配置步骤(以 CentOS 7 为例)

服务器配置

创建共享目录

例如创建/data/nfs_share​作为共享目录,并设置权限:

bash

mkdir -p /data/nfs_share
chmod 777 /data/nfs_share  # 简化权限,实际环境需按需设置

配置共享规则

编辑 NFS 配置文件/etc/exports,格式为:
共享目录 客户端IP/网段(权限选项)
示例:

echo "/back 192.168.10.1(rw)" >> /etc/exports

常用权限选项:

  • rw​:读写权限;ro​:只读权限
  • sync​:同步写入(数据实时写入磁盘,安全但性能略低)
  • async​:异步写入(先存缓存,性能高但可能丢失数据)
  • root_squash​:客户端 root 用户映射为服务器匿名用户(默认)
  • no_root_squash​:客户端 root 用户保留 root 权限(谨慎使用)

生效配置并启动服务

exportfs -r  # 重新加载配置
systemctl start rpcbind nfs-server  # 启动服务
systemctl enable rpcbind nfs-server  # 设置开机自启

客户端配置

挂载远程共享目录

在客户端创建本地挂载点,并挂载 NFS 共享:

bash

mkdir -p /mnt/nfs_client
mount -t nfs 192.168.10.2:/back /mnt/nfs_client

FTP

FTP(File Transfer Protocol,文件传输协议)是一种用于在网络上进行文件传输的标准协议,主要功能是实现客户端与服务器之间的文件上传、下载、删除、重命名等操作。它诞生于 1971 年,是互联网早期最常用的文件传输方式之一,至今仍广泛应用于网站维护、数据备份、资源共享等场景。

FTP 的主要特点:
  • 双向传输:支持客户端向服务器上传文件和从服务器下载文件。
  • 跨平台性:几乎所有操作系统(Windows、Linux、macOS 等)都原生或通过工具支持 FTP。
  • 灵活性:可通过命令行、图形化工具(如 FileZilla)或程序接口(如 Python 的ftplib​)操作。
  • 模式多样:分为主动模式(Active FTP)和被动模式(Passive FTP),适应不同网络环境(如防火墙设置)。
FTP 的工作原理:

FTP 使用两个连接完成数据传输:

  1. 控制连接:客户端通过 TCP 端口 21 与服务器建立连接,用于发送命令(如登录、上传、下载指令)和接收服务器响应。

  2. 数据连接:专门用于传输文件或目录列表,端口由连接模式决定:

    • 主动模式:服务器从端口 20 主动向客户端指定端口发送数据。
    • 被动模式:客户端向服务器随机端口(通常 1024-65535)发起数据连接,更适合客户端在防火墙后的场景。

VSFTP

vsftpd(Very Secure FTP Daemon)是一款轻量、安全且高效的 FTP 服务器软件,广泛应用于 Linux 系统。它以安全性高、配置灵活为特点,支持匿名访问、本地用户登录、虚拟用户等多种模式,适合搭建从简单到复杂的 FTP 服务。

vsftpd 的核心特点

  • 安全性:默认禁用匿名用户写入权限,支持 chroot 限制用户目录,可限制特定用户登录,减少安全风险。
  • 高效性:资源占用低,支持大并发连接,适合文件共享场景
  • 灵活性:支持主动 / 被动模式,可自定义端口范围,兼容多种客户端。
  • 日志记录:详细记录用户操作,便于审计和问题排查。

vsftpd 详细配置(以 CentOS 7 为例)

1. 安装与基础启动

bash

# 安装 vsftpd
yum install vsftpd -y

# 启动服务
systemctl start vsftpd

# 设置开机自启
systemctl enable vsftpd

# 检查状态(active (running) 为正常)
systemctl status vsftpd

2. 核心配置文件解析

vsftpd 的主配置文件为 /etc/vsftpd/vsftpd.conf​,以下是关键参数及说明:

nonymous_enable=YES    # 是否开启匿名用户允许访问
local_enable=YES        # 是否允许本地用户登录FTP
write_enable=YES        # write_enable=YES # 全局设置, 是否容许写入, 开启允许上传的权限
local_umask=022         # 本地用户上传文件的 umask
dirmessage_enable=YES   # 允许为目录配置显示信息, 显示每个目录下面的 message_file 文件的内容
xferlog_enable=YES      # 开启日志功能, 以及存放路径
xferlog_file=/var/log/vsftpd.log  # 日志路径
connect_from_port_20=YES          # 使用 20 端口进行连接
xferlog_std_format=YES            # 标准日志格式
listen=YES                        # 绑定到监听端口
listen_ipv6=YES                   # 开启 ipv6
pam_service_name=vsftpd           # 设置 PAM 的名称
userlist_enable=YES               # 设置用户已列表, 允许或是禁止
tcp_wrappers=YES                  # 控制主机访问, 检查 /etc/hosts.allow  hosts.deny 的配置达到防火墙作用

匿名访问

PS:

匿名用户的默认根目录是 /var/ftp

配置vsftpd.conf

# 允许匿名用户登录(核心开关)
anonymous_enable=YES

# 匿名用户是否允许下载文件(默认允许,无需额外配置)
# 注:vsftpd 匿名模式默认仅开放读权限

# 匿名用户根目录(默认是 /var/ftp,可自定义)
anon_root=/var/ftp  # 建议保持默认,便于管理

# (可选)允许匿名用户上传文件(风险较高,需谨慎开启)
anon_upload_enable=NO  # 默认禁用,如需开启改为 YES
anon_mkdir_write_enable=NO  # 禁止匿名用户创建目录
anon_other_write_enable=NO  # 禁止匿名用户删除/重命名文件
匿名访问测试
  • 通过 FTP 客户端
    主机填写服务器 IP,用户名输入 anonymous​ 或 ftp​,密码留空(直接回车),连接后即可访问 /var/ftp​ 下的文件。

  • (对于匿名来说 他可能上传不了文件 当然 匿名登录不安全 使用使用较少)

  • 通过命令行
    bash

    ftp 服务器IP
    # 提示输入用户名时,输入 anonymous,密码直接回车
    ftp> ls  # 查看匿名目录下的文件
    ftp> get 文件名  # 下载文件(默认允许)
    ftp> put 文件名	# 上传文件(上传到 put 下)
    

本地访问

vsftpd 的本地用户登录模式允许服务器本地系统用户(如通过 useradd 创建的用户)使用账号密码登录 FTP,适用于需要区分权限的场景(如个人文件管理、团队共享等)

1. 基础配置(允许本地用户登录)

编辑 vsftpd 主配置文件:

bash

vim /etc/vsftpd/vsftpd.conf

修改或添加以下关键参数:

conf

# 允许本地系统用户登录(核心开关)
local_enable=YES

# 允许本地用户写入操作(上传/创建/删除文件,按需开启)
write_enable=YES  # 全局控制写入权限,需开启才允许后续写入配置

# 本地用户根目录(默认是用户的家目录,如 /home/用户名)
# 可选:限制所有本地用户到指定目录(chroot 禁锢,增强安全性)
chroot_local_user=YES  # 启用 chroot,用户只能访问自己的家目录(对于他来说 属主必须是 root 其他用户不可以有 W 读的权限 最大是755)
allow_writeable_chroot=YES  # 允许家目录有写权限(避免 chroot 失败)

# (可选)指定本地用户上传文件的默认权限(如 644)
local_umask=022  # 计算方式:实际权限 = 777 - umask,022 对应 644(rw-r--r--)

# (可选)规定全局目录
local_root=/data/ftp_shared
2. 创建本地用户(如需新增用户)

如果需要为 FTP 单独创建用户(非系统已有用户):

bash

# 创建用户(如 ftpuser),并指定家目录(默认 /home/ftpuser)
useradd ws

# 设置密码
passwd ws
# 输入密码并确认(密码需符合复杂度要求,如长度≥8位)

3.创建自定义目录

通过 local_root=/ftpd 更改VSFTPD的目录

mkdir /ftpd 

#如果要自定义目录 目录的权限中 其他用户不可以有W权限 这是VSFTPD的保护模式
chmod 775 /ftpd

4.客户机通过 WS 登录验证上传下载
[root@localhost hehe]# ftp
ftp> open 192.168.10.2
Connected to 192.168.10.2 (192.168.10.2).
220 (vsFTPd 3.0.2)
Name (192.168.10.2:root): ws
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> 
ftp> 
ftp> ls 
227 Entering Passive Mode (192,168,10,2,108,228).
150 Here comes the directory listing.
-rwxrwxrwx    1 0        0               0 Jul 22 08:40 1.txt
drwxr-xr-x    2 1000     1000            6 Jul 22 08:49 put
226 Directory send OK.
ftp> lcd put
local: put: 没有那个文件或目录
ftp> lcd /hehe
Local directory now /hehe
ftp> cd put
250 Directory successfully changed.
ftp> put 1.txt 
local: 1.txt remote: 1.txt
227 Entering Passive Mode (192,168,10,2,135,10).
150 Ok to send data.
226 Transfer complete.
ftp> cd ..
250 Directory successfully changed.
ftp> ls 
227 Entering Passive Mode (192,168,10,2,106,72).
150 Here comes the directory listing.
-rwxrwxrwx    1 0        0               0 Jul 22 08:40 1.txt
drwxr-xr-x    2 1000     1000           19 Jul 22 08:54 put
226 Directory send OK.
ftp> get 1.txt
local: 1.txt remote: 1.txt
227 Entering Passive Mode (192,168,10,2,49,253).
150 Opening BINARY mode data conne
226 Transfer complete.

PS:
local_root=/ftpd          # 所有本地用户登录后默认进入 /ftpd 目录(而非家目录)
write_enable=YES          # 允许本地用户执行写入操作(上传、创建目录等)
local_enable=YES          # 允许本地系统用户登录 FTP
chroot_local_user=YES     # 限制用户只能在 /ftpd 目录内操作,无法切换到其他目录

SAMBA

Samba 是一款在 Linux 和 Unix 系统上实现 SMB/CIFS 协议的开源软件套件,主要用于不同操作系统之间的文件和打印机共享,让 Linux/Unix 系统能够与 Windows 系统无缝协作,是跨平台网络共享的重要工具。

Samba 的核心功能

  1. 文件共享

    • 允许 Linux/Unix 服务器向 Windows、macOS 等客户端提供文件共享服务,用户可通过网络访问共享目录,如同操作本地文件一样。
    • 支持权限控制(如读写权限、用户组权限),确保共享文件的安全性。
  2. 打印机共享

    • 将 Linux/Unix 系统连接的打印机共享给网络中的其他设备,Windows 等客户端可直接使用该打印机,无需额外配置驱动(需兼容)。
  3. 用户认证与安全

    • 集成系统用户(如 Linux 的/etc/passwd​)或独立的 Samba 用户数据库,通过密码认证控制访问权限。
    • 支持加密传输(如 SMB3 协议的加密功能),防止数据在网络中被窃听。
  4. 与 Windows 域的兼容

    • 可作为 Windows 域控制器(Domain Controller),管理用户、计算机账号及组策略,适合企业级网络环境。

Samba 的应用场景

  • 中小型企业网络:通过一台 Linux 服务器实现跨平台文件共享,降低 Windows Server 的部署成本。
  • 家庭局域网:将 NAS(基于 Linux)中的文件共享给 Windows 电脑、智能电视等设备。
  • 混合系统办公环境:解决 Linux 与 Windows 之间的文件传输、协作问题(如共享项目文件夹)。

基本使用步骤(以 Linux 为例)

  1. 安装 Samba

    • Ubuntu/Debian:sudo apt install samba samba-common-bin
    • CentOS/RHEL:sudo yum install samba samba-client
  2. 配置共享目录

    • 编辑配置文件/etc/samba/smb.conf​,添加共享规则,例如:
      ini

      [www]
          path = /home/user/shared  # 共享目录路径
          valid users = user1       # 允许访问的用户
          read only = no            # 允许写入
          browseable = yes          # 在网络中可见
      	writeable = yes			  # 是否允许写入
      
  3. 添加 Samba 用户

    • 创建系统用户后,使用smbpasswd -a 用户名​设置 Samba 密码(需与系统用户关联)。
  4. 重启服务

    • sudo systemctl restart smbd nmbd​(smbd​负责文件共享,nmbd​用于网络发现)。
  5. 访问共享

    • Windows:在资源管理器地址栏输入\\服务器IP\SharedFolder​,输入 Samba 用户名和密码即可访问。
    • Linux:使用smbclient //服务器IP/SharedFolder -U 用户名​或挂载到本地目录(mount -t cifs​)。
    • smbclient //192.168.10.2/www(模块写的什么就写什么) -U smbqq
      

常见问题

  • 访问被拒绝:检查共享目录权限(需确保 Samba 用户对目录有读写权限)、配置文件语法是否正确(可通过testparm​命令验证)。
  • 网络中找不到共享:确认防火墙开放 139、445 端口(SMB 协议端口),或手动输入服务器 IP 访问。

总结:

samba 和 VSFTPD在一定的基础上 虽然已经淘汰了 因为大家都是用网盘 但 VSFTPD 和 samba 作为底层原理 还是要理解和贯通 但其实 他有一个虚拟用户登录 但今天实在没时间了 等下回再说吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值