惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

大猫的无限游戏
大猫的无限游戏
S
SegmentFault 最新的问题
量子位
A
Arctic Wolf
L
Lohrmann on Cybersecurity
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
WordPress大学
WordPress大学
V
Vulnerabilities – Threatpost
博客园 - Franky
C
Cyber Attacks, Cyber Crime and Cyber Security
The Cloudflare Blog
Last Week in AI
Last Week in AI
The Hacker News
The Hacker News
I
Intezer
J
Java Code Geeks
P
Privacy International News Feed
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
S
Secure Thoughts
Cisco Talos Blog
Cisco Talos Blog
阮一峰的网络日志
阮一峰的网络日志
S
Securelist
Security Latest
Security Latest
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
小众软件
小众软件
Jina AI
Jina AI
有赞技术团队
有赞技术团队
人人都是产品经理
人人都是产品经理
博客园_首页
酷 壳 – CoolShell
酷 壳 – CoolShell
T
The Exploit Database - CXSecurity.com
雷峰网
雷峰网
T
Tenable Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
P
Privacy & Cybersecurity Law Blog
Simon Willison's Weblog
Simon Willison's Weblog
博客园 - 【当耐特】
T
Threat Research - Cisco Blogs
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
MongoDB | Blog
MongoDB | Blog
D
DataBreaches.Net
N
News | PayPal Newsroom
Google Online Security Blog
Google Online Security Blog
K
Kaspersky official blog
H
Help Net Security
宝玉的分享
宝玉的分享
罗磊的独立博客
Webroot Blog
Webroot Blog
月光博客
月光博客
B
Blog RSS Feed
Recorded Future
Recorded Future

See you soon

哟,好久不见,无线打印 | See you soon 试试将文章版本化管理吧 | See you soon 使用 Quadlet 将 Podman 中的 Postgres 当作 systemd 服务运行 | See you soon 大他者,那个无时无刻都在盯着你的东西 | See you soon Laws of Software Engineering,软件工程定律 | See you soon 浅记多因素身份认证 | See you soon Linux 内核中的度量单位 | See you soon 重置 GPG 智能密钥 | See you soon 无法重复键入的 Fcitx5 | See you soon ZFS 降级事故 | See you soon 记被 XanMod Kernel 和 AppArmor 联合坑的一次踩坑 | See you soon agent 的 skill 与 toolcall | See you soon 记一次服务器被挂恶意挖矿二进制 | See you soon 活着的 Arc | See you soon 令 acme.sh 使用 Cloudflare 的 DNS API 签发与续签证书 | See you soon 于 Tokio 中卸载 CPU Bound 任务 | See you soon 如我所见,梦破碎的时候 | See you soon 74LS 家族手册 | See you soon JDK Projects 备忘录 | See you soon 关于历史 | See you soon 用 curl 下载 OnePlus 的 ROM | See you soon 实用命令切片 | See you soon 再见,Oh My Zsh。 | See you soon 你不应该复用 strings.Builder | See you soon 博客的明日 | See you soon 被 AppArmor 击杀的 Dockge | See you soon AI 时代的自我 | See you soon 支持删除的布隆过滤器 | See you soon 基于栈的虚拟机与基于寄存器的虚拟机 | See you soon RVA23 包含了什么 | See you soon Rust 的边界检查是否已经有很大的进步 | See you soon 使用 Rust 编写操作系统:Barebones | See you soon 使用 Rust 编写操作系统:引言 | See you soon 编译器笔记:rope | See you soon 编译器笔记:CST | See you soon Paradoxical 札记 | See you soon 简单的相似去重算法(基于向量) | See you soon 更加现代的 PaperMC Minecraft 插件设计指南 | See you soon 简单的 CFG 语法分析方法 | See you soon 简单地使用 Caddy 实现 CORS 配置 | See you soon 让 OpenCV 可以被静态链接 | See you soon 图片搜索笔笺 | See you soon 电路板设计笔记-保护 | See you soon 使用 Rust 实现 SnowflakeId | See you soon 农夫乐事 FaQ 启示 | See you soon 使用 Rust 实现拓展系统札记 | See you soon 遗传学定律的代码实现 | See you soon EN:The Journey of Rust and Procps | See you soon ZH:Rust 与 Procps 之旅 | See you soon 使用 debootstrap 与 schroot 构建一个纯净环境 | See you soon GPG添加新的用户信息 | See you soon GSoC2024 笔记:使用 Rust 重新实现 procps | See you soon JWT 小册 | See you soon 使用密钥登录 SSH | See you soon Guava:Cache | See you soon 编译器笔记:增量编译 | See you soon Gradle秘境:添加一个类似modCompileOnly的依赖块 | See you soon Minecraft:原始经济系统设计简述 | See you soon TinyRemapper笔记 | See you soon MicroOS:进阶 | See you soon MicroOS:起步 | See you soon Swapfile 指北 | See you soon GPG 物理密钥的安装与密钥的迁移 | See you soon 用GPG签名告诉大家这就是我的提交 | See you soon DFS:深度优先搜索 | See you soon 文章翻译:从init.vim到init.lua | See you soon 目录遍历攻击 | See you soon 如何挂载.img文件,以及如何使用QEMU模拟arm64环境 | See you soon 在树莓派上编译 OpenCV | See you soon 关于卸载BlueStacks后遇到的问题 | See you soon
向 NAS 引入 samba | See you soon
Krysztal Huang · 2026-04-02 · via See you soon

最近感觉自己的 NAS 共享管理非常混沌,于是打算重新规整一下:引入 samba 和重新分级一下目录层次

原始目录结构

我的目录布局如下所示

root in 🌐 homelab in /pool

tree -L2

.

├── bulk

├── backup

├── ebooks

├── forks

├── mirrors

└── scripts

└── striping

├── Assets

├── Forks

├── ISO

├── Medias

├── Mirrors

├── Softwares

└── Tmp

15 directories, 0 files

我的 ZFS 子卷如下所示

root in 🌐 homelab in ~

zfs list

NAME USED AVAIL REFER MOUNTPOINT

bulk 2.88T 18.9T 2.86T /pool/bulk

bulk/backup 128K 18.9T 128K /pool/bulk/backup

bulk/torrent 160K 18.9T 160K /srv/torrent

striping 1.15T 2.23T 1.04T /pool/striping

striping/QEMU 96K 2.23T 96K /var/lib/libvirt/images

striping/home 13.5G 2.23T 13.5G /home

striping/opt 72.6G 2.23T 72.6G /opt

striping/podman 22.7G 2.23T 96K legacy

striping/podman/containers 22.7G 2.23T 22.7G /var/lib/containers

换句话来讲,实际上 home 都已经完全在一个子卷中了,因此如果可以利用这一点应该是更好的选择。

samba 规划

我的计划如下:

  • 用户均将其自身的 home 目录作为 samba 共享目录
  • 除此之外 /pool/striping 作为公共目录,默认情况下只读不能写
  • 只有被添加到 smbusers 组的用户可以登录和访问 samba,同时具备 smwriters 组的用户可以对其读写

samba 的 wiki 中提到,samba 确实有能力使用系统账户来达到这一点,但是 samba 使用了自己的用户数据库,所以密码需要单独创建。

引入 samba

直接使用 Debian 源内的 samba 就好了,直接快速安装即可。

编写配置

结合一下官方给的最小化配置以及我的个人需求,我的配置如下所示

[global]

workgroup = WORKGROUP

server role = standalone server

map to guest = never

disable netbios = yes

[homes]

comment = Home Directories

browseable = no

read only = no

valid users = %S

create mask = 0600

directory mask = 0700

[public]

path = /pool/

browseable = yes

read only = yes

valid users = @smbusers

write list = @smbwriters

create mask = 0664

directory mask = 0775

在实现这一点后,使用 testparam -s 测试一下 samba 的配置是否正确。

设置用户密码

在上文中提到过,samba 用户需要单独设置密码。

使用如下命令来设置密码:

root in 🌐 homelab in ~

smbpasswd -a krysztal

配置自动发现

NOTE

经过我反复调试后我感觉自动发现 Linux 的自动发现做得很差,最好的方式还是按照诸如通过 smb://homelab.lan/krysztal 这样直接连接的方式链接

Debian 中存在两个包来实现自动发现,其中一个是 wsdd 另外一个是 wsdd-server

  • wsdd: Python Web Services Discovery Daemon, Windows Net Browsing
  • wsdd-server: Python Web Services Discovery Daemon, Windows Net serving

根据描述,安装 wsdd-server 即可

和系统用户同步密码?

Debian 安装的 samba 配置文件中其实有如下配置项:

# This boolean parameter controls whether Samba attempts to sync the Unix

# password with the SMB password when the encrypted SMB password in the

# passdb is changed.

unix password sync = yes

# For Unix password sync to work on a Debian GNU/Linux system, the following

# parameters must be set (thanks to Ian Kahan <<kahan@informatik.tu-muenchen.de> for

# sending the correct chat script for the passwd program in Debian Sarge).

passwd program = /usr/bin/passwd %u

passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .

# This boolean controls whether PAM will be used for password changes

# when requested by an SMB client instead of the program listed in

# 'passwd program'. The default is 'no'.

pam password change = yes

这些配置项实现的是:改 smb 密码时顺便修改 UNIX 密码,并不是反过来的。

至于到底怎么做联动,暂时没有想出来,在想出来之前直接用土法命令改好了:

passwd krysztal

smbpasswd krysztal