如何在 Linux 中将 Samba 设置为主域控制器

举报
Tiamo_T 发表于 2021/11/19 00:22:52 2021/11/19
【摘要】 系统管理员使用 Samba 来克服在 Linux 和 Windows 的混合环境中的互操作性问题。它为 Windows 和 Linux 提供了一个公共平台,以拥有一个公共共享空间。 域控制器是一种服务,用于集中管理网络中的用户、组或任何对象。该服务使我们能够管理、验证和保护用户登录和相关数据。

系统管理员使用 Samba 来克服在 Linux 和 Windows 的混合环境中的互操作性问题。它为 Windows 和 Linux 提供了一个公共平台,以拥有一个公共共享空间。

域控制器是一种服务,用于集中管理网络中的用户、组或任何对象。该服务使我们能够管理、验证和保护用户登录和相关数据。

本教程解释了我们如何将 Linux 上的 Samba 配置为主域控制器。

1. 设置正确的主机名

确保您已经设置了适当的主机名和静态 ip。如果您使用内部 ip 地址,并且希望从 Internet 访问它,请在防火墙上设置适当的 NAT 规则。

在本教程中将使用 tgs.example.com 作为主机名。

# vi /etc/sysconfig/network 
HOSTNAME=tgs.example.com

确保它在 ifcfg-eth0 文件中有适当的静态 IP 地址设置。

# vi /etc/sysconfig/network-script/ifcfg-eth0
IPADDR=192.168.101.1
NETMASK=255.255.255.0

此外,在您的 /etc/sysconfig/network 和 /etc/resolv.conf 文件中相应地分配网关和 dns。

验证您的 /etc/hosts 文件是否包含类似于以下内容的条目。


# vi /etc/hosts
192.168.101.1	tgs.example.com	tgs

此外,请确保 NTP 服务已在此服务器上设置并正常运行。

2. 从源码安装 Samba

在 CentOS 上,默认情况下不会为最小安装类型安装 samba 包。

首先,安装以下依赖包。

# yum install glibc glibc-devel gcc python* libacl-devel krb5-workstation krb5-libs pam_krb5 git-core openldap-devel 

接下来,下载 samba 源代码,如下所示。

# git clone git://git.samba.org/samba.git sambaserver

这些文件将被下载到 sambaserver 目录。如下图安装samba服务器。

cd sambaserver

./configure  --enable-debug --enable-selftest

make

make install

Samba 将安装在默认位置 /usr/local/samba/bin。您将看到在此目录下安装了几个 samba 客户端实用程序。

# cd /usr/local/samba/bin/ 

# ls 
cifsdd       ldbsearch   ntdbrestore    regshell    smbcquotas  tdbbackup 
dbwrap_tool  locktest    ntdbtool       regtree     smbget      tdbdump 
eventlogadm  masktest    ntlm_auth      rpcclient   smbpasswd   tdbrestore 
gentest      ndrdump     oLschema2ldif  samba-tool  smbspool    tdbtool 
ldbadd       net         pdbedit        sharesec    smbstatus   testparm 
ldbdel       nmblookup   pidl           smbcacls    smbtar      wbinfo 
ldbedit      nmblookup4  profiles       smbclient   smbta-util 
ldbmodify    ntdbbackup  regdiff        smbclient4  smbtorture 
ldbrename    ntdbdump    regpatch       smbcontrol  smbtree 

3. 设置域供应

要启动域供应,请执行 samba-tool,如下所示。这将从配置文件中选取默认主机名和域名。

# /usr/local/samba/bin/samba-tool domain provision 
Realm [EXAMPLE.COM]: 
 Domain [EXAMPLE]: 
 Server Role (dc, member, standalone) [dc]: 
 DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: 
 DNS forwarder IP address (write 'none' to disable forwarding) [125.22.47.125]: 8.8.8.8 
Administrator password: 
Retype password: 
...
...
Adding DNS accounts 
Creating CN=MicrosoftDNS,CN=System,DC=example,DC=com 
Creating DomainDnsZones and ForestDnsZones partitions 
Populating DomainDnsZones and ForestDnsZones partitions 
Setting up sam.ldb rootDSE marking as synchronized 
Fixing provision GUIDs 
A Kerberos configuration suitable for Samba 4 has been generated at /usr/local/samba/private/krb5.conf 
Once the above files are installed, your Samba4 server will be ready to use 
Server Role:           active directory domain controller 
Hostname:              tgs 
NetBIOS Domain:        EXAMPLE 
DNS Domain:            example.com 
DOMAIN SID:            S-1-5-21-2869186506-3515775153-2841826798 

4.启动Samba服务

启动samba服务,如下图。

/usr/local/samba/sbin/samba 

将以下条目添加到 rc.local 文件以确保 samba 服务在系统启动期间自动启动。

# echo /usr/local/samba/sbin/samba >> /etc/rc.d/rc.local 

# cat /etc/rc.d/rc.local 
touch /var/lock/subsys/local 
/usr/local/samba/sbin/samba 

5. 检查 Samba 版本

您可以使用 samba 或 smbclient 命令验证 samba 版本,如下所示。

# /usr/local/samba/sbin/samba -V 
Version 4.2.0pre1-GIT-913b2a1 

# /usr/local/samba/bin/smbclient -V 
Version 4.2.0pre1-GIT-913b2a1 

以下命令将显示当前可用的所有 Samba 共享。

# /usr/local/samba/bin/smbclient -L localhost -U% 
Domain=[EXAMPLE] OS=[Windows 6.1] Server=[Samba 4.2.0pre1-GIT-913b2a1] 

	Sharename       Type      Comment 
	---------       ----      ------- 
	netlogon        Disk      
	sysvol          Disk      
	IPC$            IPC       IPC Service (Samba 4.2.0pre1-GIT-913b2a1) 
Domain=[EXAMPLE] OS=[Windows 6.1] Server=[Samba 4.2.0pre1-GIT-913b2a1] 

	Server               Comment 
	---------            ------- 

	Workgroup            Master 
	---------            ------- 

验证您是否能够使用管理员用户名和密码登录。

# /usr/local/samba/bin/smbclient //localhost/netlogon -Uadministrator -c 'ls' 
Enter administrator's password: 
Domain=[EXAMPLE] OS=[Windows 6.1] Server=[Samba 4.2.0pre1-GIT-913b2a1] 
  .   D        0  Fri Feb 21 15:06:15 2014 
  ..  D        0  Fri Feb 21 15:06:28 2014 
57901 blocks of size 8309996. 54372 blocks available 

6. 验证域

现在让我们检查域是否按预期运行。检查 SRV 和 A 记录,如下所示。

# host -t SRV _ldap._tcp.example.com 
_ldap._tcp.example.com has SRV record 0 100 389 tgs.example.com. 

# host -t SRV _kerberos._udp.example.com 
_kerberos._udp.example.com has SRV record 0 100 88 tgs.example.com. 

# host -t A tgs.example.com 
tgs.example.com has address 192.168.101.1

使用 samba-tool 命令验证域名,如下所示。

# /usr/local/samba/bin/samba-tool testparm --suppress-prompt | grep realm 
	realm = EXAMPLE.COM 

7. 配置 Kerberos

将示例 krb5.conf 文件复制到 /etc 目录。

cp /usr/local/samba/share/setup/krb5.conf /etc/krb5.conf 

将 default_realm 设置为您的域名。在这种情况下,我们将其设置为 example.com

# cat /etc/krb5.conf 
[libdefaults] 
	default_realm = EXAMPLE.COM 
	dns_lookup_realm = false 
	dns_lookup_kdc = true 

使用 kinit 命令确保 Kerberos 设置正确,如下所示。

# kinit administrator@EXAMPLE.COM 
Password for administrator@EXAMPLE.COM: 
Warning: Your password will expire in 41 days on Fri Apr  4 15:06:25 2020

最后,您可以使用 Windows 远程管理员工具连接到 Samba 服务器并将其用作域控制器。

如果您在上述过程中遇到任何问题,请确保通过更新所有软件包使系统保持最新状态。您还可以暂时禁用 SELinux,并查看 audit.log 以获取任何与 SELinux 相关的错误消息。此外,请确保您的 IPTables 规则没有阻止 Samba 在服务器之间进行通信所需的端口。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。