Debian Jessie/Stretch 上 Samba 4 域控脚本配置与备份验证实战

发布时间:2026/11/2 12:51:49

Debian Jessie/Stretch 上 Samba 4 域控脚本配置与备份验证实战 简介这份资源面向在 Debian 环境下运维 Samba 4AD-DC的工程师与运维人员汇集了作者日常使用的实用脚本覆盖备份、权限检查、sysvol ACL 设置、域信息查看与调试信息收集等场景可帮助读者减少手工排查与重复配置的工作量。压缩包共 25 个文件以 12 个 sh 脚本、9 个 txt 说明文档和 3 个 md 文件为主另含一份 backup_samba4 备份脚本整体约 71KB体积轻便。其中 txt 与 md 文档记录了 Debian Stretch、Buster 及 Ubuntu 18.04 上搭建 Samba AD-DC、成员服务器与文件服务器的操作要点脚本则对应备份、SePrivileges 检查、sysvol 权限设置、DNS 批量添加、数据库复制检查等具体任务。已有 250 人学习适合需要快速上手或完善现有 Samba 4 部署的读者参考借鉴。1. 从一台域控装完却连不上开始说 Samba 4上周帮一个朋友收拾他实验室里那台 Debian 机器Samba 4 装完、smb.conf也照着某篇老帖抄了一遍结果smbclient -L localhost直接报NT_STATUS_CONNECTION_REFUSEDsystemctl status smbd看着又是 active。折腾到半夜才发现他装的是 Debian Stretch 的 Samba 4.5而抄的配置是 Jessie 时代 4.2 的写法server max protocol和ntlm auth两处默认值都变了。这种「装上了但跑不通」的场面在 Debian Jessie 和 Stretch 上做 Samba 4 域控、文件共享、sysvol 备份的人几乎都遇过。这篇笔记就是围绕一套在 Debian Jessie / Stretch 上实测过的 Samba 4 脚本工具集来写从版本选择、依赖安装、脚本配置到备份验证一步步走完适合刚接手域控运维、又不想每次手敲一长串smbclient和rsync的开发者。2. 装前把版本和依赖钉死Jessie 与 Stretch 的差异2.1 两个发行版到底差在哪这套脚本的标题写得很直白在 Debian Jessie 和/或 Debian Stretch 上测试过。这句话不是客套它决定了你后面所有命令能不能直接抄。Jessie 自带的是 Samba 4.2.xStretch 自带的是 Samba 4.5.x两者在域控角色、备份路径、samba-tool子命令上都有细微差别。我一般会先确认系统版本和 Samba 版本再决定用哪套参数# 确认发行版代号jessie 还是 stretch cat /etc/debian_version lsb_release -a 2/dev/null # 确认 Samba 主版本4.2 和 4.5 的配置项默认值不同 smbd --version samba-tool --version/etc/debian_version在 Jessie 上返回8.xStretch 上返回9.xsmbd --version会打印类似Version 4.2.14-Debian或4.5.16-Debian。这两条信息决定了后面smb.conf里server max protocol要不要显式写、ntlm auth要不要打开。脚本本身不挑版本但它调用的samba-tool子命令在 4.2 和 4.5 之间参数名有变化所以装之前先把版本钉死比装完再救省事得多。2.2 依赖清单和安装命令Samba 4 域控和这套备份脚本依赖的东西不多但少一个就会在某个环节翻车。常见做法是把下面这组包一次装齐# 更新索引后安装 Samba 4 及脚本依赖 apt-get update apt-get install -y samba samba-common-bin smbclient \ rsync cron tar gzip # 如果这台机器要当域控还需要这些 apt-get install -y krb5-user libpam-winbind libnss-winbind \ attr aclsamba是主服务包samba-common-bin提供smbclient、smbpasswd等工具smbclient单独列出来是因为有些最小化镜像里它不在依赖链上。rsync和tar、gzip是备份脚本的核心脚本里做 sysvol 同步和打包全靠它们。krb5-user在配域控时用于 Kerberoslibpam-winbind和libnss-winbind让系统账户能和域账户对上attr、acl则是保留文件权限和扩展属性的关键——备份 sysvol 时如果丢了 ACL恢复出来的共享权限全是错的这个坑后面还会提。提示Jessie 的apt-get源如果已经归档需要先把/etc/apt/sources.list指向归档地址再apt-get update否则装到一半报 404。Stretch 同理装之前先确认源可用。2.3 脚本放哪、权限怎么给这套脚本是 Shell 写的拿到之后不要随手丢在/tmp里跑。我一般统一放在/usr/local/sbin/samba4-scripts/属主 root脚本本身给750避免普通用户误执行改坏配置# 建目录、放脚本、收紧权限 mkdir -p /usr/local/sbin/samba4-scripts cp -a ./samba4-scripts/* /usr/local/sbin/samba4-scripts/ chown -R root:root /usr/local/sbin/samba4-scripts chmod -R 750 /usr/local/sbin/samba4-scripts # 确认脚本首行是 bash避免 sh 解释器差异 head -n 1 /usr/local/sbin/samba4-scripts/*.shchmod 750意味着只有 root 和 root 组能读执行其他用户连看都看不到这对含域控凭据的备份脚本是必要的。head -n 1那步别省Debian 上/bin/sh指向 dash脚本里如果用了[[ ]]或数组用sh跑会直接语法报错确认首行是#!/bin/bash再往下走。3. 配置 Samba 4 与脚本参数把路径和凭据写对3.1 smb.conf 里必须显式写的几项不管脚本怎么封装底层还是靠smb.conf和samba-tool。在 Jessie 的 4.2 上server max protocol默认是SMB3Stretch 的 4.5 也是但如果你要和更老的客户端互通得手动降反过来ntlm auth在 4.5 里默认只允许ntlmv2老设备连不上就是这个原因。我一般会在[global]里显式写死这几项避免默认值随版本漂移[global] workgroup WORKGROUP server string Samba4 DC netbios name DC01 server role active directory domain controller dns forwarder 127.0.0.1 # 4.2 和 4.5 都建议显式指定避免默认值差异 server max protocol SMB3 # 老客户端需要时再打开默认保持 ntlmv2 ntlm auth ntlmv2-only # 备份脚本读取的共享路径 path /var/lib/samba/sysvol read only noserver role active directory domain controller是域控角色的开关写错成standalone server后面samba-tool domain provision会直接拒绝。dns forwarder指向本机是因为域控通常自带 DNS转发给上游解析。ntlm auth那行是血泪经验Stretch 上默认值收紧后一批老打印机和扫描仪连不上共享改成ntlmv2-only能兼容大部分设备实在不行才降到yes但那等于放开 ntlmv1安全性打折能不用就不用。3.2 脚本的配置文件怎么填这套脚本一般会读一个独立的配置文件把域控地址、管理员凭据、备份目录集中管理而不是硬编码在脚本里。常见做法是在脚本目录下放一个samba4.conf权限600# 脚本配置文件示例权限必须收紧 cat /usr/local/sbin/samba4-scripts/samba4.conf EOF # 域控主机名或 IP DC_HOSTdc01.example.lan # 域管理员账号不要用 root DC_ADMINAdministrator # 备份输出目录确保磁盘空间足够 BACKUP_DIR/backup/samba4 # sysvol 源路径 SYSVOL_PATH/var/lib/samba/sysvol # 保留最近几份备份 KEEP_DAYS7 EOF chmod 600 /usr/local/sbin/samba4-scripts/samba4.confDC_HOST填域控的 FQDN 或 IP脚本里smbclient连的就是它DC_ADMIN用域管理员而不是本地 root因为samba-tool的域操作认的是域账户。BACKUP_DIR要提前mkdir -p并确认剩余空间sysvol 里全是策略文件和脚本体积不大但文件数多rsync同步时 inode 消耗比空间更值得关注。KEEP_DAYS7是保留策略脚本按天打目录超过 7 天的自动清理这个值按你的合规要求改别拍脑袋写 30 又忘了磁盘只有 20G。3.3 域控初始化与脚本首次运行如果这台机器还没 provision先跑域控初始化再让脚本接管备份。初始化命令在两个版本上基本一致但域名和密码要一次写对# 停止服务后做域控初始化域名按实际改 systemctl stop smbd nmbd winbind samba-tool domain provision \ --use-rfc2307 \ --realmEXAMPLE.LAN \ --domainEXAMPLE \ --server-roledc \ --dns-backendSAMBA_INTERNAL \ --adminpassYourStrongPassw0rd! # 把生成的 krb5.conf 放到系统位置 cp /var/lib/samba/private/krb5.conf /etc/krb5.conf # 启动服务并设为开机自启 systemctl unmask samba-ad-dc systemctl enable samba-ad-dc systemctl start samba-ad-dc--use-rfc2307让 Samba 在 AD 里存 Unix 属性后面和 Linux 客户端对接时省事--dns-backendSAMBA_INTERNAL用内置 DNS不依赖外部 bind单机域控首选。--adminpass的密码要满足复杂度太简单会直接报错退出。初始化完krb5.conf必须拷到/etc/否则kinit和samba-tool的域认证会失败。服务名是samba-ad-dc而不是smbd这点在 Debian 上容易搞混systemctl start smbd起的是普通文件服务域控要走samba-ad-dc。初始化通过后再跑脚本的备份子命令做首次验证# 首次手动跑备份观察输出 /usr/local/sbin/samba4-scripts/backup-sysvol.sh --config /usr/local/sbin/samba4-scripts/samba4.conf # 看备份目录是否按日期生成 ls -lh /backup/samba4/脚本正常会打印同步了多少文件、打包到哪个 tarls能看到类似20250101/的日期目录。如果卡在smbclient认证先回头查samba4.conf里的DC_ADMIN和密码再确认kinit Administrator能不能拿到票据。4. 避坑与排查五条装完才发现的坑4.1 现象smbclient 报 NT_STATUS_CONNECTION_REFUSED原因多半是服务没起对。Debian 上 Samba 4 域控的服务单元是samba-ad-dc很多人习惯性systemctl start smbd结果smbd起来了但域控端口 389、445 的监听不全。解决是先systemctl status samba-ad-dc看状态再ss -tlnp | grep -E 389|445确认端口没监听就systemctl restart samba-ad-dc还不行看journalctl -u samba-ad-dc -n 50里的具体报错。4.2 现象备份出来的 sysvol 恢复后权限全乱原因是rsync没带 ACL 和扩展属性参数。sysvol 里的组策略依赖 ACL 决定谁能读普通rsync -a只保留基本权限ACL 和xattr全丢。解决是脚本里同步命令必须带-AX# 保留 ACL 和扩展属性sysvol 备份必须带 -AX rsync -aAX --delete $SYSVOL_PATH/ $BACKUP_DIR/$TODAY/sysvol/-A保留 ACL-X保留扩展属性--delete让备份和目标严格一致。少了-AX恢复时samba-tool不报错但客户端访问策略会莫名其妙被拒排查起来非常玄学。4.3 现象Stretch 上老设备连不上共享原因是 4.5 的ntlm auth默认只允许 ntlmv2老设备只会 ntlmv1。解决是在[global]里显式写ntlm auth ntlmv2-only先试仍不行才临时改yes并在改完后用smbclient -L从老设备侧验证。改yes等于放开弱认证只在内网隔离环境用用完记得改回。4.4 现象脚本跑一半报 command not found原因是脚本用了 bash 特性但被 dash 解释或者依赖包没装全。解决是先head -n 1确认 shebang 是#!/bin/bash再bash -n script.sh做语法检查最后dpkg -l | grep -E rsync|smbclient确认依赖在。Debian 的/bin/sh是 dash直接sh script.sh跑 bash 脚本必翻车。4.5 现象备份目录越积越大磁盘告警原因是KEEP_DAYS设太大或清理逻辑没生效。解决是先du -sh /backup/samba4/*看每天体积再确认脚本的清理分支真的在跑——有些脚本把清理写在if里但条件写反了。我一般会额外加一条 cron 兜底# 每天凌晨 2 点备份3 点清理 7 天前目录 0 2 * * * /usr/local/sbin/samba4-scripts/backup-sysvol.sh --config /usr/local/sbin/samba4-scripts/samba4.conf /var/log/samba4-backup.log 21 0 3 * * * find /backup/samba4 -maxdepth 1 -type d -mtime 7 -exec rm -rf {} \;cron 里重定向日志别省出问题时/var/log/samba4-backup.log是唯一的黑匣子。5. 装完怎么验证三条命令确认真的跑通装完不等于跑通我一般用三条命令做收尾验证缺一条都不算完。第一条验域控本身第二条验脚本备份产物第三条验恢复可用性——备份不验证恢复等于没备份。# 1. 域控健康检查看域信息能否正常拉出 samba-tool domain level show samba-tool domain info 127.0.0.1 # 2. 备份产物检查日期目录、文件数、tar 完整性 ls -lh /backup/samba4/ find /backup/samba4/$(date %Y%m%d) -type f | wc -l tar -tzf /backup/samba4/$(date %Y%m%d)/sysvol.tar.gz /dev/null echo tar ok # 3. 恢复演练解到临时目录比对关键文件 mkdir -p /tmp/sysvol-restore tar -xzf /backup/samba4/$(date %Y%m%d)/sysvol.tar.gz -C /tmp/sysvol-restore diff -r /var/lib/samba/sysvol /tmp/sysvol-restore/sysvol | headsamba-tool domain level show能打印出 domain 和 forest 的功能级别说明域控数据库可读domain info连本机 127.0.0.1 能返回域信息说明 LDAP 和内部 DNS 链路通。第二步的find | wc -l给出文件数和源目录find /var/lib/samba/sysvol -type f | wc -l对比数量对不上就是同步漏了tar -tzf只列不解能过说明包没损坏。第三步的diff -r是最实在的验证解出来的 sysvol 和源目录比对没有输出或只有时间戳差异才算过。下面这张表是我验证时对照用的出问题按行排查验证项命令通过标准失败先看域控服务systemctl status samba-ad-dcactive (running)journalctl -u samba-ad-dc端口监听ss -tlnp | grep -E 389|445有 LISTEN服务是否起对域信息samba-tool domain info 127.0.0.1返回域 DNkrb5.conf路径备份文件数find ... -type f | wc -l与源目录一致rsync是否带-AX包完整性tar -tzf ... /dev/null无报错磁盘空间、gzip恢复比对diff -r 源 解压目录无实质差异ACL、路径拼接有一次我只跑了前两条就以为万事大吉结果三个月后真要恢复时发现 tar 里少了Policies子目录——原因是脚本里rsync的源路径末尾少了斜杠同步的是目录本身而不是内容。从那以后我每次装完这套脚本都强制把上面三条验证走一遍尤其是diff -r那步宁可多花五分钟也不想在真出事时才发现备份是空的。希望帮到你。本文还有配套的精品资源点击获取
延伸阅读

更多相关文章

2026/11/2 12:51:49

表格控件中树形数据展示:拍平算法与交互实现

简介:面向C# WinForms开发者的实用示例资源,聚焦DataGridView控件本身不支持树形结构这一常见痛点,演示如何通过自定义数据模型、扩展控件行为与事件处理,在表格中模拟出可展开折叠的层次化展示效果,适合已掌握WinForm…

2026/11/2 12:51:49

回合制游戏源码解析:战斗循环、技能结算与二次开发实战

简介:这份资源面向Java初学者与游戏开发入门者,提供一套回合制游戏核心逻辑的源码实现,帮助理解如何用面向对象思想搭建轮流行动的战斗框架。包内以Java源码文件为主,围绕游戏管理器、士兵与Boss三类角色展开:管理器负…

2026/11/2 12:51:49

OPC Server快速开发包实战:从协议栈到可交付服务

简介:OPC Server Rapid Development Toolkits 是一套面向工业自动化软件开发者的 OPC 服务器快速开发工具包,适合具备初级编程水平、希望在 Visual C 或 Visual Basic 环境中快速构建 OPC DA 服务器而无需深入 ATL/DCOM 与 OPC 协议细节的开发者。资源完…

2026/11/2 13:52:05

BlenderDataVis:用Blender原生节点实现三维数据物理化可视化

1. 项目概述:这不是又一个“点几下就出图”的可视化玩具BlenderDataVis——光看名字,很多人第一反应是“哦,Blender里搞个柱状图贴模型上?”或者“是不是把Excel数据拖进去自动生成动画?”我第一次看到这个插件名时也这…

2026/11/2 13:52:05

纯Python与C库性能差距实测:原理、数据与优化指南

前阵子写一个行情数据处理脚本,一百多万条记录用纯Python循环算,跑了十分钟愣是没出结果。换成某个底层是C语言实现的库之后,几十毫秒就把同样的任务处理完了。这种反差让我决定认真做一次“纯Python vs C库”的性能对比实测,把为…

2026/11/2 13:52:05

中国制造2025试点城市数字化转型实践与关键技术

1. 项目背景与战略意义"中国制造2025"作为国家级战略规划,自2015年发布以来已深刻重塑国内制造业格局。这项战略的核心目标是通过十年时间(2015-2025),推动中国制造业从"大而不强"向"质量优先"转型…

2026/11/2 13:52:05

EasyDSS 2.2.7 Windows部署避坑:从环境检查到三条链路验证

简介:EasyDSS-windows-2.2.7-1912281435.zip 面向需要在 Windows 环境部署流媒体服务的开发者、运维人员及教学使用者,围绕视频上传、转码、直播、回放、分享和多屏播放等常见需求,提供一站式本地化视频管理方案,也可用于企业内训…

2026/11/2 13:52:05

新盟机械键盘开箱评测与使用指南

1. 新盟机械键盘开箱与基础配置刚拿到新盟机械键盘时,包装盒采用双层瓦楞纸材质,内部有珍珠棉缓冲层保护。拆开后会发现键盘本体、Type-C连接线、拔键器、备用键帽和说明书被分门别类放置。我建议第一时间检查配件是否齐全,特别是那根1.5米长…

2026/11/2 13:47:04

AI编程工具Coding Plan技术解析与成本优化实践

1. Coding Plan技术解析:AI编程时代的成本优化与效率革命作为一名长期奋战在AI编程一线的开发者,我见证了从早期Copilot到如今多模型协作的演进历程。Coding Plan的出现绝非偶然——当GLM-5、Qwen等国产大模型在代码生成领域达到商用水平,当开…

2026/11/2 6:08:01

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/2 6:39:12

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/2 1:04:04

工业级SPI隔离设计:硬件抗扰与信号完整性实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/2 1:04:04

PLFM_RADAR:主动探测数据通道,构建低误报的数据感知系统

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/2 1:04:04

工业SPI隔离设计:MAX14431与STM32F746硬件抗干扰实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/2 6:08:01

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/2 6:39:12

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑