我已尝试使用 AD 身份验证设置 Samba 文件服务器。
通过 Active Directory 的身份验证成功,但如果您重新启动服务器,Linux Samba 文件服务器将不会像 Windows 服务器那样自动加入域。
您仍然需要通过使用用户密码发出以下命令行来手动加入域:
net 加入广告 -U 用户名 -S DOMAIN.COM
有没有办法实现自动化?
我知道我可以放置一个初始化脚本,但是用户密码每 3 个月会更改一次,而我不想每 3 个月更改一次脚本。
我正在寻找类似 Windows 文件服务器的东西,在重新启动后它仍然会连接到域而不需要任何登录凭据要求。
这是我的配置文件:
cat /etc/samba/smb.conf
#======================= Global Settings =====================================
[global]
workgroup = MYDOMAIN
netbios name = host_name
realm = DOMAIN.COM
password server = dc01.domain.com
security = ads
idmap uid = 100000-200000
idmap gid = 100000-200000
template homedir = /home/%U
template shell = /bin/nologin
winbind use default domain = yes
winbind offline logon = yes
winbind enum users = yes
winbind enum groups = yes
[idmsx_share_only]
path = /var/windows_share
browseable = yes
writeable = yes
valid users = my_name
cat /etc/krb5.conf
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
default_realm = DOMAIN.COM
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
[realms]
NUS.EDU.SG = {
kdc = dc01.domain.com
admin_server = dc01.domain.com
}
[domain_realm]
.domain.com = DOMAIN.COM
domain.com = DOMAIN.COM
cat /etc/nsswitch.conf
passwd: files winbind
shadow: files winbind
group: files winbind
这是重启后的 samba 日志:(我在系统日志中没有发现任何异常/错误消息)
[root@samba_server ~]# wbinfo -t
checking the trust secret for domain DOMAIN_NAME via RPC calls failed
error code was NT_STATUS_DOMAIN_CONTROLLER_NOT_FOUND (0xc0000233)
failed to call wbcCheckTrustCredentials: WBC_ERR_AUTH_ERROR
Could not check secret
[root@samba_server ~]# cat /var/log/samba/log.winbindd
...
[2014/04/28 17:37:24.779467, 0] winbindd/winbindd_util.c:330(trustdom_list_done)
Got invalid trustdom response
[2014/04/28 17:42:24.855052, 0] winbindd/winbindd_util.c:330(trustdom_list_done)
Got invalid trustdom response
[2014/04/28 17:47:24.856028, 0] winbindd/winbindd_util.c:330(trustdom_list_done)
Got invalid trustdom response
[2014/04/28 17:47:48.627719, 0] winbindd/winbindd.c:240(winbindd_sig_term_handler)
Got sig[15] terminate (is_parent=1)
[2014/04/28 17:50:41, 0] winbindd/winbindd.c:1382(main)
winbindd version 3.6.9-168.el6_5 started.
Copyright Andrew Tridgell and the Samba Team 1992-2011
[root@samba_server ~]# cat /var/log/samba/log.nmbd
[2014/04/28 17:47:40, 0] nmbd/nmbd.c:66(terminate)
Got SIGTERM: going down...
[2014/04/28 17:50:44, 0] nmbd/nmbd.c:861(main)
nmbd version 3.6.9-168.el6_5 started.
Copyright Andrew Tridgell and the Samba Team 1992-2011
[2014/04/28 17:51:07, 0] nmbd/nmbd_become_lmb.c:397(become_local_master_stage2)
*****
Samba name server SAMBA_SERVER is now a local master browser for workgroup DOMAIN_NAME on subnet XXX.XXX.XXX.XXX
*****
[root@samba_server]# cat /var/log/samba/log.smbd
[2014/04/28 17:50:44, 0] smbd/server.c:1026(main)
smbd version 3.6.9-168.el6_5 started.
Copyright Andrew Tridgell and the Samba Team 1992-2011
[2014/04/28 17:50:45.890687, 0] printing/nt_printing.c:102(nt_printing_init)
nt_printing_init: error checking published printers: WERR_ACCESS_DENIED
[2014/04/28 17:50:45.911910, 0] printing/print_cups.c:151(cups_connect)
Unable to connect to CUPS server localhost:631 - Connection refused
[2014/04/28 17:50:45.912696, 0] printing/print_cups.c:528(cups_async_callback)
failed to retrieve printer list: NT_STATUS_UNSUCCESSFUL
然后我必须在重启后手动加入域:
[root@samba_server ~]# net join ads -U USER_NAME -S DC01.DOMAIN.COM
Enter User's password:
Joined domain DOMAIN.
答案1
每次重启时,您都不需要将 Samba 主机重新加入域!如果您操作正确,则只需在服务恢复后重新进行身份验证即可。
您是否遇到了 smb、winbind 或 kerberos 错误?我无法查看您链接的文章。
您很可能省略了其中某项服务的某些配置步骤。
另外,您在哪个平台上使用 Samba?我建议通过启动和停止底层服务并查找日志中的错误来对其进行一些基本的故障排除,这可能会有所帮助。
另外,不是为了自动执行一次又一次加入域的任务,您应该为您的 Samba 服务获取一个具有永不过期密码的“服务帐户”。
在大多数环境中,如果您清楚地解释了永不过期密码的要求,它不需要任何不寻常的权限,并且您将遵循适当的程序来维护它,那么通常不会有问题。
如果这是一个超安全的环境,并且他们不会为您提供永不过期的密码或更长的有效期,那么您可能只需要每三个月重新配置一次。
答案2
我也一直在尝试寻找这个,但最终偶然发现了它。不幸的是,我找不到我得到它的来源,但我相信这是因为 winbind 在 smbd 和 nmbd 之后启动。所以诀窍是在 winbind 启动后重新启动 smbd 和 nmbd。我不认为这是正确的 Linux 管理方式,但它对我来说有效
编辑/etc/rc.local
添加
service smbd restart
service nmbd restart
保存并重新启动以尝试。我这样做成功了。