基本服务 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,远程过程调用)协议实现,通过以下步骤完成文件共享:
- 客户端向 NFS 服务器发送挂载请求(通过 RPC 端口映射器 portmapper)。
- 服务器验证客户端权限,允许挂载后返回文件系统信息。
- 客户端将远程文件系统挂载到本地目录,实现读写操作。
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 使用两个连接完成数据传输:
-
控制连接:客户端通过 TCP 端口 21 与服务器建立连接,用于发送命令(如登录、上传、下载指令)和接收服务器响应。
-
数据连接:专门用于传输文件或目录列表,端口由连接模式决定:
- 主动模式:服务器从端口 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
下的文件。 -
(对于匿名来说 他可能上传不了文件 当然 匿名登录不安全 使用使用较少)
-
通过命令行:
bashftp 服务器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 的核心功能
-
文件共享
- 允许 Linux/Unix 服务器向 Windows、macOS 等客户端提供文件共享服务,用户可通过网络访问共享目录,如同操作本地文件一样。
- 支持权限控制(如读写权限、用户组权限),确保共享文件的安全性。
-
打印机共享
- 将 Linux/Unix 系统连接的打印机共享给网络中的其他设备,Windows 等客户端可直接使用该打印机,无需额外配置驱动(需兼容)。
-
用户认证与安全
- 集成系统用户(如 Linux 的
/etc/passwd
)或独立的 Samba 用户数据库,通过密码认证控制访问权限。 - 支持加密传输(如 SMB3 协议的加密功能),防止数据在网络中被窃听。
- 集成系统用户(如 Linux 的
-
与 Windows 域的兼容
- 可作为 Windows 域控制器(Domain Controller),管理用户、计算机账号及组策略,适合企业级网络环境。
Samba 的应用场景
- 中小型企业网络:通过一台 Linux 服务器实现跨平台文件共享,降低 Windows Server 的部署成本。
- 家庭局域网:将 NAS(基于 Linux)中的文件共享给 Windows 电脑、智能电视等设备。
- 混合系统办公环境:解决 Linux 与 Windows 之间的文件传输、协作问题(如共享项目文件夹)。
基本使用步骤(以 Linux 为例)
-
安装 Samba
- Ubuntu/Debian:
sudo apt install samba samba-common-bin
- CentOS/RHEL:
sudo yum install samba samba-client
- Ubuntu/Debian:
-
配置共享目录
-
编辑配置文件
/etc/samba/smb.conf
,添加共享规则,例如:
ini[www] path = /home/user/shared # 共享目录路径 valid users = user1 # 允许访问的用户 read only = no # 允许写入 browseable = yes # 在网络中可见 writeable = yes # 是否允许写入
-
-
添加 Samba 用户
- 创建系统用户后,使用
smbpasswd -a 用户名
设置 Samba 密码(需与系统用户关联)。
- 创建系统用户后,使用
-
重启服务
-
sudo systemctl restart smbd nmbd
(smbd
负责文件共享,nmbd
用于网络发现)。
-
-
访问共享
- Windows:在资源管理器地址栏输入
\\服务器IP\SharedFolder
,输入 Samba 用户名和密码即可访问。 - Linux:使用
smbclient //服务器IP/SharedFolder -U 用户名
或挂载到本地目录(mount -t cifs
)。 -
smbclient //192.168.10.2/www(模块写的什么就写什么) -U smbqq
- Windows:在资源管理器地址栏输入
常见问题
- 访问被拒绝:检查共享目录权限(需确保 Samba 用户对目录有读写权限)、配置文件语法是否正确(可通过
testparm
命令验证)。 - 网络中找不到共享:确认防火墙开放 139、445 端口(SMB 协议端口),或手动输入服务器 IP 访问。
总结:
samba 和 VSFTPD在一定的基础上 虽然已经淘汰了 因为大家都是用网盘 但 VSFTPD 和 samba 作为底层原理 还是要理解和贯通 但其实 他有一个虚拟用户登录 但今天实在没时间了 等下回再说吧