简介
SMB(Server Message Block)是一种网络文件共享协议,广泛用于在不同操作系统之间共享文件和打印机。在 Ubuntu 22.04 上安装和配置 SMB 服务可以方便地在 Linux 和 Windows 系统之间共享文件。本文将详细介绍如何在 Ubuntu 22.04 上安装、配置和使用 SMB 服务。
安装 SMB 服务
更新系统包
首先,确保系统包是最新的:
1
2
|
sudo apt update
sudo apt upgrade -y
|
安装 Samba
Samba 是 Linux 系统上实现 SMB 协议的开源软件包:
1
|
sudo apt install samba samba-common-bin -y
|
验证安装
检查 Samba 服务状态:
1
2
|
sudo systemctl status smbd
sudo systemctl status nmbd
|
配置 SMB 服务
备份默认配置文件
在修改配置文件之前,先备份原始文件:
1
|
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.backup
|
编辑配置文件
使用文本编辑器编辑 SMB 配置文件:
1
|
sudo nano /etc/samba/smb.conf
|
基本配置示例
在配置文件中添加以下内容:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
[global]
workgroup = WORKGROUP
server string = Ubuntu SMB Server
log file = /var/log/samba/log.%m
max log size = 1000
logging = file
panic action = /usr/share/samba/panic-action %d
server role = standalone server
obey pam restrictions = yes
unix password sync = yes
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
pam password change = yes
map to guest = bad password
usershare allow guests = yes
[shared]
comment = 共享文件夹
path = /srv/samba/shared
browseable = yes
read only = no
guest ok = yes
create mask = 0755
directory mask = 0755
|
创建共享目录
创建用于共享的目录:
1
2
3
|
sudo mkdir -p /srv/samba/shared
sudo chown nobody:nogroup /srv/samba/shared
sudo chmod 777 /srv/samba/shared
|
验证配置文件
使用 testparm 命令验证配置文件语法:
用户管理
创建 SMB 用户
如果需要用户认证,首先创建系统用户:
然后将用户添加到 SMB 数据库:
1
|
sudo smbpasswd -a smbuser
|
启用/禁用用户
启用 SMB 用户:
1
|
sudo smbpasswd -e smbuser
|
禁用 SMB 用户:
1
|
sudo smbpasswd -d smbuser
|
删除用户
删除 SMB 用户:
1
|
sudo smbpasswd -x smbuser
|
启动和管理服务
启动服务
启动 SMB 服务:
1
2
|
sudo systemctl start smbd
sudo systemctl start nmbd
|
设置开机自启
设置服务开机自启动:
1
2
|
sudo systemctl enable smbd
sudo systemctl enable nmbd
|
重启服务
重启 SMB 服务:
1
2
|
sudo systemctl restart smbd
sudo systemctl restart nmbd
|
检查服务状态
检查服务运行状态:
1
2
|
sudo systemctl status smbd
sudo systemctl status nmbd
|
防火墙配置
如果启用了防火墙,需要开放 SMB 相关端口:
或者手动开放端口:
1
2
3
4
|
sudo ufw allow 139/tcp
sudo ufw allow 445/tcp
sudo ufw allow 137/udp
sudo ufw allow 138/udp
|
测试连接
本地测试
在本地测试 SMB 共享:
挂载共享
在 Linux 客户端挂载 SMB 共享:
1
2
|
sudo mkdir /mnt/smbshare
sudo mount -t cifs //SERVER_IP/shared /mnt/smbshare -o username=smbuser
|
Windows 客户端
在 Windows 资源管理器地址栏输入:
高级配置
家目录共享
为每个用户配置家目录共享:
1
2
3
4
5
6
7
|
[homes]
comment = 用户家目录
browseable = no
read only = no
create mask = 0700
directory mask = 0700
valid users = %S
|
只读共享
配置只读共享:
1
2
3
4
5
6
|
[readonly]
comment = 只读共享
path = /srv/samba/readonly
browseable = yes
read only = yes
guest ok = yes
|
安全设置
增强安全性的配置:
1
2
3
4
5
6
7
8
9
10
|
[global]
# 禁用 SMB1 协议
server min protocol = SMB2
# 启用加密
server signing = mandatory
# 限制访问IP
hosts allow = 192.168.1.0/24 127.0.0.1
hosts deny = ALL
|
常见问题
权限问题
如果遇到权限问题,检查以下设置:
- 文件系统权限
- SELinux 设置(如果启用)
- SMB 用户权限
连接问题
如果无法连接,检查:
性能优化
优化 SMB 性能的配置:
1
2
3
4
5
6
7
|
[global]
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=131072 SO_SNDBUF=131072
read raw = yes
write raw = yes
max xmit = 65535
dead time = 15
getwd cache = yes
|
监控和日志
查看日志
SMB 日志文件位置:
1
2
|
sudo tail -f /var/log/samba/log.smbd
sudo tail -f /var/log/samba/log.nmbd
|
连接状态
查看当前连接:
共享列表
列出所有共享:
1
|
sudo smbclient -L localhost
|
总结
通过本文的介绍,可以成功在 Ubuntu 22.04 上安装和配置 SMB 服务。SMB 服务为跨平台文件共享提供了便利的解决方案,适用于家庭网络和企业环境。
关键要点:
- 定期备份配置文件
- 合理设置用户权限
- 配置适当的防火墙规则
- 监控服务状态和日志
- 根据需要调整性能参数
正确配置的 SMB 服务将为网络环境提供稳定可靠的文件共享功能。