目录
一、前言
SMB 协议简介
SMB(Server Message Block)协议,是一种应用层网络协议,最初由 IBM 提出,后由 Microsoft 进行扩展,是 Windows 系统默认使用的网络文件共享协议。在 Linux 系统中,SMB 协议通常通过 CIFS(Common Internet File System) 实现和访问。
典型使用场景
在许多小微型企业中,Linux 通常作为公司服务器系统,用于承载网站、数据库、业务系统等核心服务。为了保障数据的完整性和安全性,企业往往需要将这些关键数据定期备份至其他平台,如 Windows 文件服务器、NAS 存储设备等。
在这种跨平台的数据备份与恢复场景中,SMB 协议凭借其广泛的兼容性和稳定性,成为首选方案。通过在 Ubuntu 等 Linux 系统中挂载 SMB 协议的共享文件夹,可以实现以下目的:
-
将数据库、项目文件、日志等自动备份到远程 SMB 存储设备;
-
实现与 Windows 桌面系统之间的数据同步与交互;
-
构建便捷的数据灾备方案,在主服务器故障时快速恢复数据;
-
利用现有 NAS 或老旧 Windows 服务器,节省预算成本,提高资源利用率。
这种方式不仅部署简单、易于维护,而且无需额外复杂配置,适合 IT 资源有限的中小团队。
本文目标
本篇教程将带你掌握如何在 常见Linux系统(Ubuntu)中挂载 SMB 协议的共享文件夹。包括基本的手动挂载测试,以及如何设置开机自动挂载,确保系统重启后依然能无缝访问共享目录。
二、环境准备
-
Ubuntu 22.04.4 LTS
-
SMB 服务端(Windows 或 群晖NAS)
三、安装必要工具
sudo apt update
sudo apt install cifs-utils -y
在 Ubuntu 等 Linux 系统中,要想通过 SMB 协议访问 Windows 或 NAS 提供的共享文件夹,必须使用 CIFS(Common Internet File System)协议进行挂载。而 cifs-utils 就是用于支持 CIFS 挂载操作的一组工具包。
具体作用包括:
-
提供 mount.cifs 命令,用于挂载远程 SMB 共享到本地目录
-
支持用户名、密码、域等认证参数
-
支持指定 SMB 协议版本(如 vers=2.0,vers=3.0 等)
-
支持挂载选项如只读、IO 缓存、权限映射等
-
提供凭据文件支持,提升挂载过程中的安全性
四、手动挂载
4.1 创建挂载目录
创建一个目录作为挂载点,通常放在 mnt 目录下:
sudo mkdir /mnt/share-smb
4.2 手动挂载命令
Windows 系统(IP:192.168.1.169)创建共享文件夹 share-smb(同名方便后续分辨),使用 Everyone用户 并配置 读/写 权限:

执行 mount 命令进行挂载:
sudo mount -t cifs //192.168.1.169/share-smb /mnt/share-smb -o username=everyone
注意:
Everyone用户是没有密码的!所以在执行 mount 命令后,当提示:
Password for everyone@//192.168.1.169/share-smb:
时,直接回车(使用空密码)
4.3 文件测试
在 Windows 共享文件夹下新建一个文件,如:新建 文本文档.txt

在 Ubuntu 下查看已挂载的共享目录:

确认 挂载成功!
五、设置自动挂载(推荐)
5.1 创建凭据文件
sudo vim /etc/.smb-credentials
在 Linux 系统中,文件名前加上点号(
.)的作用:将文件设置为“隐藏文件”。好处是:1. 防止运维人员或普通用户误删或误操作该文件;
2. 符合 Linux 系统的命名规范和运维习惯(配置文件和敏感数据文件以
.开头);3. 尽管隐藏并不等于加密,可以 降低暴露的几率。
内容:
username=share_username
password=share_passwd
domain=WORKGROUP
修改文件权限,确保只有 root用户 可读写:
sudo chmod 600 /etc/.smb-credentials
5.2 自动挂载
如果希望系统启动时自动挂载,需要修改 /etc/fstab 文件:
sudo vim /etc/fstab
将以下行添加到文件中:
//192.168.1.169/share-smb /mnt/share-smb cifs credentials=/etc/.smb-credentials,dir_mode=0757,file_mode=0757 0 0
- //192.168.1.169/share-smb:远程 SMB 共享路径(即共享服务器地址和共享名)
- /mnt/share-smb:共享目录本地挂载点
- cifs:表示使用 CIFS(SMB 协议)挂载
- credentials=/etc/.smb-credentials:指定存放 SMB 登录凭据的文件路径
- dir_mode=0757:设置挂载后目录的权限,方便其他服务(用户)写入/备份文件夹
- file_mode=0757:设置挂载后文件的默认权限,方便其他服务(用户)写入/备份文件
- 0 0:不进行 dump(系统备份),启动时不自动进行 fsck 文件系统检查(适用于非本地磁盘),默认值
5.3 文件测试
修改 Windows 共享文件夹权限:

重启 Ubuntu 系统:
sudo reboot
查看 挂载目录权限:

普通用户写入文件:
touch /mnt/share-smb/test.file
在 Windows 下查看共享文件夹:

确认 自动挂载成功、写入成功!
六、进阶用法
在实际生产环境中,仅仅挂载 SMB 共享目录并不能满足企业的数据管理需求。对于小微型企业的 Linux 服务器,更常见的需求是:
-
自动将关键数据(如数据库备份、项目文件等)定时复制到 SMB 共享目录
-
定期清理过期文件,避免共享存储空间被旧数据占满
这类需求可以通过一个简单的 Bash 脚本 + cron 定时任务 实现。



236

被折叠的 条评论
为什么被折叠?



