samba suggestions (and whislist, a test with 4.7rc4 on debianstretch )
L.P.H. van Belle
belle at bazuin.nl
Thu Aug 17 09:47:59 UTC 2017
Hai,
When samba is installed with distro packages, it always started with a default config.
so few suggestions, which i encountered with my new 4.7rc4 debian packages.
some parts are not only for debian improvable.
For example i did these steps.
make sure /etc/hosts is setup correct.
# test install samba 4.7rc4, AD DC with bind9_DLZ
apt-get install samba winbind krb5-kdc ntp bind9
# after the install, disable and stop services.
systemctl disable smbd.service nmbd.service winbind.service
systemctl stop smbd.service nmbd.service winbind.service
# provision
Results in an ugly message, which should not be needed, ihmo.
I also suggest, to change the order of the first 3 questions.
I would use this order in provisioning.
1) Server Role (dc, member, standalone) [dc]:
2) realm
3) domain
based on server role you can exit the samba-tool script sooner.
samba-tool domain provision --interactive
Realm [TEST.EXAMPLE.COM]:
Domain [TEST]: TEST
Server Role (dc, member, standalone) [dc]:
DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: BIND9_DLZ
Administrator password:
Retype password:
ERROR(<class 'samba.provision.ProvisioningError'>): Provision failed - ProvisioningError: guess_names: 'realm =' was not specified in supplied /etc/samba/smb.conf. Please remove the smb.conf file and let provision generate it
File "/usr/lib/python2.7/dist-packages/samba/netcmd/domain.py", line 474, in run
nosync=ldap_backend_nosync, ldap_dryrun_mode=ldap_dryrun_mode)
File "/usr/lib/python2.7/dist-packages/samba/provision/__init__.py", line 2028, in provision
sitename=sitename, rootdn=rootdn, domain_names_forced=(samdb_fill == FILL_DRS))
File "/usr/lib/python2.7/dist-packages/samba/provision/__init__.py", line 608, in guess_names
raise ProvisioningError("guess_names: 'realm =' was not specified in supplied %s. Please remove the smb.conf file and let provision generate it" % lp.configfile)
now, the solution to me looks simple, i just cant code this in python.
if : samba-tool domain provision is called,
check if /etc/samba/smb.conf exist, report it, ask question to move or delete, ( i suggest,) move to smb.conf.before-provisioning.
If this is done, ask, clear the samba data from old config file ( STATEDIR: /var/lib/samba ). imo this helps in preventing unneeded and old/incorrect data in the samba data files.
I may also prevent corruptions, better safe then sorry and same as above, mv /var/lib/samba{,.before-provisioning}
now we always start clean without any old data in var/lib/samba , if the parameter --interactive is used, you get the questions, if without, do all needed changes, and report it at the end.
And now start provisioning, without problems and resulting in ....
The Kerberos KDC configuration for Samba AD is located at /var/lib/samba/private/kdc.conf
A Kerberos configuration suitable for Samba AD has been generated at /var/lib/samba/private/krb5.conf
Once the above files are installed, your Samba AD server will be ready to use
Server Role: active directory domain controller
Hostname: ossec
NetBIOS Domain: TEST
DNS Domain: test.example.com
DOMAIN SID: S-1-5-21-2596934827-1870062432-3111992188
so this looks good.
now setup bind.
(https://wiki.samba.org/index.php/BIND9_DLZ_DNS_Back_End)
here it says : Verify that your /etc/krb5.conf Kerberos client configuration file is readable ...
Now by default it its, but the by samba created is in /var/lib/samba/private/krb5.conf
krb5.conf ( in case of a debian install) the default is correct for samba. )
the samba version contains.
[libdefaults]
default_realm = TEST.EXAMPLE.COM
dns_lookup_realm = false
dns_lookup_kdc = true
now the default_realm, is also in the default settings, from package install in debian.
and these, even if not defined are the defaults.
dns_lookup_realm = false
dns_lookup_kdc = true
so im wondering, is creating /var/lib/samba/private/krb5.conf really needed?
The provisioning can also check if
default_realm = TEST.EXAMPLE.COM is already defined in /etc/krb5.conf,
if its not existing, create the samba version, if it exist, the samba version is(maybe) not needed.
Achter changing/adding the needed bind settings.
systemctl unmask bind9
systemctl enable bind9
systemctl restart bind9
* NOTE1 ( see below, i forgot the resolv.conf change.. )
that should happen at this point.
and enableing samba.
systemctl unmask samba-ad-dc
systemctl enable samba-ad-dc
systemctl start samba-ad-dc
and result is a successfull install and start of a (debianized) 4.7.0RC4.
* NOTE1
if you see this. your resolv.conf is faulty. ( mine was )
A few log observations. ( about 29 x this part )
[2017/08/17 11:07:11.920124, 0] ../lib/util/util_runcmd.c:323(samba_runcmd_io_handler)
/usr/sbin/samba_dnsupdate: ERROR(runtime): uncaught exception - (9711, 'WERR_DNS_ERROR_RECORD_ALREADY_EXISTS')
[2017/08/17 11:07:11.920233, 0] ../lib/util/util_runcmd.c:323(samba_runcmd_io_handler)
/usr/sbin/samba_dnsupdate: File "/usr/lib/python2.7/dist-packages/samba/netcmd/__init__.py", line 176, in _run
[2017/08/17 11:07:11.920264, 0] ../lib/util/util_runcmd.c:323(samba_runcmd_io_handler)
/usr/sbin/samba_dnsupdate: return self.run(*args, **kwargs)
[2017/08/17 11:07:11.920289, 0] ../lib/util/util_runcmd.c:323(samba_runcmd_io_handler)
/usr/sbin/samba_dnsupdate: File "/usr/lib/python2.7/dist-packages/samba/netcmd/dns.py", line 939, in run
[2017/08/17 11:07:11.920523, 0] ../lib/util/util_runcmd.c:323(samba_runcmd_io_handler)
/usr/sbin/samba_dnsupdate: raise e
ending with :
[2017/08/17 11:07:12.326093, 0] ../source4/dsdb/dns/dns_update.c:290(dnsupdate_nameupdate_done)
../source4/dsdb/dns/dns_update.c:290: Failed DNS update - with error code 29
[2017/08/17 11:07:13.327764, 0] ../source4/lib/tls/tlscert.c:167(tls_cert_generate)
TLS self-signed keys generated OK
after a resolv.conf change, i did run:
samba_dnsupdate --all-names
with result : No DNS updates needed
( keep in mind, i try not to touch original debian files where possible. )
I did add in /etc/krb5.conf
default_keytab_name = /var/lib/samba/private/secrets.keytab
Last, i cleared all logs, rebooted the server, that showed.
[.....] A stop job is runnin for Samba AD Daemon.. for few min.
I think this has todo with the same thing ( i saw the technical threads about logrotate and child processes )
thats someing i'll have an extra look at.
Just some observations.
the Debian Packages info, wil be posted on the list in few min.
Greetz,
Louis
More information about the samba-technical
mailing list