[SCM] Samba Shared Repository - branch master updated
Pavel Filipensky
pfilipensky at samba.org
Fri Jul 26 18:17:01 UTC 2024
The branch, master has been updated
via e61f53b656f WHATSNEW: Automatic keytab update after machine password changes
via 6a97f8e16d8 selftest: Add tests for keytab update in clustered samba
via be29fe50adb selftest: setup clusteredmember with kerberos, change dependency to "ad_dc"
via c76727b3c77 selftest: Rename nt4_dc_vars -> dcvars in setup_clusteredmember
via fb0c2774ca7 script: clustered samba: Build samba-ctdb with ad-dc support
via bf13d9b3ef7 s3:script: clustered samba: Add script updatekeytab.sh
via 1fcaf066f42 ctdb:events: Add 46.update-keytabs.script for 'recovered' event
via e08b2963d98 s3:libads: Call 'sync machine password script' when machine password is updated
via f819ad25027 s3:utils: Remove from "net ads keytab": "add", "delete" and "add_update_ads"
via c10c49b3f00 s3:libads: Remove ads_keytab_create_default & friends
via ad6a91ba745 testprogs: Remove alias test from test_net_ads.sh
via abbf926067b testprogs: Remove dnshostname related test from test_net_ads.sh
via 2304d96db32 testprogs: Use "HOST' instead of 'host' in test_net_ads.sh
via 18aedcc84c8 testprogs: Remove upn related test from test_net_ads.sh
via d18babd1d70 testprogs: Remove "keytab add", "keytab delete" and "keytab add_apdate_ads" related tests from test_net_ads.sh
via 90ec8adf1f2 selftest: Add tests for keytab update
via aff928268ad selftest: Add "sync machine password to keytab" to env. ad_member_idmap_nss
via 253625dabf8 s3:utils: Change net_ads_keytab_create() to call sync_pw2keytabs()
via eeb79875c6e s3:libnet: Sync keytab during libnet_join_create_keytab()
via 683f6eec40f s3: Sync machine account password in secrets_{prepare,finish}_password_change
via 7c65aa8c7bc s3:ads: Remove 'kerberos method' warning for 'net ads keytab' functions
via 49d09906890 s3:ads: Do not update system keytab from "net ads changetrustpw"
via da622ccc164 s3:lib: Sync machine password to keytab: helper functions
via f3ff6871197 s3:libads: Request "msDS-KeyVersionNumber" from ads_find_machine_acct()
via b007fb89d59 s3:libads: Use the TRACE SUPPORT for keys operations
via 1185b03b275 krb5_wrap: Add TRACE SUPPORT for keys operations
via 27ca58f9bf1 s3:testparm: Add check for "sync machine password to keytab" to testparm
via 09c30299582 docs:smbdotconf: Add parameter 'sync machine password script'
via 731a25b5c80 docs:smbdotconf: Add parameter 'sync machine password to keytab'
via 3de8d294152 s3:lib: Merge library trusts_util into library ads
from 07c0afe91d5 WHATSNEW.txt: document "veto files" and "hide files"
https://git.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit e61f53b656f074a80ae66dfda776b56b03cc9918
Author: Pavel Filipenský <pfilipensky at samba.org>
Date: Mon Feb 12 10:25:06 2024 +0100
WHATSNEW: Automatic keytab update after machine password changes
BUG: https://bugzilla.samba.org/show_bug.cgi?id=6750
Signed-off-by: Pavel Filipenský <pfilipensky at samba.org>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
Autobuild-User(master): Pavel Filipensky <pfilipensky at samba.org>
Autobuild-Date(master): Fri Jul 26 18:16:15 UTC 2024 on atb-devel-224
commit 6a97f8e16d888ac16069dcccccb81541520f6e5e
Author: Pavel Filipenský <pfilipensky at samba.org>
Date: Mon Jul 15 17:07:59 2024 +0200
selftest: Add tests for keytab update in clustered samba
BUG: https://bugzilla.samba.org/show_bug.cgi?id=6750
Signed-off-by: Pavel Filipenský <pfilipensky at samba.org>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
commit be29fe50adb8732d5ddaceffe12a284f7a25f296
Author: Pavel Filipenský <pfilipensky at samba.org>
Date: Mon Jul 15 17:07:59 2024 +0200
selftest: setup clusteredmember with kerberos, change dependency to "ad_dc"
BUG: https://bugzilla.samba.org/show_bug.cgi?id=6750
Signed-off-by: Pavel Filipenský <pfilipensky at samba.org>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
commit c76727b3c77bece515064c2948e01919501367b7
Author: Pavel Filipenský <pfilipensky at samba.org>
Date: Mon Jul 15 17:01:09 2024 +0200
selftest: Rename nt4_dc_vars -> dcvars in setup_clusteredmember
BUG: https://bugzilla.samba.org/show_bug.cgi?id=6750
Signed-off-by: Pavel Filipenský <pfilipensky at samba.org>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
commit fb0c2774ca75d076994452a037e2dd3609383e04
Author: Pavel Filipenský <pfilipensky at samba.org>
Date: Fri Jul 12 22:09:43 2024 +0200
script: clustered samba: Build samba-ctdb with ad-dc support
samba-tool requires addc support
BUG: https://bugzilla.samba.org/show_bug.cgi?id=6750
Signed-off-by: Pavel Filipenský <pfilipensky at samba.org>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
commit bf13d9b3ef76a0d017fa7d81069f1d9da117de41
Author: Pavel Filipenský <pfilipensky at samba.org>
Date: Tue Apr 9 08:39:40 2024 +0200
s3:script: clustered samba: Add script updatekeytab.sh
Admin should use this script in smb.conf parameter 'sync machine
password script' in clustered samba
TODO: onnode will update the keytab on all connected nodes, so the
update will happen on the triggering node twice. This can be improved in
the future.
BUG: https://bugzilla.samba.org/show_bug.cgi?id=6750
Signed-off-by: Pavel Filipenský <pfilipensky at samba.org>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
commit 1fcaf066f42cf01c6978416e99b132fdbb1f55de
Author: Pavel Filipenský <pfilipensky at samba.org>
Date: Mon Apr 8 14:47:21 2024 +0200
ctdb:events: Add 46.update-keytabs.script for 'recovered' event
BUG: https://bugzilla.samba.org/show_bug.cgi?id=6750
Signed-off-by: Pavel Filipenský <pfilipensky at samba.org>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
commit e08b2963d98ea82cb5989f5e7c80e808859e98dd
Author: Pavel Filipenský <pfilipensky at samba.org>
Date: Wed Feb 28 13:30:30 2024 +0100
s3:libads: Call 'sync machine password script' when machine password is updated
BUG: https://bugzilla.samba.org/show_bug.cgi?id=6750
Signed-off-by: Pavel Filipenský <pfilipensky at samba.org>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
commit f819ad25027e3b9c2fd46d57bd1a830af678b42c
Author: Pavel Filipenský <pfilipensky at samba.org>
Date: Thu Feb 15 10:58:13 2024 +0100
s3:utils: Remove from "net ads keytab": "add", "delete" and "add_update_ads"
BUG: https://bugzilla.samba.org/show_bug.cgi?id=6750
Signed-off-by: Pavel Filipenský <pfilipensky at samba.org>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
commit c10c49b3f00f7da2319d59b707a8c9d2acefc172
Author: Pavel Filipenský <pfilipensky at samba.org>
Date: Mon Feb 12 12:19:14 2024 +0100
s3:libads: Remove ads_keytab_create_default & friends
BUG: https://bugzilla.samba.org/show_bug.cgi?id=6750
Signed-off-by: Pavel Filipenský <pfilipensky at samba.org>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
commit ad6a91ba745304fe53ae5d0faf4f00c25d027877
Author: Pavel Filipenský <pfilipensky at samba.org>
Date: Thu Feb 15 10:14:28 2024 +0100
testprogs: Remove alias test from test_net_ads.sh
"net ads keytab create" no longer reads msDS-AdditionalDnsHostName from AD
BUG: https://bugzilla.samba.org/show_bug.cgi?id=6750
Signed-off-by: Pavel Filipenský <pfilipensky at samba.org>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
commit abbf926067be41db11ed1cac4027e59d030db8ac
Author: Pavel Filipenský <pfilipensky at samba.org>
Date: Thu Feb 15 10:14:01 2024 +0100
testprogs: Remove dnshostname related test from test_net_ads.sh
"net ads keytab create" no longer reads dNSHostName from AD
BUG: https://bugzilla.samba.org/show_bug.cgi?id=6750
Signed-off-by: Pavel Filipenský <pfilipensky at samba.org>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
commit 2304d96db328da2c6481cee9d22cfed66374187a
Author: Pavel Filipenský <pfilipensky at samba.org>
Date: Thu Feb 15 10:13:15 2024 +0100
testprogs: Use "HOST' instead of 'host' in test_net_ads.sh
"net ads keytab create" will uses the same value as in AD,
modifications to lower case are no longer done
BUG: https://bugzilla.samba.org/show_bug.cgi?id=6750
Signed-off-by: Pavel Filipenský <pfilipensky at samba.org>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
commit 18aedcc84c873ab649accab42ad5ee19727ae4cb
Author: Pavel Filipenský <pfilipensky at samba.org>
Date: Thu Feb 15 09:47:34 2024 +0100
testprogs: Remove upn related test from test_net_ads.sh
"net ads keytab create" will no longer read "userPrincipalName" from AD
BUG: https://bugzilla.samba.org/show_bug.cgi?id=6750
Signed-off-by: Pavel Filipenský <pfilipensky at samba.org>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
commit d18babd1d70cec47889b6426a63275a1b8ceecd7
Author: Pavel Filipenský <pfilipensky at samba.org>
Date: Thu Feb 15 09:15:03 2024 +0100
testprogs: Remove "keytab add", "keytab delete" and "keytab add_apdate_ads" related tests from test_net_ads.sh
"net ads" will no longer support "keytab add", "keytab delete" and "keytab add_apdate_ads"
BUG: https://bugzilla.samba.org/show_bug.cgi?id=6750
Signed-off-by: Pavel Filipenský <pfilipensky at samba.org>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
commit 90ec8adf1f2ef8ec25ea67c066fec7f731bbb4dc
Author: Pavel Filipenský <pfilipen at redhat.com>
Date: Fri Sep 3 19:10:01 2021 +0200
selftest: Add tests for keytab update
BUG: https://bugzilla.samba.org/show_bug.cgi?id=6750
Signed-off-by: Pavel Filipenský <pfilipen at redhat.com>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
commit aff928268adf66df029a126814ac3fad7262eacb
Author: Pavel Filipenský <pfilipen at redhat.com>
Date: Fri Sep 3 19:07:48 2021 +0200
selftest: Add "sync machine password to keytab" to env. ad_member_idmap_nss
BUG: https://bugzilla.samba.org/show_bug.cgi?id=6750
Signed-off-by: Pavel Filipenský <pfilipen at redhat.com>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
commit 253625dabf8c1e736820c4dc5c1f5d170d960574
Author: Pavel Filipenský <pfilipensky at samba.org>
Date: Thu Feb 15 11:10:06 2024 +0100
s3:utils: Change net_ads_keytab_create() to call sync_pw2keytabs()
BUG: https://bugzilla.samba.org/show_bug.cgi?id=6750
Signed-off-by: Pavel Filipenský <pfilipensky at samba.org>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
commit eeb79875c6edc82bfcaa8ed5d0eade77d64f7e8d
Author: Pavel Filipenský <pfilipensky at samba.org>
Date: Tue Feb 13 13:43:50 2024 +0100
s3:libnet: Sync keytab during libnet_join_create_keytab()
BUG: https://bugzilla.samba.org/show_bug.cgi?id=6750
Signed-off-by: Pavel Filipenský <pfilipensky at samba.org>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
commit 683f6eec40f2efbb122329800ebb2f5d2f518746
Author: Pavel Filipenský <pfilipensky at samba.org>
Date: Thu Dec 21 13:57:38 2023 +0100
s3: Sync machine account password in secrets_{prepare,finish}_password_change
BUG: https://bugzilla.samba.org/show_bug.cgi?id=6750
Signed-off-by: Pavel Filipenský <pfilipensky at samba.org>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
commit 7c65aa8c7bc1cd3e0da1621c24ccfeaa0c4d4a53
Author: Pavel Filipenský <pfilipensky at samba.org>
Date: Fri Jul 26 13:15:03 2024 +0200
s3:ads: Remove 'kerberos method' warning for 'net ads keytab' functions
BUG: https://bugzilla.samba.org/show_bug.cgi?id=6750
Signed-off-by: Pavel Filipenský <pfilipensky at samba.org>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
commit 49d09906890dbd864de155cfdb90e96527fc478e
Author: Pavel Filipenský <pfilipensky at samba.org>
Date: Thu Dec 21 13:57:38 2023 +0100
s3:ads: Do not update system keytab from "net ads changetrustpw"
It will be done in secrets_{prepare,finish}_password_change
BUG: https://bugzilla.samba.org/show_bug.cgi?id=6750
Signed-off-by: Pavel Filipenský <pfilipensky at samba.org>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
commit da622ccc16413c3020dd314ba50f9c1a0317824d
Author: Pavel Filipenský <pfilipen at redhat.com>
Date: Mon Sep 6 16:58:17 2021 +0200
s3:lib: Sync machine password to keytab: helper functions
BUG: https://bugzilla.samba.org/show_bug.cgi?id=6750
Signed-off-by: Pavel Filipenský <pfilipen at redhat.com>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
commit f3ff6871197f9b3aef58804c07328ecf4feec5fe
Author: Pavel Filipenský <pfilipensky at samba.org>
Date: Tue Jan 23 17:19:30 2024 +0100
s3:libads: Request "msDS-KeyVersionNumber" from ads_find_machine_acct()
BUG: https://bugzilla.samba.org/show_bug.cgi?id=6750
Signed-off-by: Pavel Filipenský <pfilipensky at samba.org>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
commit b007fb89d59e275a82e717ea33c264d52f6899ba
Author: Pavel Filipenský <pfilipensky at samba.org>
Date: Thu Dec 7 17:49:07 2023 +0100
s3:libads: Use the TRACE SUPPORT for keys operations
BUG: https://bugzilla.samba.org/show_bug.cgi?id=6750
Signed-off-by: Pavel Filipenský <pfilipensky at samba.org>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
commit 1185b03b275a093a6dda84fc7d8cf3b983c9a07f
Author: Pavel Filipenský <pfilipen at redhat.com>
Date: Wed Jul 7 20:06:48 2021 +0200
krb5_wrap: Add TRACE SUPPORT for keys operations
The trace looks like below. Useful is the last filed - hex dump of the
data - allows to search for all manipulations.
KEYTAB_TRACE sync_pw2keytabs_process_keytab:622 add ADMEMKEYTAB$@ADDOM.SAMBA.EXAMPLE.COM 14 17 C66D244CB26005C7D6FF9FC00FCBBE4A
BUG: https://bugzilla.samba.org/show_bug.cgi?id=6750
Signed-off-by: Pavel Filipenský <pfilipen at redhat.com>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
commit 27ca58f9bf14fcdc834869fad5631fca9e1c4652
Author: Pavel Filipenský <pfilipensky at samba.org>
Date: Sun Dec 17 16:15:00 2023 +0100
s3:testparm: Add check for "sync machine password to keytab" to testparm
BUG: https://bugzilla.samba.org/show_bug.cgi?id=6750
Signed-off-by: Pavel Filipenský <pfilipensky at samba.org>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
commit 09c302995826a8c54fce97b60e4bab98aec472c0
Author: Pavel Filipenský <pfilipensky at samba.org>
Date: Wed Feb 28 13:30:55 2024 +0100
docs:smbdotconf: Add parameter 'sync machine password script'
BUG: https://bugzilla.samba.org/show_bug.cgi?id=6750
Signed-off-by: Pavel Filipenský <pfilipensky at samba.org>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
commit 731a25b5c80690609b4ed5523cea3a098e42de28
Author: Pavel Filipenský <pfilipen at redhat.com>
Date: Fri Sep 3 19:07:01 2021 +0200
docs:smbdotconf: Add parameter 'sync machine password to keytab'
BUG: https://bugzilla.samba.org/show_bug.cgi?id=6750
Signed-off-by: Pavel Filipenský <pfilipen at redhat.com>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
commit 3de8d2941529af5a89069bd8e0caed0bcb508869
Author: Pavel Filipenský <pfilipen at redhat.com>
Date: Wed Jun 2 15:20:46 2021 +0200
s3:lib: Merge library trusts_util into library ads
Function trust_pw_change() originally from library trustis_util was updated
to call functionality from ads library. This would introduce circular
dependency between the two libraries. To avoid it, trusts_util is merged
into ads.
BUG: https://bugzilla.samba.org/show_bug.cgi?id=6750
Signed-off-by: Pavel Filipenský <pfilipen at redhat.com>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
-----------------------------------------------------------------------
Summary of changes:
WHATSNEW.txt | 19 +
ctdb/config/events/legacy/46.update-keytabs.script | 11 +
.../security/syncmachinepasswordscript.xml | 15 +
.../security/syncmachinepasswordtokeytab.xml | 69 +
lib/krb5_wrap/krb5_samba.c | 114 +-
lib/krb5_wrap/krb5_samba.h | 118 +-
script/autobuild.py | 1 -
selftest/target/Samba3.pm | 75 +-
source3/include/secrets.h | 6 +-
source3/libads/ads_proto.h | 15 +-
source3/libads/kerberos_keytab.c | 1569 +++++++++++---------
source3/libads/ldap.c | 235 +--
source3/{libsmb => libads}/trusts_util.c | 36 +-
source3/libads/util.c | 17 +-
source3/libnet/libnet_join.c | 10 +-
source3/passdb/machine_account_secrets.c | 39 +-
source3/rpcclient/wscript_build | 2 +-
source3/script/tests/test_update_keytab.sh | 450 ++++++
.../script/tests/test_update_keytab_clustered.sh | 165 ++
source3/script/updatekeytab.sh | 3 +
source3/script/updatekeytab_test.sh | 3 +
source3/selftest/tests.py | 18 +
source3/utils/net.c | 17 +-
source3/utils/net_ads.c | 146 +-
source3/utils/testparm.c | 92 ++
source3/utils/wscript_build | 1 -
source3/wscript_build | 14 +-
source4/selftest/tests.py | 2 +-
testprogs/blackbox/test_net_ads.sh | 163 +-
29 files changed, 2000 insertions(+), 1425 deletions(-)
create mode 100755 ctdb/config/events/legacy/46.update-keytabs.script
create mode 100644 docs-xml/smbdotconf/security/syncmachinepasswordscript.xml
create mode 100644 docs-xml/smbdotconf/security/syncmachinepasswordtokeytab.xml
rename source3/{libsmb => libads}/trusts_util.c (97%)
create mode 100755 source3/script/tests/test_update_keytab.sh
create mode 100755 source3/script/tests/test_update_keytab_clustered.sh
create mode 100755 source3/script/updatekeytab.sh
create mode 100755 source3/script/updatekeytab_test.sh
Changeset truncated at 500 lines:
diff --git a/WHATSNEW.txt b/WHATSNEW.txt
index d366393249a..7e283f6031a 100644
--- a/WHATSNEW.txt
+++ b/WHATSNEW.txt
@@ -183,10 +183,27 @@ groups. To apply a veto or hide directive to a filename for a specific user or
group, prefix the filename with "../USERNAME/" or "../GROUPNAME/". For details
consult the updated smb.conf manpage.
+Automatic keytab update after machine password change
+-----------------------------------------------------
+
+When machine account password is updated, either by winbind doing regular
+updates or manually (e.g. net ads changetrustpw), now winbind will also support
+update of keytab entries in case you use newly added option
+'sync machine password to keytab'.
+The new parameter allows you to describe what keytabs and how should be updated.
+A new parameter 'sync machine password script' allows to specify external script
+that will be triggered after the automatic keytab update. For detailed
+information check the smb.conf manpage.
REMOVED FEATURES
================
+Following commands are removed:
+
+net ads keytab add <principal>
+net ads keytab delete <principal>
+net ads keytab add_update_ads
+
smb.conf changes
================
@@ -205,6 +222,8 @@ smb.conf changes
write list Hardening
veto files Added per-user and per-group vetos
hide files Added per-user and per-group hides
+ sync machine password to keytab keytabs
+ sync machine password script script
KNOWN ISSUES
diff --git a/ctdb/config/events/legacy/46.update-keytabs.script b/ctdb/config/events/legacy/46.update-keytabs.script
new file mode 100755
index 00000000000..f207a7b6a8f
--- /dev/null
+++ b/ctdb/config/events/legacy/46.update-keytabs.script
@@ -0,0 +1,11 @@
+#!/bin/sh
+# script to update keytab
+
+[ -n "$CTDB_BASE" ] ||
+ CTDB_BASE=$(d=$(dirname "$0") && cd -P "$d" && dirname "$PWD")
+
+case "$1" in
+recovered)
+ net ads keytab create --option='sync machine password script=' --configfile="$CTDB_BASE/lib/server.conf"
+ ;;
+esac
diff --git a/docs-xml/smbdotconf/security/syncmachinepasswordscript.xml b/docs-xml/smbdotconf/security/syncmachinepasswordscript.xml
new file mode 100644
index 00000000000..341613372f5
--- /dev/null
+++ b/docs-xml/smbdotconf/security/syncmachinepasswordscript.xml
@@ -0,0 +1,15 @@
+<samba:parameter name="sync machine password script"
+ context="G"
+ type="string"
+ substitution="1"
+ xmlns:samba="http://www.samba.org/samba/DTD/samba-doc">
+<description>
+ <para>
+ This is the full pathname to a script that will be run by
+ <citerefentry><refentrytitle>winbindd</refentrytitle> <manvolnum>8</manvolnum></citerefentry> when a machine account password is updated.
+ </para>
+</description>
+
+<value type="default"/>
+<value type="example">/usr/sbin/sync_machine_password</value>
+</samba:parameter>
diff --git a/docs-xml/smbdotconf/security/syncmachinepasswordtokeytab.xml b/docs-xml/smbdotconf/security/syncmachinepasswordtokeytab.xml
new file mode 100644
index 00000000000..48d89213acf
--- /dev/null
+++ b/docs-xml/smbdotconf/security/syncmachinepasswordtokeytab.xml
@@ -0,0 +1,69 @@
+<samba:parameter name="sync machine password to keytab"
+ context="G"
+ type="cmdlist"
+ xmlns:samba="http://www.samba.org/samba/DTD/samba-doc">
+<description>
+ <para>This option allows you to describe what keytabs and how should be
+ updated when machine account is changed via one of these commands
+
+<programlisting>
+wbinfo --change-secret
+rpcclient --machine-pass -c change_trust_pw
+net rpc changetrustpw
+net ads changetrustpw
+</programlisting>
+
+ or by winbindd doing regular updates (see <smbconfoption name="machine password timeout"/>)
+
+</para>
+
+<para>The option takes a list of keytab strings. Each string has this form:
+
+<programlisting>
+ absolute_path_to_keytab:spn_spec[:sync_etypes][:sync_kvno][:netbios_aliases][:additional_dns_hostnames][:machine_password]
+</programlisting>
+
+ where spn_spec can have exactly one of these three forms:
+<programlisting>
+ account_name
+ sync_spns
+ spn_prefixes=value1[,value2[...]]
+ spns=value1[,value2[...]]
+</programlisting>
+<para>
+ No other combinations are allowed.
+
+ Specifiers:
+ account_name - creates entry using principal 'computer$@REALM'.
+ sync_spns - uses principals received from AD DC.
+ spn_prefixes - creates principals from the prefixes and adds netbios_aliases or additional_dns_hostnames if specified.
+ spns - creates only the principals defined in the list.
+
+ Options:
+ sync_etypes - parameter "msDS-SupportedEncryptionTypes" is read from DC and is used to find the highest common enc type for AD and KRB5 lib.
+ sync_kvno - the key version number ("msDS-KeyVersionNumber") is synchronized from DC, otherwise is set to -1.
+ netbios_aliases - evaluated only for SPN_SPEC_PREFIX. If present, PREFIX/netbiosname at REALM and PREFIX/netbiosname.domainname at REALM are added for each alias. See <smbconfoption name="netbios aliases"/>
+ additional_dns_hostnames - evaluated only for SPN_SPEC_PREFIX. If present, PREFIX/dnshostname at REALM is added for each dns name. See <smbconfoption name="additional dns hostnames"/>
+ machine_password - mandatory, if missing the entry is ignored. For future use.
+</para>
+
+</para>
+<para>
+Example:
+<programlisting>
+ "/path/to/keytab0:account_name:machine_password",
+ "/path/to/keytab1:account_name:sync_etypes:sync_kvno:machine_password",
+ "/path/to/keytab2:sync_spns:machine_password",
+ "/path/to/keytab3:sync_spns:sync_kvno:machine_password",
+ "/path/to/keytab4:spn_prefixes=imap,smtp:machine_password",
+ "/path/to/keytab5:spn_prefixes=imap,smtp:netbios_aliases:additional_dns_hostnames:sync_kvno:machine_password",
+ "/path/to/keytab6:spns=wurst/brot at REALM:machine_password",
+ "/path/to/keytab7:spns=wurst/brot at REALM,wurst2/brot at REALM:sync_kvno:machine_password"
+</programlisting>
+If sync_etypes or sync_kvno or sync_spns is present then winbind connects to DC. For "offline domain join" it might be useful not to use these options.
+
+If no value is present, winbind uses value /path/to/keytab:sync_spns:sync_kvno:machine_password
+where the path to the keytab is obtained either from the krb5 library or from <smbconfoption name="dedicated keytab file"/>
+</para>
+</description>
+</samba:parameter>
diff --git a/lib/krb5_wrap/krb5_samba.c b/lib/krb5_wrap/krb5_samba.c
index 517f190f217..451616c79e5 100644
--- a/lib/krb5_wrap/krb5_samba.c
+++ b/lib/krb5_wrap/krb5_samba.c
@@ -1808,7 +1808,7 @@ krb5_error_code smb_krb5_kt_seek_and_delete_old_entries(krb5_context context,
}
DEBUG(3, (__location__ ": Will try to delete old keytab entries\n"));
- while (!krb5_kt_next_entry(context, keytab, &kt_entry, &cursor)) {
+ while (!samba_krb5_kt_next_entry(context, keytab, &kt_entry, &cursor)) {
bool name_ok = false;
krb5_enctype kt_entry_enctype =
smb_krb5_kt_get_enctype_from_entry(&kt_entry);
@@ -1898,7 +1898,7 @@ krb5_error_code smb_krb5_kt_seek_and_delete_old_entries(krb5_context context,
"failed (%s)\n", error_message(ret)));
goto out;
}
- ret = krb5_kt_remove_entry(context, keytab, &kt_entry);
+ ret = samba_krb5_kt_remove_entry(context, keytab, &kt_entry);
if (ret) {
DEBUG(1, (__location__ ": krb5_kt_remove_entry() "
"failed (%s)\n", error_message(ret)));
@@ -1936,116 +1936,6 @@ out:
return ret;
}
-/**
- * @brief Add a keytab entry for the given principal
- *
- * @param[in] context The krb5 context to use.
- *
- * @param[in] keytab The keytab to add the entry to.
- *
- * @param[in] kvno The kvno to use.
- *
- * @param[in] princ_s The principal as a string.
- *
- * @param[in] salt_principal The salt principal to salt the password with.
- * Only needed for keys which support salting.
- * If no salt is used set no_salt to false and
- * pass NULL here.
- *
- * @param[in] enctype The encryption type of the keytab entry.
- *
- * @param[in] password The password of the keytab entry.
- *
- * @retval 0 on Success
- *
- * @return A corresponding KRB5 error code.
- *
- * @see smb_krb5_kt_open()
- */
-krb5_error_code smb_krb5_kt_add_password(krb5_context context,
- krb5_keytab keytab,
- krb5_kvno kvno,
- const char *princ_s,
- const char *salt_principal,
- krb5_enctype enctype,
- krb5_data *password)
-{
- krb5_error_code ret;
- krb5_keytab_entry kt_entry;
- krb5_principal princ = NULL;
- krb5_keyblock *keyp;
- krb5_principal salt_princ = NULL;
-
- ZERO_STRUCT(kt_entry);
-
- ret = smb_krb5_parse_name(context, princ_s, &princ);
- if (ret) {
- DEBUG(1, (__location__ ": smb_krb5_parse_name(%s) "
- "failed (%s)\n", princ_s, error_message(ret)));
- goto out;
- }
-
- /* Seek and delete old keytab entries */
- ret = smb_krb5_kt_seek_and_delete_old_entries(context,
- keytab,
- true, /* keep_old_kvno */
- kvno,
- true, /* enctype_only */
- enctype,
- princ_s,
- princ,
- false); /* flush */
- if (ret) {
- goto out;
- }
-
- /* If we get here, we have deleted all the old entries with kvno's
- * not equal to the current kvno-1. */
-
- keyp = KRB5_KT_KEY(&kt_entry);
-
- /* Now add keytab entries for all encryption types */
- ret = smb_krb5_parse_name(context, salt_principal, &salt_princ);
- if (ret) {
- DBG_WARNING("krb5_parse_name(%s) failed (%s)\n",
- salt_principal, error_message(ret));
- goto out;
- }
-
- ret = smb_krb5_create_key_from_string(context,
- salt_princ,
- NULL,
- password,
- enctype,
- keyp);
- krb5_free_principal(context, salt_princ);
- if (ret != 0) {
- goto out;
- }
-
- kt_entry.principal = princ;
- kt_entry.vno = kvno;
-
- DEBUG(3, (__location__ ": adding keytab entry for (%s) with "
- "encryption type (%d) and version (%d)\n",
- princ_s, enctype, kt_entry.vno));
- ret = krb5_kt_add_entry(context, keytab, &kt_entry);
- krb5_free_keyblock_contents(context, keyp);
- ZERO_STRUCT(kt_entry);
- if (ret) {
- DEBUG(1, (__location__ ": adding entry to keytab "
- "failed (%s)\n", error_message(ret)));
- goto out;
- }
-
-out:
- if (princ) {
- krb5_free_principal(context, princ);
- }
-
- return ret;
-}
-
#if defined(HAVE_KRB5_GET_CREDS_OPT_SET_IMPERSONATE) && \
defined(HAVE_KRB5_GET_CREDS_OPT_ALLOC) && \
defined(HAVE_KRB5_GET_CREDS)
diff --git a/lib/krb5_wrap/krb5_samba.h b/lib/krb5_wrap/krb5_samba.h
index 6c04cb00f62..0acf567371c 100644
--- a/lib/krb5_wrap/krb5_samba.h
+++ b/lib/krb5_wrap/krb5_samba.h
@@ -25,6 +25,8 @@
#include "lib/util/data_blob.h"
#include "libcli/util/ntstatus.h"
+#include "lib/util/talloc_stack.h"
+#include "lib/util/debug.h"
#ifdef HAVE_KRB5
@@ -189,6 +191,115 @@ krb5_error_code smb_krb5_unparse_name(TALLOC_CTX *mem_ctx,
krb5_const_principal principal,
char **unix_name);
+static inline void samba_trace_keytab_entry(krb5_context context,
+ krb5_keytab_entry kt_entry,
+ const char *func,
+ int line,
+ const char *op)
+{
+ char *princ_s = NULL;
+#define MAX_KEYLEN 64
+ char tmp[2 * MAX_KEYLEN + 1] = { 0, };
+ krb5_enctype enctype = 0;
+ krb5_keyblock *key = NULL;
+ TALLOC_CTX *frame = talloc_stackframe();
+ krb5_error_code code;
+ const uint8_t *ptr = NULL;
+ unsigned len;
+ int i;
+
+ code = smb_krb5_unparse_name(frame,
+ context,
+ kt_entry.principal,
+ &princ_s);
+ if (code != 0) {
+ goto out;
+ }
+ enctype = KRB5_KEY_TYPE(KRB5_KT_KEY(&kt_entry));
+ key = KRB5_KT_KEY(&kt_entry);
+#ifdef DEBUG_PASSWORD
+ ptr = (const uint8_t *) KRB5_KEY_DATA(key);
+ len = KRB5_KEY_LENGTH(key);
+
+ for (i = 0; i < len && i < MAX_KEYLEN; i++) {
+ snprintf(&tmp[2 * i], 3, "%02X", ptr[i]);
+ }
+#else
+ tmp[0] = 0;
+#endif
+ DEBUG(10,("KEYTAB_TRACE %36s:%-4d %3s %78s %3d %2d %s\n",
+ func,
+ line,
+ op,
+ princ_s,
+ kt_entry.vno,
+ enctype,
+ tmp));
+out:
+ TALLOC_FREE(frame);
+}
+
+#if defined(__GNUC__) && defined(DEVELOPER)
+/* http://gcc.gnu.org/onlinedocs/gcc/Statement-Exprs.html */
+
+#define samba_krb5_kt_add_entry(context, id, entry) \
+ ({ \
+ krb5_error_code _code; \
+ _code = krb5_kt_add_entry((context), (id), (entry)); \
+ if (CHECK_DEBUGLVL(10)) { \
+ samba_trace_keytab_entry((context), \
+ *(entry), \
+ __func__, \
+ __LINE__, \
+ _code == 0 ? "add" \
+ : "add FAILED"); \
+ } \
+ _code; \
+ })
+
+#define samba_krb5_kt_remove_entry(context, id, entry) \
+ ({ \
+ krb5_error_code _code; \
+ _code = krb5_kt_remove_entry((context), (id), (entry)); \
+ if (CHECK_DEBUGLVL(10)) { \
+ samba_trace_keytab_entry((context), \
+ *(entry), \
+ __func__, \
+ __LINE__, \
+ _code == 0 ? "rem" \
+ : "rem FAILED"); \
+ } \
+ _code; \
+ })
+
+#define samba_krb5_kt_next_entry(context, id, entry, cursor) \
+ ({ \
+ krb5_error_code _code; \
+ _code = krb5_kt_next_entry((context), \
+ (id), \
+ (entry), \
+ (cursor)); \
+ if (_code == 0 && CHECK_DEBUGLVL(10)) { \
+ samba_trace_keytab_entry((context), \
+ *(entry), \
+ __func__, \
+ __LINE__, \
+ "nxt"); \
+ } \
+ _code; \
+ })
+
+#else
+
+#define samba_krb5_kt_add_entry(context, id, entry) \
+ krb5_kt_add_entry((context), (id), (entry))
+#define samba_krb5_kt_remove_entry(context, id, entry) \
+ krb5_kt_remove_entry((context), (id), (entry))
+#define samba_krb5_kt_next_entry(context, id, entry, cursor) \
+ krb5_kt_next_entry((context), (id), (entry), (cursor))
+
+#endif
+
krb5_error_code smb_krb5_init_context_common(krb5_context *_krb5_context);
/*
@@ -281,13 +392,6 @@ krb5_error_code smb_krb5_kt_seek_and_delete_old_entries(krb5_context context,
const char *princ_s,
krb5_principal princ,
bool flush);
-krb5_error_code smb_krb5_kt_add_password(krb5_context context,
- krb5_keytab keytab,
- krb5_kvno kvno,
- const char *princ_s,
- const char *salt_principal,
- krb5_enctype enctype,
- krb5_data *password);
krb5_error_code smb_krb5_get_credentials(krb5_context context,
krb5_ccache ccache,
diff --git a/script/autobuild.py b/script/autobuild.py
index 5bea99f1fde..a62ac8c162f 100755
--- a/script/autobuild.py
+++ b/script/autobuild.py
@@ -852,7 +852,6 @@ tasks = {
"./configure.developer ${PREFIX} "
"--with-selftest-prefix=./bin/ab "
"--with-cluster-support "
- "--without-ad-dc "
"--bundled-libraries=!tdb"),
("samba-make", "make"),
("samba-check", "./bin/smbd --configfile=/dev/null -b | grep CLUSTER_SUPPORT"),
diff --git a/selftest/target/Samba3.pm b/selftest/target/Samba3.pm
index 23c7d284e85..8d7f690ecf6 100755
--- a/selftest/target/Samba3.pm
+++ b/selftest/target/Samba3.pm
@@ -255,7 +255,7 @@ sub check_env($$)
ad_member_idmap_nss => ["ad_dc"],
ad_member_s3_join => ["vampire_dc"],
- clusteredmember => ["nt4_dc"],
+ clusteredmember => ["ad_dc"],
);
%Samba3::ENV_DEPS_POST = ();
@@ -497,7 +497,7 @@ sub setup_nt4_member
sub setup_clusteredmember
{
- my ($self, $prefix, $nt4_dc_vars) = @_;
+ my ($self, $prefix, $dcvars) = @_;
my $count = 0;
my $rc;
my @retvals = ();
@@ -539,7 +539,10 @@ sub setup_clusteredmember
}
my $member_options = "
- security = domain
+ security = ADS
+ workgroup = $dcvars->{DOMAIN}
+ realm = $dcvars->{REALM}
+ password server = $dcvars->{SERVER}
server signing = on
clustering = yes
rpc start on demand helpers = false
@@ -548,11 +551,12 @@ sub setup_clusteredmember
include = registry
dbwrap_tdb_mutexes:* = yes
${require_mutexes}
+ sync machine password to keytab = $node_prefix/keytab0:account_name:machine_password:sync_kvno
";
my $node_ret = $self->provision(
prefix => "$node_prefix",
- domain => $nt4_dc_vars->{DOMAIN},
+ domain => $dcvars->{DOMAIN},
server => "$server_name",
password => "clustermember8pass",
netbios_name => "CLUSTEREDMEMBER",
@@ -618,13 +622,28 @@ sub setup_clusteredmember
$ret = {%$ctdb_data, %{$retvals[0]}};
--
Samba Shared Repository
More information about the samba-cvs
mailing list