在 Linux 中将 Samba 设置为主域控制器
系统管理员使用 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 8388608. 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 2014
最后,您可以使用 Windows 远程管理员工具连接到 Samba 服务器并将其用作域控制器。
如果您在上述过程中遇到任何问题,请确保通过更新所有软件包来更新系统。您也可以暂时禁用 SELinux,并查看 audit.log 以了解任何与 SELinux 相关的错误消息。此外,请确保您的 IPTables 规则没有阻止 Samba 需要在服务器之间进行通信的端口。
- 点赞
- 收藏
- 关注作者
评论(0)