The branch, v4-21-stable has been updated
via 0b084c0bc6f VERSION: Disable GIT_SNAPSHOT for the 4.21.4 release.
via d79cf425c09 WHATSNEW: Add release notes for Samba 4.21.4.
via 1fe10a03c5d mdssvc: support a few more attributes
via 7b31e8ea82d vfs_gpfs: add gpfs:clamp_invalid_times
via e3b3db36171 ndr: fix coda logic around in ndr_pull_security_ace()
via b222d6ec73a pytest: add ndr packing tests for security descriptors
via cead38fb096 docs: Update documentation for 'sync machine password
to keytab'
via 63b115a0092 s3:libads: Remove specifier for 'host' principal from
'sync machine password to keytab'
via 8d5384e965f docs-xml:smbdotconf: Document new options for 'sync
machinepassword to keytab'
via 58a7666b678 s3: Add new keytab specifiers
via 55173721908 vfs_ceph_new:minor logging improvement
via 81d4b6467b2 vfs_ceph_new: add smbprofile for async-ops
via 5de7646e7f7 vfs_ceph_new: add profiling support
via 2aae61a8ad3 vfs_ceph_new: log open-flags upon release-fh
via a828997221d vfs_ceph_new: improved vfs-opers logging
via 12394b895a7 vfs_ceph_new: improved mount logging
via 6e0ca057961 vfs_ceph_new: improve mount cache-entry add
via 0aea2e374d5 vfs_ceph_new: improve mount cache-entry ref-count
via 79d6da01caa vfs_ceph_new: avoid setting errno in
cephmount_cache_update
via ab29d3eb6ee vfs_ceph_new: refactor error-case in cephmount_mount_fs
via 3e00ee5a1ca vfs_ceph_new: switch to ceph_readdir_r
via 7302ea418a4 docs_xml/vfs_ceph_new: Add new proxy option
via 378f28e66ae wscript_build: Do not link vfs_ceph_new against
libcephfs
via 50047d6fe64 vfs_ceph_new: Use function pointers for API calls
via 08e50814655 vfs_ceph_new: Pass module config to userperm helpers
via 8183c2cbf2b vfs_ceph_new: Hold a config reference in vfs_ceph_fh
via c176fe4c975 vfs_ceph_new: Call vfs_ceph_userperm_new with
handle->conn
via 254c0846118 vfs_ceph_new: Populate function pointers with addresses
via 8f048690516 vfs_ceph_new: Add required function pointers to config
via 58631b66bf9 vfs_ceph_new: Dynamically open library for 'proxy' mode
via 7d6d1fa4c00 vfs_ceph_new: Introduce new parametric option 'proxy'
via 5f6622e04be vfs_ceph_new: Add a new struct to hold ceph module
config
via 9aa97eb93bd vfs_ceph_new: implement DFS hooks using libcephfs
low-level APIs
via 512514bbae4 s3-libnet: avoid using lp_dns_hostname() in join code
via 6e4c35f8007 selfest: add test for non-local offlinejoin provision
via 33edcf2cadb s3-libads: dump ADS_MODSLIST before attempting the LDAP
modify
via 1f24b3ff23f sharesec: Check if share exists in configuration
via 22b7b4bd728 sharesec: Add function to check existence of share from
config
via 2588668e44b param: Add API to load registry without share info
via a564f5dbad8 sharesec: Fix warning frame not freed in order
via 087972fded9 s3-sharesec: Add Test to verify command option
"--view-all"
via 816f312a7fa s4:rpc_server/lsa: let LookupSids* behave like Windows
2022/2025
via 40145184e9e libcli/security: let dom_sid_lookup_predefined_sid()
behave like Windows 2008R2
via 8d84240c40c python:tests/dcerpc/lsa: add tests for invalid
LookupSids2 combinations
via bbe0fa97bc5 s4:pyrpc: allow connections with
raise_result_exceptions=False
via 2caf09bf9cd pidl:Python: prepare code to avoid NTSTATUS/WERROR
exceptions
via e83db7bd634 pidl:Python: handle NTSTATUS/WERROR exceptions first
via 07ef42d594a pidl:Python: separate logic to calculate the signature
string
via 364b39ef370 pidl:Python: check PyTuple_New() return value
via 26001cecf4b pidl:Python: initialize pointers and add 'result' at
the end
via 75c5435bb90 pidl:Python: introduce $is_raisable_return helper
variable
via 8123af73519 pidl:Python: generate nicer code for PyNdrRpcMethodDef
arrays
via bbbaf264d1b s3:auth: let check_sam_security() add
NETLOGON_NTLMV2_ENABLED
via 3bbcf93686c s4:auth/ntlm: let authsam_check_password_internals()
add NETLOGON_NTLMV2_ENABLED
via 1c9a1d5fd11 auth: Cleanup exit code paths in kerberos_decode_pac().
via 0387515d687 auth: Add missing talloc_free() in error code path.
via 81fc67cce2a lib:replace: Don't use deprecated readline CPPFunction
cast
via 52f4e853c0b lib:replace: Remove trailing spaces from readline.h
via f3518ee95b6 lib:util: Fix stack-use-after-return in
crypt_as_best_we_can()
via 720ecf666f2 util:datablob: data_blob_pad checks its alignment
assumption
via 399d56fe13a pytest: password_hash uses internal _glue.crypt
via 332cd9f5861 samba-tool user: hashlib.sha1 is always present
via 0cc9a50269e samba-tool user: use _glue.crypt, not crypt.crypt
via 4004f475c4d pytest: test that _glue.crypt works
via 48297d18171 pyglue: add crypt() function
via bbd30dc1d5d util: add a crypt strerror helper
via 07b6b341781 dsdb:password_hash: use talloc_crypt_blob()
via 9428e088b1f dsdb:password_hash: move hash_blob allocation up
via 0dccda38f27 util: add a crypt wrapper, derived from
dsdb:password_hash
via ff60445563c s4:dsdb: fix logic of dsdb_trust_routing_by_name()
via e903d8aa33f s4:scripting: fix gen_hresult.py
via 25a188f352a VERSION: Bump version up to Samba 4.21.4...
from 0dba5ef975a VERSION: Disable GIT_SNAPSHOT for the 4.21.3 release.
https://git.samba.org/?p=samba.git;a=shortlog;h=v4-21-stable
- Log -----------------------------------------------------------------
-----------------------------------------------------------------------
Summary of changes:
VERSION | 2 +-
WHATSNEW.txt | 90 +-
auth/kerberos/kerberos_pac.c | 87 +-
docs-xml/manpages/net.8.xml | 24 +-
docs-xml/manpages/vfs_ceph_new.8.xml | 29 +
docs-xml/manpages/vfs_gpfs.8.xml | 29 +
.../security/syncmachinepasswordtokeytab.xml | 41 +-
lib/replace/system/readline.h | 10 +-
lib/util/data_blob.c | 2 +-
lib/util/util_crypt.c | 122 ++
lib/util/util_crypt.h | 7 +
lib/util/wscript_build | 6 +
libcli/security/util_sid.c | 5 +-
libcli/smbreadline/wscript_configure | 8 +-
librpc/ndr/ndr_sec_helper.c | 5 +-
pidl/lib/Parse/Pidl/Samba4/Python.pm | 157 +-
python/pyglue.c | 41 +
python/samba/netcmd/user/readpasswords/common.py | 37 +-
python/samba/tests/dcerpc/lsa.py | 226 ++-
python/samba/tests/glue.py | 65 +
python/samba/tests/ndr/sd.py | 623 +++++++
python/samba/tests/password_hash.py | 4 +-
python/wscript | 1 +
selftest/target/Samba3.pm | 7 +-
selftest/tests.py | 1 +
source3/auth/check_samsec.c | 2 +
source3/libads/kerberos_keytab.c | 626 ++++---
source3/libads/ldap.c | 66 +
source3/libnet/libnet_join.c | 9 +-
source3/modules/vfs_ceph_new.c | 1771 ++++++++++++++------
source3/modules/vfs_gpfs.c | 43 +-
source3/modules/wscript_build | 2 +-
source3/param/loadparm.c | 11 +
source3/param/loadparm.h | 1 +
source3/rpc_server/mdssvc/mdssvc.c | 23 +-
source3/script/tests/test_sharesec.sh | 8 +
source3/script/tests/test_update_keytab.sh | 401 +++--
source3/utils/sharesec.c | 88 +-
source4/auth/ntlm/auth_sam.c | 1 +
source4/dsdb/common/util_trusts.c | 26 +-
source4/dsdb/samdb/ldb_modules/password_hash.c | 88 +-
.../dsdb/samdb/ldb_modules/wscript_build_server | 2 +-
source4/librpc/rpc/pyrpc.h | 1 +
source4/librpc/rpc/pyrpc_util.c | 27 +-
source4/librpc/rpc/pyrpc_util.h | 2 +-
source4/rpc_server/lsa/lsa_lookup.c | 15 +
source4/scripting/bin/gen_hresult.py | 4 +-
testprogs/blackbox/test_net_offline.sh | 14 +
48 files changed, 3718 insertions(+), 1142 deletions(-)
create mode 100644 lib/util/util_crypt.c
create mode 100644 lib/util/util_crypt.h
create mode 100644 python/samba/tests/ndr/sd.py
Changeset truncated at 500 lines:
diff --git a/VERSION b/VERSION
index ba6611968d1..a8a8ae01d2a 100644
--- a/VERSION
+++ b/VERSION
@@ -27,7 +27,7 @@ SAMBA_COPYRIGHT_STRING="Copyright Andrew Tridgell and the
Samba Team 1992-2024"
########################################################
SAMBA_VERSION_MAJOR=4
SAMBA_VERSION_MINOR=21
-SAMBA_VERSION_RELEASE=3
+SAMBA_VERSION_RELEASE=4
########################################################
# If a official release has a serious bug #
diff --git a/WHATSNEW.txt b/WHATSNEW.txt
index 63971826231..6d5e65dd043 100644
--- a/WHATSNEW.txt
+++ b/WHATSNEW.txt
@@ -1,3 +1,90 @@
+ ==============================
+ Release Notes for Samba 4.21.4
+ February 17, 2025
+ ==============================
+
+
+This is the latest stable release of the Samba 4.21 release series.
+
+
+Changes since 4.21.3
+--------------------
+
+o Vinit Agnihotri <[email protected]>
+ * BUG 15780: Increasing slowness of sharesec performance with high number of
+ registry shares.
+
+o Jeremy Allison <[email protected]>
+ * BUG 15782: winbindd shows memleak in kerberos_decode_pac.
+
+o Douglas Bagnall <[email protected]>
+ * BUG 15738: Creation of GPOs applicable to more than one group is
impossible
+ with Samba 4.20.0 and later.
+ * BUG 15756: Replace `crypt` module in
+ python/samba/netcmd/user/readpasswords/common.py.
+
+o Ralph Boehme <[email protected]>
+ * BUG 15151: vfs_gpfs silently garbles timestamps > year 2106.
+ * BUG 15796: Spotlight search results don't show file size and creation
date.
+
+o Guenther Deschner <[email protected]>
+ * BUG 15703: General improvements for vfs_ceph_new module.
+ * BUG 15777: net offlinejoin not working correctly.
+ * BUG 15780: Increasing slowness of sharesec performance with high number of
+ registry shares.
+
+o Pavel Filipenský <[email protected]>
+ * BUG 15759: net ads create/join/winbind producing unix dysfunctional
+ keytabs.
+
+o Stefan Metzmacher <[email protected]>
+ * BUG 14213: Windows Explorer crashes on S-1-22-* Unix-SIDs when accessing
+ security tab.
+ * BUG 15769: The values from hresult_errstr_const and hresult_errstr are
+ reversed in 4.20 and 4.21.
+ * BUG 15778: Kerberos referral tickets are generated for principals in our
+ domain if we have a trust to a top level domain.
+ * BUG 15783: NETLOGON_NTLMV2_ENABLED is missing in the SamLogon* user_flags
+ field.
+
+o Anoop C S <[email protected]>
+ * BUG 15703: General improvements for vfs_ceph_new module.
+
+o Andreas Schneider <[email protected]>
+ * BUG 15784: Regression: stack-use-after-return in crypt_as_best_we_can().
+ * BUG 15788: libreplace:readline: gcc 15 complains about incompatible
pointer
+ types.
+
+o Shachar Sharon <[email protected]>
+ * BUG 15703: General improvements for vfs_ceph_new module.
+
+o Shweta Sodani <[email protected]>
+ * BUG 15703: General improvements for vfs_ceph_new module.
+
+
+#######################################
+Reporting bugs & Development Discussion
+#######################################
+
+Please discuss this release on the samba-technical mailing list or by
+joining the #samba-technical:matrix.org matrix room, or
+#samba-technical IRC channel on irc.libera.chat.
+
+If you do report problems then please try to send high quality
+feedback. If you don't provide vital information to help us track down
+the problem then you will probably be ignored. All bug reports should
+be filed under the Samba 4.1 and newer product in the project's Bugzilla
+database (https://bugzilla.samba.org/).
+
+
+======================================================================
+== Our Code, Our Bugs, Our Responsibility.
+== The Samba Team
+======================================================================
+
+
+Release notes for older releases follow:
+----------------------------------------
==============================
Release Notes for Samba 4.21.3
January 06, 2025
@@ -58,8 +145,7 @@ database (https://bugzilla.samba.org/).
======================================================================
-Release notes for older releases follow:
-----------------------------------------
+----------------------------------------------------------------------
==============================
Release Notes for Samba 4.21.2
November 25, 2024
diff --git a/auth/kerberos/kerberos_pac.c b/auth/kerberos/kerberos_pac.c
index b6272ac15eb..4c61cfe838f 100644
--- a/auth/kerberos/kerberos_pac.c
+++ b/auth/kerberos/kerberos_pac.c
@@ -137,7 +137,7 @@ NTSTATUS kerberos_decode_pac(TALLOC_CTX *mem_ctx,
time_t tgs_authtime,
struct PAC_DATA **pac_data_out)
{
- NTSTATUS status;
+ NTSTATUS status = NT_STATUS_NO_MEMORY;
enum ndr_err_code ndr_err;
krb5_error_code ret;
DATA_BLOB modified_pac_blob;
@@ -173,8 +173,8 @@ NTSTATUS kerberos_decode_pac(TALLOC_CTX *mem_ctx,
kdc_sig_wipe = talloc(tmp_ctx, struct PAC_SIGNATURE_DATA);
srv_sig_wipe = talloc(tmp_ctx, struct PAC_SIGNATURE_DATA);
if (!pac_data_raw || !pac_data || !kdc_sig_wipe || !srv_sig_wipe) {
- talloc_free(tmp_ctx);
- return NT_STATUS_NO_MEMORY;
+ status = NT_STATUS_NO_MEMORY;
+ goto out;
}
ndr_err = ndr_pull_struct_blob(&pac_data_blob, pac_data, pac_data,
@@ -183,15 +183,14 @@ NTSTATUS kerberos_decode_pac(TALLOC_CTX *mem_ctx,
status = ndr_map_error2ntstatus(ndr_err);
DEBUG(0,("can't parse the PAC: %s\n",
nt_errstr(status)));
- talloc_free(tmp_ctx);
- return status;
+ goto out;
}
if (pac_data->num_buffers < 4) {
/* we need logon_info, service_key and kdc_key */
DEBUG(0,("less than 4 PAC buffers\n"));
- talloc_free(tmp_ctx);
- return NT_STATUS_INVALID_PARAMETER;
+ status = NT_STATUS_INVALID_PARAMETER;
+ goto out;
}
ndr_err = ndr_pull_struct_blob(
@@ -201,15 +200,14 @@ NTSTATUS kerberos_decode_pac(TALLOC_CTX *mem_ctx,
status = ndr_map_error2ntstatus(ndr_err);
DEBUG(0,("can't parse the PAC: %s\n",
nt_errstr(status)));
- talloc_free(tmp_ctx);
- return status;
+ goto out;
}
if (pac_data_raw->num_buffers < 4) {
/* we need logon_info, service_key and kdc_key */
DEBUG(0,("less than 4 PAC buffers\n"));
- talloc_free(tmp_ctx);
- return NT_STATUS_INVALID_PARAMETER;
+ status = NT_STATUS_INVALID_PARAMETER;
+ goto out;
}
if (pac_data->num_buffers != pac_data_raw->num_buffers) {
@@ -217,8 +215,8 @@ NTSTATUS kerberos_decode_pac(TALLOC_CTX *mem_ctx,
DEBUG(0, ("misparse! PAC_DATA has %d buffers while "
"PAC_DATA_RAW has %d\n", pac_data->num_buffers,
pac_data_raw->num_buffers));
- talloc_free(tmp_ctx);
- return NT_STATUS_INVALID_PARAMETER;
+ status = NT_STATUS_INVALID_PARAMETER;
+ goto out;
}
for (i=0; i < pac_data->num_buffers; i++) {
@@ -229,8 +227,8 @@ NTSTATUS kerberos_decode_pac(TALLOC_CTX *mem_ctx,
DEBUG(0, ("misparse! PAC_DATA buffer %d has type "
"%d while PAC_DATA_RAW has %d\n", i,
data_buf->type, raw_buf->type));
- talloc_free(tmp_ctx);
- return NT_STATUS_INVALID_PARAMETER;
+ status = NT_STATUS_INVALID_PARAMETER;
+ goto out;
}
switch (data_buf->type) {
case PAC_TYPE_LOGON_INFO:
@@ -263,26 +261,26 @@ NTSTATUS kerberos_decode_pac(TALLOC_CTX *mem_ctx,
if (!logon_info) {
DEBUG(0,("PAC no logon_info\n"));
- talloc_free(tmp_ctx);
- return NT_STATUS_INVALID_PARAMETER;
+ status = NT_STATUS_INVALID_PARAMETER;
+ goto out;
}
if (!logon_name) {
DEBUG(0,("PAC no logon_name\n"));
- talloc_free(tmp_ctx);
- return NT_STATUS_INVALID_PARAMETER;
+ status = NT_STATUS_INVALID_PARAMETER;
+ goto out;
}
if (!srv_sig_ptr || !srv_sig_blob) {
DEBUG(0,("PAC no srv_key\n"));
- talloc_free(tmp_ctx);
- return NT_STATUS_INVALID_PARAMETER;
+ status = NT_STATUS_INVALID_PARAMETER;
+ goto out;
}
if (!kdc_sig_ptr || !kdc_sig_blob) {
DEBUG(0,("PAC no kdc_key\n"));
- talloc_free(tmp_ctx);
- return NT_STATUS_INVALID_PARAMETER;
+ status = NT_STATUS_INVALID_PARAMETER;
+ goto out;
}
/* Find and zero out the signatures,
@@ -297,8 +295,7 @@ NTSTATUS kerberos_decode_pac(TALLOC_CTX *mem_ctx,
status = ndr_map_error2ntstatus(ndr_err);
DEBUG(0,("can't parse the KDC signature: %s\n",
nt_errstr(status)));
- talloc_free(tmp_ctx);
- return status;
+ goto out;
}
ndr_err = ndr_pull_struct_blob(
@@ -308,8 +305,7 @@ NTSTATUS kerberos_decode_pac(TALLOC_CTX *mem_ctx,
status = ndr_map_error2ntstatus(ndr_err);
DEBUG(0,("can't parse the SRV signature: %s\n",
nt_errstr(status)));
- talloc_free(tmp_ctx);
- return status;
+ goto out;
}
/* Now zero the decoded structure */
@@ -326,8 +322,7 @@ NTSTATUS kerberos_decode_pac(TALLOC_CTX *mem_ctx,
status = ndr_map_error2ntstatus(ndr_err);
DEBUG(0,("can't repack the KDC signature: %s\n",
nt_errstr(status)));
- talloc_free(tmp_ctx);
- return status;
+ goto out;
}
ndr_err = ndr_push_struct_blob(
srv_sig_blob, pac_data_raw, srv_sig_wipe,
@@ -336,8 +331,7 @@ NTSTATUS kerberos_decode_pac(TALLOC_CTX *mem_ctx,
status = ndr_map_error2ntstatus(ndr_err);
DEBUG(0,("can't repack the SRV signature: %s\n",
nt_errstr(status)));
- talloc_free(tmp_ctx);
- return status;
+ goto out;
}
/* push out the whole structure, but now with zero'ed signatures */
@@ -348,8 +342,7 @@ NTSTATUS kerberos_decode_pac(TALLOC_CTX *mem_ctx,
status = ndr_map_error2ntstatus(ndr_err);
DEBUG(0,("can't repack the RAW PAC: %s\n",
nt_errstr(status)));
- talloc_free(tmp_ctx);
- return status;
+ goto out;
}
if (service_keyblock) {
@@ -360,7 +353,8 @@ NTSTATUS kerberos_decode_pac(TALLOC_CTX *mem_ctx,
if (ret) {
DEBUG(5, ("PAC Decode: Failed to verify the service "
"signature: %s\n", error_message(ret)));
- return NT_STATUS_ACCESS_DENIED;
+ status = NT_STATUS_ACCESS_DENIED;
+ goto out;
}
if (krbtgt_keyblock) {
@@ -370,8 +364,8 @@ NTSTATUS kerberos_decode_pac(TALLOC_CTX *mem_ctx,
if (ret) {
DEBUG(1, ("PAC Decode: Failed to verify the KDC
signature: %s\n",
smb_get_krb5_error_message(context,
ret, tmp_ctx)));
- talloc_free(tmp_ctx);
- return NT_STATUS_ACCESS_DENIED;
+ status = NT_STATUS_ACCESS_DENIED;
+ goto out;
}
}
}
@@ -387,8 +381,8 @@ NTSTATUS kerberos_decode_pac(TALLOC_CTX *mem_ctx,
nt_time_string(tmp_ctx,
logon_name->logon_time)));
DEBUG(2, ("PAC Decode: Ticket: %s\n",
nt_time_string(tmp_ctx,
tgs_authtime_nttime)));
- talloc_free(tmp_ctx);
- return NT_STATUS_ACCESS_DENIED;
+ status = NT_STATUS_ACCESS_DENIED;
+ goto out;
}
}
@@ -400,8 +394,8 @@ NTSTATUS kerberos_decode_pac(TALLOC_CTX *mem_ctx,
if (ret) {
DEBUG(2, ("Could not unparse name from ticket to match
with name from PAC: [%s]:%s\n",
logon_name->account_name,
error_message(ret)));
- talloc_free(tmp_ctx);
- return NT_STATUS_INVALID_PARAMETER;
+ status = NT_STATUS_INVALID_PARAMETER;
+ goto out;
}
bool_ret = strcmp(client_principal_string,
logon_name->account_name) == 0;
@@ -412,8 +406,8 @@ NTSTATUS kerberos_decode_pac(TALLOC_CTX *mem_ctx,
logon_name->account_name,
client_principal_string));
SAFE_FREE(client_principal_string);
- talloc_free(tmp_ctx);
- return NT_STATUS_ACCESS_DENIED;
+ status = NT_STATUS_ACCESS_DENIED;
+ goto out;
}
SAFE_FREE(client_principal_string);
@@ -434,10 +428,15 @@ NTSTATUS kerberos_decode_pac(TALLOC_CTX *mem_ctx,
}
if (pac_data_out) {
- *pac_data_out = talloc_steal(mem_ctx, pac_data);
+ *pac_data_out = talloc_move(mem_ctx, &pac_data);
}
- return NT_STATUS_OK;
+ status = NT_STATUS_OK;
+
+ out:
+
+ TALLOC_FREE(tmp_ctx);
+ return status;
}
NTSTATUS kerberos_pac_logon_info(TALLOC_CTX *mem_ctx,
diff --git a/docs-xml/manpages/net.8.xml b/docs-xml/manpages/net.8.xml
index f388644172f..a5f004d6e12 100644
--- a/docs-xml/manpages/net.8.xml
+++ b/docs-xml/manpages/net.8.xml
@@ -1549,29 +1549,25 @@ to show in the result.
<para>
Since Samba 4.21.0, keytab file is created as specified in <smbconfoption
-name="sync machine password to keytab"/>. The keytab is created only for
+name="sync machine password to keytab"/> . The keytab can be created only when
+machine password is available in secrets.tdb, i.e. only for
<smbconfoption name="kerberos method">secrets only</smbconfoption> and
<smbconfoption name="kerberos method">secrets and keytab</smbconfoption>. With
the smb.conf default values for <smbconfoption name="kerberos method"> secrets
only</smbconfoption> and <smbconfoption name="sync machine password to
keytab"/>
(default is empty) the keytab is not generated at all. Keytab with a default
-name and SPNs synced from AD is created for <smbconfoption name="kerberos
-method">secrets and keytab</smbconfoption> if <smbconfoption name="sync machine
-password to keytab"/> is missing.
+name containing: SPNs synced from AD, account name COMPUTER$ and principal
+host/dns_hostname is created for <smbconfoption name="kerberos method">secrets
+and keytab</smbconfoption> if <smbconfoption name="sync machine password to
+keytab"/> is missing.
</para>
<para>
-Till Samba 4.20.0, two more entries were created by default: the machinename of
-the client (ending with '$') and the UPN (host/domain@REALM). If these two
-entries are still needed, each must be specified in an own keytab file.
-Example below will generate three keytab files that contain SPNs synced from
-AD, host UPN and machine$ SPN:
+Till Samba 4.20, these entries were created by default: the account name
+COMPUTER$, 'host' principal and SPNs synced from AD. Example below generates
+such keytab:
</para>
<programlisting>
-<smbconfoption name="sync machine password to keytab">
-/etc/krb5.keytab0:sync_spns:machine_password,
-/etc/krb5.keytab1:spns=host/[email protected]:machine_password,
-/etc/krb5.keytab2:account_name:machine_password
-</smbconfoption>
+<smbconfoption name="sync machine password to
keytab">/etc/krb5.keytab:spn_prefixes=host:account_name:sync_spns:sync_kvno:machine_password</smbconfoption>
</programlisting>
<para>
No changes are made to the computer AD account.
diff --git a/docs-xml/manpages/vfs_ceph_new.8.xml
b/docs-xml/manpages/vfs_ceph_new.8.xml
index b0640a591a5..eaf5b66cceb 100644
--- a/docs-xml/manpages/vfs_ceph_new.8.xml
+++ b/docs-xml/manpages/vfs_ceph_new.8.xml
@@ -152,6 +152,35 @@
</listitem>
</varlistentry>
+ <varlistentry>
+ <term>ceph_new:proxy = [ yes | no | auto ]</term>
+ <listitem>
+ <para>
+ Allows one to indicate use of the libcephfs proxy
library
+ for optimized resource utilization, allowing more
simultaneous
+ client connections. Prerequisites include the presence
of
+ <emphasis>libcephfs_proxy.so.X</emphasis> shared
library file
+ under loadable locations for dynamic linker and an
active(running)
+ <emphasis>libcephfsd</emphasis> daemon.
+ </para>
+
+ <itemizedlist>
+ <listitem><para><constant>no</constant> (default) - Do
+ not use the proxy library but regular connection through
+ <emphasis>libcephfs.so.X</emphasis>.</para></listitem>
+
+ <listitem><para><constant>yes</constant> - Always use
+ the proxy library and fail the client connection request
+ if prerequisites are unmet.</para></listitem>
+
+ <listitem><para><constant>auto</constant> - Attempt to
+ use the proxy library but fall back to the regular
cephfs
+ connection if prerequisites are unmet.</para></listitem>
+
+ </itemizedlist>
+
+ </listitem>
+ </varlistentry>
</variablelist>
</refsect1>
diff --git a/docs-xml/manpages/vfs_gpfs.8.xml b/docs-xml/manpages/vfs_gpfs.8.xml
index 29f2ac453f0..cee12cd3f94 100644
--- a/docs-xml/manpages/vfs_gpfs.8.xml
+++ b/docs-xml/manpages/vfs_gpfs.8.xml
@@ -316,6 +316,35 @@
</varlistentry>
+ <varlistentry>
+ <term>gpfs:clamp_invalid_times = [ yes | no ]</term>
+ <listitem>
+ <para>
+ GPFS stores timestamps using 32-bit unsigned integers for the
+ seconds component. When using gpfs:settimes = yes, this module
+ validates times that clients attempt to set are within the
+ supported GPFS range between 0 and UINT32_MAX. If a timestamp is
+ outside of this range, the client request is rejected. To cope
+ with clients setting eg temporary timestamps outside the valid
+ range, this parameter can be used to clamp the client timestamp
+ to the allowed range. Times before Thu Jan 1 12:00:00 AM UTC
+ 1970 (the UNIX epock) are then set to Thu Jan 1 12:00:00 AM UTC
+ 1970, times after Sun Feb 7 06:28:15 AM UTC 2106 will be set to
+ Sun Feb 7 06:28:15 AM UTC 2106.
+ </para>
+
+ <itemizedlist>
+ <listitem><para>
+ <command>no(default)</command> - Fail request with invalid time.
+ </para></listitem>
+ <listitem><para>
+ <command>yes</command> - clamp invalid times to 0 or UINT32_MAX.
+ </para></listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+
+
<varlistentry>
<term>gpfs:syncio = [yes|no]</term>
<listitem>
diff --git a/docs-xml/smbdotconf/security/syncmachinepasswordtokeytab.xml
b/docs-xml/smbdotconf/security/syncmachinepasswordtokeytab.xml
index f7dc30023d4..ec3fffc1119 100644
--- a/docs-xml/smbdotconf/security/syncmachinepasswordtokeytab.xml
+++ b/docs-xml/smbdotconf/security/syncmachinepasswordtokeytab.xml
@@ -24,36 +24,48 @@ synchronization.
Each string has this form:
<programlisting>
-absolute_path_to_keytab:spn_spec[:sync_etypes][:sync_kvno][:netbios_aliases][:additional_dns_hostnames][:machine_password]
+absolute_path_to_keytab:spn_spec[:spn_spec]*[:sync_etypes][:sync_kvno][:netbios_aliases][:additional_dns_hostnames][:machine_password]
</programlisting>
-where spn_spec can have exactly one of these four forms:
+spn_spec can be specified multiple times (separated using ':') and each
spn_spec can have exactly one of these forms:
<programlisting>
account_name
+sync_account_name
--
Samba Shared Repository