赞
踩
摘抄samba.org的摘要,开源的,注明出处给大家。https://samba.org
Samba is a free Open Source software which provides a standard interoperability between Windows OS and Linux/Unix Operating Systems.
Samba 是一个免费的开源软件,它提供了Windows操作系统和Linux/Unix操作系统之间的标准互操作性。
Samba can operate as a standalone file and print server for Windows and Linux clients through the SMB/CIFS protocol suite or can act as an Active Directory Domain Controller or joined into a Realm as a Domain Member. The highest AD DC domain and forest level that currently Samba4 can emulate is Windows 2008 R2.
Samba 可以通过SMB/CIFS协议套件作为Windows和Linux客户端的独立文件和打印服务器运行,也可以充当Active Directory域控制器或作为域成员加入域。目前Samba 4可以模拟的最高AD DC域和林级别是Windows 2008 R2。
Windows 2008 R2和之后的Windows server2016这些特性没差多少。
3.1 准备一个终端工具。
3.2 vSphere中新建Debian12,开启SSH配置。
3.3 终端工具连接Debian12的SSH
3.4 Debian12安装SAMBA4的准备工作
3.5 Debian12完成SAMBA4的安装
3.6 Debian12完成Kerberos安装
3.7 安装完成后配置启动服务
3.8 安装完成后其它工作
mobaxterm、xshell、windterm各有千秋,都好用。windterm全免费,但是各种密码输入界面BUG,但不影响使用。
此前我们都是通过ESXI创建或者运行主DNS的那台Debian12克隆,这次我们在vSphere上演示如何起虚拟机。Debian12的镜像之前DNS配置的时候,已经上传到ESXI中,无需二次上传。
首先正常登录进入vSphere(vCenter Server控制台)
在我们创建的集群上右键,选择新建虚拟机。
提供多种方式创建一个新的虚拟机,这里为了演示选择第一种,往后我推荐大家起一个模板,从模板创建,这样就以后不需要重复添加源这些操作。创建过程大家直接看图。
创建完虚拟机后,在虚拟机列表找到你的新虚拟机,右键——控制台——启动远程控制台,会打开提示:问你是否通过VMware workstation来管理,点击打开,你就跳转到你电脑本机安装的VMware workstation里了。什么?你电脑没有VMware workstation!装一个,别在ESXI的网页界面里折磨自己。
跳转到VMware workstation后,你发现ESXI其实是帮你在VMware workstation连接了一个远程服务器,接下来所有步骤就像正常的虚拟机哪有操作就行,安装Debian12过程中的重点地方,我会在下面截图中说明。
其实都没啥重点,我写了这么多篇,安装部分不多于赘述了,就放些关键图吧,这部分太呆了。
扫描完组件后,进入到配置主机名和域名,正常写,我们这是LDAP服务主机名就写LDAP,域也正常写就行了。
最后等待安装就行,Debian12的安装真没啥说的,动手强的兄弟批量装机,这玩意可能就三分钟内点完安装了。安装完成后,你的ssh服务是默认打开的。
先在Debian12里面打开终端,su提权到root身份
su
一般开始都是DHCP获得的IP,正常情况服务器IP地址是需要固定的,无论你用网络高级选项配置还是nmtui,你固定IP就行配置完成后,正常保存退出,通过“ip a”命令检查IP地址是否正确,通过ping www.baidu.com检查是否与外网通讯正常。
ip a
ping www.baidu.com
接着修改SSH配置文件,调整为默认允许root身份登录
nano /etc/ssh/sshd_config
把PermitRootLogin前面的#号去掉,后面改为yes,然后按ctrl+x再加Y确认修改(ctrl+u撤销上一步),接着重启ssh服务
systemctl restart sshd
以windtrem为例,右键新建会话,如下配置,root是你登录的用户名,正常连接即可。
进入到ssh后,再次检查
ip a
ping www.baidu.com
开局都是0配置,你的内网是即插即用的,这一步应该没毛病,有问题ping不通就去检查你的路由器。
接着去修改Debian软件仓库源,我喜欢同时指定为国内的阿里和清华源,流程如下
nano /etc/apt/sources.list
把里面的所有内容清空,把下面的内容粘贴进去,这里就提醒终端软件的好处了,wind支持你直接你在CSDN复制,然后在终端里面右键直接粘贴
deb https://mirrors.aliyun.com/debian/ bullseye main non-free contrib deb-src https://mirrors.aliyun.com/debian/ bullseye main non-free contrib deb https://mirrors.aliyun.com/debian-security/ bullseye-security main deb-src https://mirrors.aliyun.com/debian-security/ bullseye-security main deb https://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib deb-src https://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib deb https://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib deb-src https://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free deb-src https://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free
编辑好如下,按ctrl+x再加Y确认修改(ctrl+u撤销上一步)
接着apt-get update更新源
apt-get update
根据SAMBA官网的建议,要确保你的Linux文件系统(如ext 3、ext4、xfs或btrfs)支持ACL,这不用去管,现在的Linux发行版都支持。然后规划好你的主机名(注意主机名就不要加域名后缀了)和静态IP地址,从这步开始就很重要,请通过nmtui命令,先完成这些配置。
正式安装samba前,结合官方samba wiki:
Note1,咱们的DC域控搭建完成后,是作为服务端工作,其它Linux的机器如果要通过我们域控samba DC里面创建的账号登录域,那么它只充当客户端角色,只安装libpam-winbind和libnss-winbind包就行。
Note2,是告诉我们samba DC域控,一般是顶级管理设备,它可以直接提供DNS、NTP等基础服务,如果你要让你的samba DC域控充当NTP,你还需要安装一个ntp包,然后参考我写的0x04文章配置NTP就行。
再看官方wiki的语句,要求我们安装如下内容:
apt-get install acl attr samba winbind libpam-winbind libnss-winbind krb5-config krb5-user dnsutils python3-setproctitle
如果你是新手,把官方的安装命令一个一个拆开,分解如下:
截止20230911,我发现在Debian12里,安装samba,做文件共享功能和做DC域控是不一样的,不是同一个包名,这一点在官方的安装语句中并没有提及,只是要求安装samba,但安装samba后,可能导致直接无法工作。真正需要安装的是samba-ac-dc包,直接说可能没概念,直接上图:
所以前情提要说完,接下来我们正式进入安装过程
首先更新你的源,注意更新update就行了。
apt-get update
接着执行apt-get install安装命令
apt-get install samba-ad-dc
你发现大量的依赖包报错,注意不要直接使用aptitude命令整体自动解决依赖包问题进行安装,最好的解决办法是吧上述的Depends包单独拎出来,先查询版本,再使用aptitude进行分解安装,分解命令如下:
aptitude install samba=2:4.17.10+dfsg-0+deb12u1~bpo11+1 //按要求指定版本安装
apt-cache policy samba-dsdb-modules //先查版本,找最新版本,然后再指定版本安装
aptitude install samba-dsdb-modules=2:4.17.10+dfsg-0+deb12u1~bpo11+1
apt-cache policy samba-vfs-modules
aptitude install samba-vfs-modules=2:4.17.10+dfsg-0+deb12u1~bpo11+1
apt-cache policy winbind
aptitude install winbind=2:4.17.10+dfsg-0+deb12u1~bpo11+1
aptitude命令的工作逻辑是检查依赖问题,然后给出建议,输入y代表接受第一个建议,输入n代表不同意这个建议,系统会给你下一个提示,输入q代表退出,下面我从winbind往上依次执行命令,包含截图:
apt-cache policy winbind
aptitude install winbind=2:4.17.10+dfsg-0+deb12u1~bpo11+1
apt-cache policy samba-vfs-modules
aptitude install samba-vfs-modules=2:4.17.10+dfsg-0+deb12u1~bpo11+1
apt-cache policy samba-dsdb-modules //先查版本,找最新版本,然后再指定版本安装
aptitude install samba-dsdb-modules=2:4.17.10+dfsg-0+deb12u1~bpo11+1 //安装samba-vfs-modules后,这个一般都会自动安装
aptitude install samba=2:4.17.10+dfsg-0+deb12u1~bpo11+1 //按要求指定版本安装
这些依赖包单独安装完后,最好执行samba-ad-dc安装命令
apt-get install samba-ad-dc
aptitude install samba-ad-dc
//两个命令都可以,因为依赖问题已经全部解决
如何检查自己是否安装成功了呢,使用dpkg命令,可以检查如下输出:
dpkg -s samba
开始前说明一下Kerberos的Realm在这篇博客里为cluster.io。
Realm :Kerberos所管理的一个领域或范围,称之为一个 Realm。
再看官方wiki的语句,要求我们安装如下内容:
apt-get install acl attr samba winbind libpam-winbind libnss-winbind krb5-config krb5-user dnsutils python3-setproctitle
如果你是新手,把官方的安装命令一个一个拆开,分解如下:
samba官网Wiki的内容我们通过上一轮安装就差acl、attr、libpam-winbind、libnss-winbind、krb5-config、krb5-user 、dnsutils、python3-setproctitle没装了。
其中libpam-winbind、libnss-winbind是客户端需要装的,服务端咱们就不安装(并且细心的看官会发现,安装这两行会破坏samba-ac-dc的samba-common包依赖,客户端要求这个降低版本)
acl、attr、这两个,正常Linux发行版都是默认安装的。咱们直接执行一下:
krb5-config、krb5-user 、dnsutils、python3-setproctitle咱们一起执行安装
apt-get install krb5-config krb5-user dnsutils python3-setproctitle
//如果遇到依赖包问题,就使用aptitude安装
aptitude install krb5-config krb5-user dnsutils python3-setproctitle
安装Krb期间会有三配置框,都输人一样的内容,区别只是第一个框要大写输入:
这样安装完了,一般这个kerboros安装没啥报错。
安装完成后,运行前,先要把samba默认的smbd和nmbd这些功能关掉,因为他们会占用端口,影响samba做DC域控的功能
systemctl stop samba-ad-dc smbd nmbd winbind
systemctl disable samba-ad-dc smbd nmbd winbind
samba的配置生成方式wiki上介绍有两种,一种是一条命令交互方式配置,一种是改配置文件,官方建议用交互式命令,使用前要把samba默认的smb.conf文件,给改名,我们需要重新生成配置文件,然后执行samba-tool
mv /etc/samba/smb.conf /etc/samba/smb.conf.initial
samba-tool domain provision --use-rfc2307 --interactive
这里又有一些区别了,其它linux版本,在交互配置第一个就要求你输入Realm,但Debian12不需要,它会匹配出来,直接回车默认就行
Server Role角色咱们肯定是做DC域控
DNS backend选samba默认就行,如果你准备把samba这个作为DNS服务器,你就要选BIND9_DLZ,我建议使用我们之前博客自建的DNS服务器,这样域控死了,DNS还能工作,在业务上不至于一锅端,至于你以后想all in one你自己倒腾。
DNS forwarder配置上,默认Debian12会填写你的网卡的DNS地址第一个。
Password写复杂点,写简单了会报错,报错又要去删除smb.conf文件
配置完后,你会看到一堆输出,主要看后面红框部分,前面一长串都是输出来源,后面才是配置内容
接着,把Kerberos安装过程的默认配置文件重命名或者删掉,把samba自动配置产生的Kerberos配置文件给替换掉,或者简单点ln软连接过去
mv /etc/krb5.conf /etc/krb5.conf.initial
ln -s /var/lib/samba/private/krb5.conf /etc/
去/etc检查一下
ll /etc/krb5.conf
OK到这里,samba4 作为DC的基本安装和配置就结束,咱们启动一下看看
systemctl start samba-ad-dc //启动
systemctl status samba-ad-dc //检查状态
systemctl enable samba-ad-dc //设为开机启动
如遇到**Failed to start samba-ad-dc.service: Unit samba-ad-dc.service is masked.**问题,先执行解unmask:
systemctl unmask samba-ad-dc
mask被屏蔽这个问题是samba默认不提供systemctl等命令脚本来管理服务,会默认屏蔽mask掉,在wiki中有介绍,我不建议你按wiki去操作,因为sammb-ad-dc.service是一个设备文件,你无法编辑它,直接命令解mask就行了:解释超链接
最后,检验你的samba作为DC是否配置完成,使用下面语句:
samba-tool domain level show
你应该能看到上面的各种输出,它告诉你samba4现在能实现的最高等级是window 2008 R2级。
别高兴,samba作为DC还缺少认证访问,下面的Kerberos的各种测试都能过,才说明samba和Kerberos连接起来了。
samba作为DC,kerberos是他的认证服务器,为了让DC能解析到kerberos,需要把DNS为DC设备本机,并且添加搜索域:
nmtui
改完以后最保险的做法是重启一次,保证修改生效。
当然你也可以把自己的主机名和IP地址,手动添加到etc的hosts文件,方便自己能解析到自己。
nano /etc/hosts
重启,保证配置生效。
ping -c4 pdc //检查通过主机名能否访问自己
ping -c4 cluster.io //检查通过realm能否访问安装的Kerberos
ping -c4 pdc.cluster.io //检查通过域名能否访问自己
这里配置正确能解析的话,都应该共同指向你的本机地址。
接下来检查域控DC的配置:
host -t A cluster.io
host -t A pdc.cluster.io
host -t SRV _kerberos._udp.cluster.io
host -t SRV _ldap._tcp.cluster.io
你应该要看到正常解析主机host的各类资源,SRV是用来查询主机端口资源的服务类型。
最后我们检查Kerberos的配置:
kinit administrator@CLUSTER.IO //administrator是安装Kerberos时的默认账号
klist
你应该看到正常输出Kerberos的通讯内容。
到这里,每天花点时间折腾,没想到五天的时间安装配置终于写完,中间遇到各种情况,比如一开始Debian依赖包的问题,一个一个查包解决,后面再使用aptitude;又或者samba4安装后服务被屏蔽,走弯路看官网wiki折腾文件,最后发现命令解屏蔽;还有Kerberos的配置和解析一直不对…说实话在Debian12上,第一次这样折腾域控,整合了太多学习资料,最后搭建完毕,成就感之余,都是累。
可能之前我win ad用多了,没啥感觉,现在想起来搭域控感觉真的不一样,对这个东西的理解加深了很多。
当然它支持all in one,把NTP\DNS都结合起来,我不太喜欢这种做法,这种会造成单点故障,这很显然不是运维人员希望看到的,这些都是后话了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。