Ubuntu 22.04 Samba 安装和配置

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
日志服务 SLS,月写入数据量 50GB 1个月
简介: SMB(Server Message Block)是一种跨平台的文件共享协议,它允许不同操作系统之间的文件和打印机共享。在本文中,我们将详细介绍如何在 Ubuntu 服务器上部署和配置一个 SMB 服务器,并涵盖多通道配置、性能测试、安全最佳实践以及一些常见问题。【8月更文挑战第1天】

安装

sudo apt install samba
检查服务状态

systemctl status smbd --no-pager -l
检查是否启用(开机自启动)

systemctl is-enabled smbd
# enable it if inactive
systemctl enable smbd

配置

(可选)添加用户
sudo usermod -aG sambashare [username]
设置密码
sudo smbpasswd -a [username]
创建公开共享(可匿名访问)

sudo vi /etc/samba/smb.conf
按以下格式创建内容

[public]
  comment = public anonymous access
  path = /data/
  browsable =yes
  create mask = 0660
  directory mask = 0771
  writable = yes
  guest ok = yes
说明:

[public]方括号内为share后显示的目录名
path = /data/ 为用于share的本地路径
browsable =yes 是否可以浏览
create mask = 0660
directory mask = 0771
writable = yes是否可写
guest ok = yes是否允许匿名访问

开启 SMB1

对于很多电视盒子, 运行安卓或CoreElEC, 只支持 SMB1, 连接默认配置的 Samba 服务会直接报 Timeout, 需要开启 smbd 服务对 SMB1 的支持

编辑 /etc/samba/smb.conf, 在[global]下添加

## Enable SMB1 ##
   server min protocol = NT1
重启 smbd 后, 电视盒就可以连接了.

配置项

Samba可以配置的属性可以参考 https://www.samba.org/samba/docs/using_samba/ch08.html

create mask
八进制数, 每个数 3-bit 代表一组权限[rwx], 整个mask 代表 smb 客户端在创建文件时可以设置哪些bit.
默认是 0744, 对应[--- rwx r-- r--] 这代表着 unix 下的文件所有者可以 rwx [读,写,执行], 同组用户和其它可以 r [读]

对于下面的例子, create mask 限制从 smb 创建文件/目录时, 不管来自于什么客户端, 文件和目录的最大权限为 744

[data]
    path = /home/samba/data
    browseable = yes
    guest ok = yes
    writeable = yes
    create mask = 744

directory mask
与create mask 相同, 八进制数, 每个数 3-bit 代表一组权限[rwx], 整个mask 代表 smb 客户端在创建目录时可以设置哪些bit.
默认是0744, 对应 [--- rwx r-- r--], 允许所有用户读, 但是只允许所有者自己浏览和修改. 建议改为 0750, [--- rwx r-x ---], 避免所有人可以访问

下面的例子中, 从客户端创建的目录, 最大权限为 755

[data]
    path = /home/samba/data
    browseable = yes
    guest ok = yes
    writeable = yes
    directory mask = 755

force create mode 这个配置项用于 当文件权限发生变化时强制设置的权限位. 常用于设置文件默认的组权限. 这个配置也可以用于设置 DOS 属性: archive (0100), system (0010), or hidden (0001).

TIP

有些windows应用保存文件时, 会创建一个带.bak后缀的文件, 当这些文件在samba共享目录下时, 所有者不一定是当前用户, 为了让当前用户还可以编辑修改, 可以设置 force create mode = 0660 , 这样可以保证新文件也可以被同组用户编辑.

force directory mode
这个配置项用于 当目录权限发生变化时强制设置的权限位. 常用于设置组权限, 默认为 0000.

force group
这个配置用于给所有连接上的客户端, 只要客户端成功通过验证, 都会被指定一个固定的分组. 这个分组会体现在新创建的文件和目录上.

force user
同样的, 这个配置会给连接上的验证通过的客户端, 指定一个用户, 体现在新创建的文件和目录上.

多通道配置

为了提高性能并减少延迟,可以启用 SMB 3.0 的多通道支持。在 smb.conf 文件中添加以下内容:

multichannel = yes

重启 Samba 服务使更改生效:

sudo systemctl restart smbd

性能测试

可以使用 smbtorture 或者其他的工具来测试 SMB 服务器的性能。例如:

smbtorture -Uusername -Wworkgroup //servername/myshare

此外,还可以使用 netperf 进行更详细的性能测试:

sudo apt install netperf
netperf -H <server_ip> -t SMB2-RRD

安全最佳实践

1. 加密 SMB 通信

确保在 smb.conf 中启用了 SMB 3.0,并且启用了加密选项:

client min protocol = SMB3
server min protocol = SMB3
encrypt passwords = Yes
require client encryption = Yes

2. 使用强密码策略

确保用户账户使用强密码,并定期更改密码。

3. 限制访问权限

只允许特定的用户和组访问共享资源,并使用防火墙规则限制外部访问。
**

  1. 审计和监控**

启用 Samba 的日志记录功能,并定期审查日志以检测潜在的安全威胁。

常见问题

无法连接到 SMB 服务器

  • 检查防火墙设置,确保 SMB 通信所需的端口(TCP 139 和 445)没有被阻止。
  • 确保 SMB 服务正在运行。

用户无法访问共享文件夹

  • 确认用户具有正确的权限。
  • 检查 smb.conf 文件中的设置是否正确。

性能不佳

  • 检查服务器硬件规格是否满足需求。
  • 考虑优化网络设置或增加带宽。
目录
相关文章
|
7天前
|
Ubuntu 开发工具 git
Ubuntu安装homebrew的完整教程
本文介绍了如何在没有公网的情况下安装 Homebrew。首先访问 Homebrew 官网,然后通过阿里云的镜像克隆安装脚本,并创建普通用户进行安装。接着修改 `install.sh` 文件指向国内镜像,执行安装命令。最后配置环境变量并更换 Homebrew 源为国内镜像,确保安装顺利。
94 50
|
29天前
|
Ubuntu Linux 测试技术
Linux系统之Ubuntu安装cockpit管理工具
【10月更文挑战第13天】Linux系统之Ubuntu安装cockpit管理工具
107 4
Linux系统之Ubuntu安装cockpit管理工具
|
8天前
|
Ubuntu Shell 开发工具
ubuntu/debian shell 脚本自动配置 gitea git 仓库
这是一个自动配置 Gitea Git 仓库的 Shell 脚本,支持 Ubuntu 20+ 和 Debian 12+ 系统。脚本会创建必要的目录、下载并安装 Gitea,创建 Gitea 用户和服务,确保 Gitea 在系统启动时自动运行。用户可以选择从官方或小绿叶技术博客下载安装包。
22 2
|
1月前
|
Ubuntu 应用服务中间件 nginx
Ubuntu安装笔记(三):ffmpeg(3.2.16)源码编译opencv(3.4.0)
本文是关于Ubuntu系统中使用ffmpeg 3.2.16源码编译OpenCV 3.4.0的安装笔记,包括安装ffmpeg、编译OpenCV、卸载OpenCV以及常见报错处理。
138 2
Ubuntu安装笔记(三):ffmpeg(3.2.16)源码编译opencv(3.4.0)
|
1月前
|
网络协议 Ubuntu 网络安全
|
3天前
|
Ubuntu Java
Ubuntu之jdk安装
以下是Ubuntu之jdk安装的详细内容
10 0
|
30天前
|
Kubernetes Ubuntu Docker
从0开始搞K8S:使用Ubuntu进行安装(环境安装)
通过上述步骤,你已经在Ubuntu上成功搭建了一个基本的Kubernetes单节点集群。这只是开始,Kubernetes的世界广阔且深邃,接下来你可以尝试部署应用、了解Kubernetes的高级概念如Services、Deployments、Ingress等,以及探索如何利用Helm等工具进行应用管理,逐步提升你的Kubernetes技能树。记住,实践是最好的老师,不断实验与学习,你将逐渐掌握这一强大的容器编排技术。
113 1
|
1月前
|
Ubuntu Linux
软件安装(五):Ubuntu 18.04安装Teamviewer 看一遍就会
这篇文章介绍了在Ubuntu 18.04系统上通过图形界面和命令行两种方法安装TeamViewer远程控制软件的步骤。
28 2
|
16天前
|
消息中间件 Ubuntu Java
Ubuntu系统上安装Apache Kafka
Ubuntu系统上安装Apache Kafka
|
22天前
|
Ubuntu Linux
Ubuntu 16.04下无法安装.deb的解决方法
希望以上策略能有效协助您克服在Ubuntu 16.04中安装.deb文件时遇到的挑战。
20 0