背景知识
有一个小型的企业局域网,大约10年前,在Debian 5上建立了第3个Samba + LDAP + BIND(在网关上)的域。 实际上,她只需要用户身份验证和文件管理。 多年来,服务器已毫无问题地升级到Debian的新版本。 目前,它具有来自软件包的Debian 8和Samba 4.2。
从Windows 7开始,将计算机引入域(没有众所周知的带有编辑注册表的拐杖)无法正常工作。 相同的拐杖在Win 8和Win 10之前的版本1803中起作用。除了无法将计算机输入域之外,其他问题不断累积,因此,决定进行经典升级。 由于LAN结构的简单性,决定使用内部Samba DNS。
我想马上说这篇文章不是确切的指南,而是执行此操作的经验。 强烈建议进行预测试阶段。 就我而言,服务器映像用于测试并部署在VirtualBox虚拟机上,此外,为了测试现有域客户端的行为,还创建了Win XP SP3和Win 10 1709和1803客户端计算机。
我还想指出,反复的错误是由常见的错别字引起的。 小心点
环境说明
操作系统:Debian 8
域:samdom.local
服务器名称:pdc
服务器IP:10.10.1.220
过渡过程
将软件包更新到最新版本+安装缺少的软件包。
就我而言,更新后,仅需交付krb5-user。
apt-get update apt-get upgrade apt-get install samba smbclient krb5-user winbind
安装krb5-user时,系统将询问有关服务器名称和域名的几个问题。 我们填写服务器的数据。
桑巴站
service samba-ad-dc stop service smbd stop service nmbd stop service winbind stop
传输旧库和samba配置
mv /var/lib/samba /var/lib/samba.NT mv /etc/samba/smb.conf /etc/samba/smb.conf.NT
我将旧数据库移至/var/lib/samba.NT,因此您需要重新创建/ var / lib / samba目录
mkdir /var/lib/samba
该文档建议将所有数据库移至单独的文件夹。 就我而言,只有gencache_notrans.tdb是分开放置的,因此我只需要传输它。
cp -p /run/samba/gencache_notrans.tdb /var/lib/samba.NT
该文档还说,仅需要六个数据库:
秘密文件
schannel_store.tdb
passdb.tdb
gencache_notrans.tdb
group_mapping.tdb
account_policy.tdb
但是,文件夹中其他文件的存在不会阻止过渡过程。
开始经典的升级过程
samba-tool domain classicupgrade —dbdir=/var/lib/samba.NT --realm=samdom.local --dns-backend=SAMBA_INTERNAL /etc/samba/smb.conf.NT
我注意到该文档不建议使用顶级域local。,但就我而言,它是历史上发生的。
在屏幕上显示的工作表中,管理员密码将闪烁,您可以根据需要写下来)。
如果遇到问题,则在尝试进行经典升级之前,必须记住删除在此过程中创建的数据库文件和smb.conf。
rm -f /etc/samba/smb.conf rm -rf /var/lib/samba/*
如果一切顺利,则可以进行下一步。
检查和编辑服务器配置
在/etc/resolv.conf中应该是(如果不是为您自动创建的)
domain samdom.local nameserver 10.10.1.220
在/ etc /主机中
127.0.0.1 localhost localhost.localdomain 10.10.1.220 pdc.samdom.local pdc
/ etc / hostname文件必须具有缩写的主机名
pdc
在/ etc / network / interfases中
dns-nameservers 10.10.1.220 dns-search samdom.local
重定向DNS请求
如果您的服务器将DNS查询重定向到Internet(并且使用INTERNAL_DNS Samba),则需要在smb.conf的[global]部分中,从ISP ip添加一行:
dns forwarder = ip
在“ Samba” 4.2中,只能指定一个IP。 在下面-一些,带空格。
如果您的网关控制传出流量,则不要忘记打开从服务器到端口53的udp数据包通道。
配置Kerberos
我们将/etc/krb5.conf带到类似形式:
[libdefaults] default_realm = SAMDOM.LOCAL dns_lookup_realm = false dns_lookup_kdc = true krb4_config = /etc/krb.conf krb4_realms = /etc/krb.realms kdc_timesync = 1 ccache_type = 4 forwardable = true proxiable = true v4_instance_resolve = false v4_name_convert = { host = { rcmd = host ftp = ftp } plain = { something = something-else } } fcc-mit-ticketflags = true [realms] SAMDOM.LOCAL = { kdc = pdc admin_server = pdc default_domain = SAMDOM.LOCAL } [domain_realm] .samdom.local = SAMDOM.LOCAL samdom.local = SAMDOM.LOCAL
时间同步
如果ntp软件包不值得,请设置:
apt-get install ntp
在我的情况下,没有目录/ var / lib / samba / ntp_signd /。 手动创建。
接下来,您需要授予他权利:
chown root:ntp /var/lib/samba/ntp_signd/ chmod 750 /var/lib/samba/ntp_signd/
接下来,您需要将/etc/ntp.conf文件转换为类似形式:
# Local clock (Note: This is not the localhost address!) server 127.127.1.0 fudge 127.127.1.0 stratum 10 # The source, where we are receiving the time from server 0.pool.ntp.org iburst prefer driftfile /var/lib/ntp/ntp.drift logfile /var/log/ntp ntpsigndsocket /var/lib/samba/ntp_signd/ # Access control # Default restriction: Only allow querying time (incl. ms-sntp) from this machine restrict default kod nomodify notrap nopeer mssntp # Allow everything from localhost restrict 127.0.0.1 # Allow that our time source can only provide time and do nothing else restrict 0.pool.ntp.org mask 255.255.255.255 nomodify notrap nopeer noquery
卸下拍打并重新启动
apt-get remove slapd reboot
测试中
在文档中,测试是通过管理员帐户完成的。 从历史上看,我们已经开发出管理操作来自domain_admin。 接下来,将显示命令及其正确的输出。
测试桑巴舞: root@debian:/root# smbclient -L localhost -U% Domain=[SAMDOM] OS=[Unix] Server=[Samba 4.1.17-Debian] Sharename Type Comment
如果您在这里遇到错误:
与loclhost的连接失败(错误NT_STATUS_UNSUCCESSFUL)
检查samba是否启动。 在一个测试中,我忘记去除(关闭)拍打,并且也看到了此错误。
再检查一次:
$ smbclient //localhost/netlogon -Udomain_admin -c 'ls' Enter Administrator's password: Domain=[SAMDOM] OS=[Unix] Server=[Samba xyz] . D 0 Tue Nov 1 08:40:00 2016 .. D 0 Tue Nov 1 08:40:00 2016 49386 blocks of size 524288. 42093 blocks available
测试DNS root@debian:/root# nslookup samdom.local Server: 10.10.1.220 Address: 10.10.1.220#53 Name: samdom.local Address: 10.10.1.220
$ host -t SRV _ldap._tcp.samdom.local. _ldap._tcp.samdom.example.com has SRV record 0 100 389 pdc.samdom.example.com.
$ host -t SRV _kerberos._udp.samdom.local. _kerberos._udp.samdom.example.com has SRV record 0 100 88 pdc.samdom.example.com.
$ host -t A pdc.samdom.local. dc1.samdom.example.com has address 10.10.1.220
测试Kerberos root@debian:/root# kinit domain_admin@SAMDOM.LOCAL Password for domain_admin@SAMDOM.LOCAL: Warning: Your password will expire in 41 days on 27 2015 14:34:46
root@debian:/root
附加设置
为了使域名和组出现在Linux上,您需要修复/etc/nsswitch.conf而不是数字字符串应简化为以下形式:
passwd:文件winbind
组:文件winbind
请注意,winbind仅添加到这些行。 有关详细信息,请参阅文档。
就我而言,我还从该文件中删除了ldap的提及。
reboot
如果像我一样,如果在classicupgrade dns之前,该服务器位于另一台计算机上,并且您正在使用DHCP服务器,请不要忘记更改指向DNS服务器的DHCP服务器设置。配置网络文件夹
不建议开发人员将AD域控制器用作文件服务器。 但是,就我而言,没有其他服务器。
该设置在“ Samba”的
文档中有很好的描述,您需要查看一下。 简而言之,则:
有必要检查ACL支持samba。 smbd -b | grep HAVE_LIBACL HAVE_LIBACL
不要忘记该部分必须使用user_xattr和acl选项挂载。只有具有SeDiskOperatorPrivilege的用户和组才能配置对球的权限:例如,要将此类权限授予Domain Admins组,您需要运行以下命令:
net rpc rights grant "Samdom\Domain Admins" SeDiskOperatorPrivilege -U "Samdom\domain_admin"
直接添加球您需要:创建目录并分配必要的权限:
# mkdir -p /srv/samba/Demo/ # chown root:"Domain Admins" /srv/samba/Demo/ # chmod 0770 /srv/samba/Demo/
添加到smb.conf
[Demo] path = /srv/samba/Demo/ read only = no
之后,使用以下命令重新加载samba配置:
smbcontrol all reload-config
和以前一样,可以通过在球的描述中添加隐藏球:
browseable = no
接下来,从计算机的窗口,从具有
SeDiskOperatorPrivilege的帐户
分配权限 。 为此,请转到“计算机管理”。
绑定到远程计算机(在本例中为pdc域控制器)。 通过以下方式分配权限:“共享文件夹”->“共享资源”。
当您转到“共享文件夹”项时,可能会收到错误消息“过程号超出允许的限制(1745)”。 我无视它,因为我在Internet上找不到任何可理解的内容,并且在测试和操作过程中也不会引起问题。
如果您以这种方式共享旧的网络文件夹,则可能会出现问题。 在classicupgrade之前,可以通过smb.conf,linux用户,group,other和setfacl来设置Ball的权限。 经过经典升级后,拥有变更,更名等权利的学校开始逐渐出现。 递归setfacl并没有帮助,因为出现了带有权利继承的门框。
值得注意的是,在文档中,建议通过远程访问从计算机的窗口中分配权限。
结果,由于文件量不是很大,因此决定在非工作时间将数据传输到Windows计算机,根据samba开发人员的建议重新创建网络文件夹并重新上传文件。
服务器上的用户主文件夹
用户主文件夹的管理也已更改。
值得注意的是,
文档中还对配置过程进行了很好的描述。
我将仅描述我的案例的关键功能。
以前,每个用户都有自己的球。 现在,仅共享文件夹被共享,并且用户只能访问其目录。
使用
Microsoft远程服务器管理工具(RSAT)进行安装 。 RSAT具有令人不快的功能。 将Win 10升级到新版本时,必须重新安装。
可以通过“用户和计算机”管理单元中的用户属性手动拾取主球。 个人资料标签。 U盘:\\ pdc \用户共享\用户名
但是,通过域策略执行此操作更为方便,以上文档在
“使用组策略首选项”段落中对此进行了非常清楚的描述。
不要忘记可以通过添加对通用球的描述来隐藏它:
browseable = no
域升级
使用以下命令将域毫无问题地升级到2008_R2级别:
samba-tool domain level raise
您可以使用以下命令查看级别:
samba-tool domain level show
如果smbd.log被CUPS错误轰炸
就我而言,这个问题出现了:
无法连接到CUPS服务器本地主机:631
已
由此简短文章更正。
随后升级到Debian 9问题和解决方案
在
apt-get dist-upgrade
存在一个问题,即samba和winbind不想更新。 陷入了依赖冲突。
不幸的是,这篇文章中的方法帮助了我没有保存的链接。
这是它的直接引文:
如果Samba处于AD-DC模式,则它和winbind失败。
执行这些命令,然后尝试再次运行升级
systemctl停止smbd nmbd winbind
systemctl禁用smbd nmbd winbind
systemctl取消屏蔽samba-ad-dc
systemctl启动samba-ad-dc
systemctl启用samba-ad-dc
更新SAMBA版本后,建议:“ Samba AD DC数据库检查”。
# samba-tool dbcheck --cross-ncs
自从Deb 9 SAMBA 4.5版以来,我遇到了一堆错误“ replPropertyMetaData”。
文档中介绍了故障排除过程:
wiki.samba.org/index.php/Updating_Samba#Fixing_replPropertyMetaData_Attributes它归结为命令的执行:
samba-tool dbcheck --cross-ncs --fix --yes
使用的来源清单
SAMBA文档:
将Samba NT4域迁移到Samba AD(经典升级)将Samba设置为Active Directory域控制器使用Windows ACL设置共享用户主文件夹很棒的文章:
Debian 8域控制器(...已经具有内置的Samba4)Samba错误:无法连接到CUPS服务器本地主机:631一位不知名的英语作者的一篇文章,描述了如何升级到Debian 9