Samba 4.3 Features added/changed

From SambaWiki
Revision as of 19:32, 15 January 2016 by Fraz (talk | contribs) (→‎Samba 4.3.4)

Samba 4.3.4

Release Notes for Samba 4.3.4
January 12, 2016

This is the latest stable release of Samba 4.3.

Changes since 4.3.3

  • Michael Adam <>
  • BUG #11619: doc: Fix a typo in the smb.conf manpage, explanation of idmap config.
  • BUG #11647: s3:smbd: Fix a corner case of the symlink verification.
  • Jeremy Allison <>
  • BUG #11624: s3: libsmb: Correctly initialize the list head when keeping a list of primary followed by DFS connections.
  • BUG #11625: Reduce the memory footprint of empty string options.
  • Douglas Bagnall <>
  • BUG #11659: Update lastLogon and lastLogonTimestamp.
  • Ralph Boehme <>
  • BUG #11065: vfs_fruit: Enable POSIX directory rename semantics.
  • BUG #11466: Copying files with vfs_fruit fails when using vfs_streams_xattr without stream prefix and type suffix.
  • BUG #11645: smbd: Make "hide dot files" option work with "store dos attributes = yes".
  • Günther Deschner <>
  • BUG #11639: lib/async_req: Do not install async_connect_send_test.

o Stefan Metzmacher <>

  • BUG #11394: Crash: Bad talloc magic value - access after free.
  • Rowland Penny <>
  • BUG #11613: samba-tool: Fix uncaught exception if no fSMORoleOwner attribute is given.
  • Karolin Seeger <>
  • BUG #11619: docs: Fix some typos in the idmap backend section.
  • BUG #11641: docs: Fix typos in man vfs_gpfs.
  • Uri Simchoni <>
  • BUG #11649: smbd: Do not disable "store dos attributes" on-the-fly.

Samba 4.3.3

Release Notes for Samba 4.3.3
December 16, 2015

This is a security release in order to address the following CVEs:

  • CVE-2015-3223 (Denial of service in Samba Active Directory server)
  • CVE-2015-5252 (Insufficient symlink verification in smbd)
  • CVE-2015-5299 (Missing access control check in shadow copy code)
  • CVE-2015-5296 (Samba client requesting encryption vulnerable to downgrade attack)
  • CVE-2015-8467 (Denial of service attack against Windows Active Directory server)
  • CVE-2015-5330 (Remote memory read in Samba LDAP server)

Please note that if building against a system libldb, the required version has been bumped to ldb-1.1.24. This is needed to ensure we build against a system ldb library that contains the fixes for CVE-2015-5330 and CVE-2015-3223.


All versions of Samba from 4.0.0 to 4.3.2 inclusive (resp. all ldb versions up to 1.1.23 inclusive) are vulnerable to a denial of service attack in the samba daemon LDAP server.
A malicious client can send packets that cause the LDAP server in the samba daemon process to become unresponsive, preventing the server from servicing any other requests.
This flaw is not exploitable beyond causing the code to loop expending CPU resources.
All versions of Samba from 3.0.0 to 4.3.2 inclusive are vulnerable to a bug in symlink verification, which under certain circumstances could allow client access to files outside the exported share path.
If a Samba share is configured with a path that shares a common path prefix with another directory on the file system, the smbd daemon may allow the client to follow a symlink pointing to a file or directory in that other directory, even if the share parameter "wide links" is set to "no" (the default).
All versions of Samba from 3.2.0 to 4.3.2 inclusive are vulnerable to a missing access control check in the vfs_shadow_copy2 module. When looking for the shadow copy directory under the share path the current accessing user should have DIRECTORY_LIST access rights in order to view the current snapshots.
This was not being checked in the affected versions of Samba.
Versions of Samba from 3.2.0 to 4.3.2 inclusive do not ensure that signing is negotiated when creating an encrypted client connection to a server.
Without this a man-in-the-middle attack could downgrade the connection and connect using the supplied credentials as an unsigned, unencrypted connection.
Samba, operating as an AD DC, is sometimes operated in a domain with a mix of Samba and Windows Active Directory Domain Controllers.
All versions of Samba from 4.0.0 to 4.3.2 inclusive, when deployed as an AD DC in the same domain with Windows DCs, could be used to override the protection against the MS15-096 / CVE-2015-2535 security issue in Windows.
Prior to MS16-096 it was possible to bypass the quota of machine accounts a non-administrative user could create. Pure Samba domains are not impacted, as Samba does not implement the SeMachineAccountPrivilege functionality to allow non-administrator users to create new computer objects.
All versions of Samba from 4.0.0 to 4.3.2 inclusive (resp. all ldb versions up to 1.1.23 inclusive) are vulnerable to a remote memory read attack in the samba daemon LDAP server.
A malicious client can send packets that cause the LDAP server in the samba daemon process to return heap memory beyond the length of the requested value.
This memory may contain data that the client should not be allowed to see, allowing compromise of the server.
The memory may either be returned to the client in an error string, or stored in the database by a suitabily privileged user. If untrusted users can create objects in your database, please confirm that all DN and name attributes are reasonable.

Changes since 4.3.3:

  • Andrew Bartlett <>
  • Jeremy Allison <>
  • Douglas Bagnall <>
  • Stefan Metzmacher <>

Samba 4.3.2

Release Notes for Samba 4.3.2
December 01, 2015

This is the latest stable release of Samba 4.3.

Changes since 4.3.1:

  • Michael Adam <>
  • BUG #11577: ctdb: Open the RO tracking db with perms 0600 instead of 0000.
  • Jeremy Allison <>
  • BUG #10252: s3-smbd: Fix old DOS client doing wildcard delete - gives an attribute type of zero.
  • BUG #11565: auth: gensec: Fix a memory leak.
  • BUG #11566: lib: util: Make non-critical message a warning.
  • BUG #11589: s3: smbd: If EAs are turned off on a share don't allow an SMB2 create containing them.
  • BUG #11615: s3: smbd: have_file_open_below() fails to enumerate open files below an open directory handle.
  • Ralph Boehme <>
  • BUG #11562: s4:lib/messaging: Use correct path for names.tdb.
  • BUG #11564: async_req: Fix non-blocking connect().
  • Volker Lendecke <>
  • BUG #11243: vfs_gpfs: Re-enable share modes.
  • BUG #11570: smbd: Send SMB2 oplock breaks unencrypted.
  • BUG #11612: winbind: Fix crash on invalid idmap configs.
  • YvanM <>
  • Stefan Metzmacher <>
  • BUG #11327: dcerpc.idl: Accept invalid dcerpc_bind_nak pdus.
  • BUG #11581: s3:smb2_server: Make the logic of SMB2_CANCEL DLIST_REMOVE() clearer.
  • Marc Muehlfeld <>
  • BUG #9912: Changing log level of two entries to DBG_NOTICE.
  • BUG #11581: s3-smbd: Fix use after issue in smbd_smb2_request_dispatch().
  • Noel Power <>
  • BUG #11569: Fix winbindd crashes with samlogon for trusted domain user.
  • BUG #11597: Backport some valgrind fixes from upstream master.
  • Andreas Schneider <
  • BUG #11563: Fix segfault of 'net ads (join|leave) -S INVALID' with nss_wins.
  • Tom Schulz <>
  • BUG #11511: Add libreplace dependency to texpect, fixes a linking error on Solaris.
  • BUG #11512: s4: Fix linking of 'smbtorture' on Solaris.
  • Uri Simchoni <>
  • BUG #11608: auth: Consistent handling of well-known alias as primary gid.

Samba 4.3.1

Release Notes for Samba 4.3.1
October 20, 2015

This is the latest stable release of Samba 4.3.

Changes since 4.3.0:

  • Jeremy Allison <>
  • BUG #10252: s3: smbd: Fix our access-based enumeration on "hide unreadable" to match Windows.
  • BUG #10634: smbd: Fix file name buflen and padding in notify repsonse.
  • BUG #11486: s3: smbd: Fix mkdir race condition.
  • BUG #11522: s3: smbd: Fix opening/creating :stream files on the root share directory.
  • BUG #11535: s3: smbd: Fix NULL pointer bug introduced by previous 'raw'
  • BUG #11522:stream fix .
  • BUG #11555: s3: lsa: lookup_name() logic for unqualified (no DOMAIN\component) names is incorrect.
  • Ralph Boehme <>
  • BUG #11535: s3: smbd: Fix a crash in unix_convert().
  • BUG #11543: vfs_fruit: Return value of ad_pack in vfs_fruit.c.
  • BUG #11549: s3:locking: Initialize lease pointer in share_mode_traverse_fn().
  • BUG #11550: s3:smbstatus: Add stream name to share_entry_forall().
  • BUG #11555: s3:lib: Validate domain name in lookup_wellknown_name().
  • Günther Deschner <>
  • BUG #11038: kerberos: Make sure we only use prompter type when available.
  • Volker Lendecke <>
  • BUG #11038: winbind: Fix 100% loop.
  • BUG #11053: source3/lib/msghdr.c: Fix compiling error on Solaris.
  • Stefan Metzmacher <>
  • BUG #11316: s3:ctdbd_conn: make sure we destroy tevent_fd before closing the socket.
  • BUG #11515: s4:lib/messaging: Use 'msg.lock' and 'msg.sock' for messaging related subdirs.
  • BUG #11526: lib/param: Fix hiding of FLAG_SYNONYM values.
  • Björn Jacke <>
  • BUG #10973: nss_winbind: Fix hang on Solaris on big groups.
  • BUG #11355: build: Use as-needed linker flag also on OpenBSD.
  • Har Gagan Sahai <>
  • Andreas Schneider <>
  • Uri Simchoni <>

Samba 4.3.0

Release Notes for Samba 4.3.0
September 8, 2015

This is the first stable release of Samba 4.3.


Read the "New FileChangeNotify subsystem" and "smb.conf changes" sections (below).



The logging code now supports logging to multiple backends. In addition to the previously available syslog and file backends, the backends for logging to the systemd-journal, lttng and gpfs have been added. Please consult the section for the 'logging' parameter in the smb.conf manpage for details.


Support for Apple's Spotlight has been added by integrating with Gnome Tracker.

For detailed instructions how to build and setup Samba for Spotlight, please see here.

New FileChangeNotify subsystem

Samba now contains a new subsystem to do FileChangeNotify. The previous system used a central database, notify_index.tdb, to store all notification requests. In particular in a cluster this turned out to be a major bottleneck, because some hot records need to be bounced back and forth between nodes on every change event like a new created file.

The new FileChangeNotify subsystem works with a central daemon per node. Every FileChangeNotify request and every event are handled by an asynchronous message from smbd to the notify daemon. The notify daemon maintains a database of all FileChangeNotify requests in memory and will distribute the notify events accordingly. This database is asynchronously distributed in the cluster by the notify daemons.

The notify daemon is supposed to scale a lot better than the previous implementation. The functional advantage is cross-node kernel change notify: Files created via NFS will be seen by SMB clients on other nodes per FileChangeNotify, despite the fact that popular cluster file systems do not offer cross-node inotify.

Two changes to the configuration were required for this new subsystem:

The parameters "change notify" and "kernel change notify" are not per-share anymore but must be set globally. So it is no longer possible to enable or disable notify per share, the notify daemon has no notion of a share, it only works on absolute paths.

New SMB profiling code

The code for SMB (SMB1, SMB2 and SMB3) profiling uses a tdb instead of sysv IPC shared memory. This avoids performance problems and NUMA effects. The profile stats are a bit more detailed than before.

Improved DCERPC man in the middle detection for kerberos

The gssapi based kerberos backends for gensec have support for DCERPC header signing when using DCERPC_AUTH_LEVEL_PRIVACY.

SMB signing required in winbindd by default

The effective value for "client signing" is required by default for winbindd, if the primary domain uses active directory.

Experimental NTDB was removed

The experimental NTDB library introduced in Samba 4.0 has been removed again.

Improved support for trusted domains (as AD DC)

The support for trusted domains/forests has improved a lot.

samba-tool got "domain trust" subcommands to manage trusts:

 create      - Create a domain or forest trust.
 delete      - Delete a domain trust.
 list        - List domain trusts.
 namespaces  - Manage forest trust namespaces.
 show        - Show trusted domain details.
 validate    - Validate a domain trust.

External trusts between individual domains work in both ways (inbound and outbound). The same applies to root domains of a forest trust. The transitive routing into the other forest is fully functional for kerberos, but not yet supported for NTLMSSP.

While a lot of things are working fine, there are currently a few limitations:

  • Both sides of the trust need to fully trust each other!
  • No SID filtering rules are applied at all!
  • This means DCs of domain A can grant domain admin rights in domain B.
  • It's not possible to add users/groups of a trusted domain into domain groups.

SMB 3.1.1 supported

Both client and server have support for SMB 3.1.1 now.

This is the dialect introduced with Windows 10, it improves the secure negotiation of SMB dialects and features.

There's also a new optinal encryption algorithm aes-gcm-128, but for now this is only selected as fallback and aes-ccm-128 is preferred because of the better performance. This might change in future versions when hardware encryption will be supported.

See BUG #11451

New smbclient subcommands

  • Query a directory for change notifications: notify <dir name>
  • Server side copy: scopy <source filename> <destination filename>

New rpcclient subcommands

 netshareenumall 	- Enumerate all shares
 netsharegetinfo 	- Get Share Info
 netsharesetinfo 	- Set Share Info
 netsharesetdfsflags	- Set DFS flags
 netfileenum		- Enumerate open files
 netnamevalidate	- Validate sharename
 netfilegetsec		- Get File security
 netsessdel		- Delete Session
 netsessenum		- Enumerate Sessions
 netdiskenum		- Enumerate Disks
 netconnenum		- Enumerate Connections
 netshareadd		- Add share
 netsharedel		- Delete share

New modules

 idmap_script 		- see 'man 8 idmap_script'
 vfs_unityed_media	- see 'man 8 vfs_unityed_media'
 vfs_shell_snap	- see 'man 8 vfs_shell_snap'

New sparsely connected replia graph (Improved KCC)

The Knowledge Consistency Checker (KCC) maintains a replication graph for DCs across an AD network. The existing Samba KCC uses a fully connected graph, so that each DC replicates from all the others, which does not scale well with large networks. In 4.3 there is an experimental new KCC that creates a sparsely connected replication graph and closely follows Microsoft's specification. It is turned off by default. To use the new KCC, set "kccsrv:samba_kcc=true" in smb.conf and let us know how it goes. You should consider doing this if you are making a large new network. For small networks there is little benefit and you can always switch over at a later date.

Configurable TLS protocol support, with better defaults

The "tls priority" option can be used to change the supported TLS protocols. The default is to disable SSLv3, which is no longer considered secure.

Samba-tool now supports all 7 FSMO roles

Previously "samba-tool fsmo" could only show, transfer or seize the five well-known FSMO roles:

  • Schema Master
  • Domain Naming Master
  • RID Master
  • PDC Emulator
  • Infrastructure Master

It can now also show, transfer or seize the DNS infrastructure roles:

  • DomainDnsZones Infrastructure Master
  • ForestDnsZones Infrastructure Master

CTDB logging changes

The destination for CTDB logging is now set via a single new configuration variable CTDB_LOGGING. This replaces CTDB_LOGFILE and CTDB_SYSLOG, which have both been removed. See ctdbd.conf(5) for details of CTDB_LOGGING.

CTDB no longer runs a separate logging daemon.

CTDB NFS support changes

CTDB's NFS service management has been combined into a single 60.nfs event script. This updated 60.nfs script now uses a call-out to interact with different NFS implementations. See the CTDB_NFS_CALLOUT option in the ctdbd.conf(5) manual page for details. A default call-out is provided to interact with the Linux kernel NFS implementation. The 60.ganesha event script has been removed - a sample call-out is provided for NFS Ganesha, based on this script.

The method of configuring NFS RPC checks has been improved. See ctdb/config/nfs-checks.d/README for details.

Improved Cross-Compiling Support=

A new "hybrid" build configuration mode is added to improve cross-compilation support.

A common challenge in cross-compilation is that of obtaining the results of tests that have to run on the target, during the configuration phase of the build. The Samba build system already supports the following means to do so:

  • Executing configure tests using the --cross-execute parameter
  • Obtaining the results from an answers file using the --cross-answers parameter

The first method has the drawback of inaccurate results if the tests are run using an emulator, or a need to be connected to a running target while building, if the tests are to be run on an actual target. The second method presents a challenge of figuring out the test results.

The new hybrid mode runs the tests and records the result in an answer file. To activate this mode, use both --cross-execute and --cross-answers in the same configure invocation. This mode can be activated once against a running target, and then the generated answers file can be used in subsequent builds.

Also supplied is an example script that can be used as the cross-execute program. This script copies the test to a running target and runs the test on the target, obtaining the result. The obtained results are more accurate than running the test with an emulator, because they reflect the exact kernel and system libraries that exist on the target.

Improved Sparse File Support

Support for the FSCTL_SET_ZERO_DATA and FSCTL_QUERY_ALLOCATED_RANGES SMB2 requests has been added to the smbd file server.

This allows for clients to deallocate (hole punch) regions within a sparse file, and check which portions of a file are allocated.


smb.conf changes

 Parameter Name		Description		Default
 logging			New			(empty)
 msdfs shuffle referrals	New			no
 smbd profiling level		New			off
 spotlight			New			no
 tls priority			New 			NORMAL:-VERS-SSL3.0
 use ntdb			Removed
 change notify			Changed to [global]
 kernel change notify		Changed to [global]
 client max protocol		Changed	default		SMB3_11
 server max protocol		Changed default		SMB3_11

Removed modules

vfs_notify_fam - see section 'New FileChangeNotify subsystem'.


Currently none.


  • Andrew Bartlett <>
  • BUG #10973: No objectClass found in replPropertyMetaData on ordinary objects (non-deleted)
  • BUG #11429: Python bindings don't check integer types
  • BUG #11430: Python bindings don't check array sizes
  • Ralph Boehme <>
  • BUG #11467: Handling of 0 byte resource fork stream
  • Volker Lendecke <>
  • BUG #11488: AD samr GetGroupsForUser fails for users with "()" in their name
  • Stefan Metzmacher <>
  • BUG #11429: Python bindings don't check integer types
  • Matthieu Patou <>
  • BUG #10973: No objectClass found in replPropertyMetaData on ordinary objects (non-deleted)


  • Ralph Boehme <>
  • BUG #11444: Crash in notify_remove caused by change notify = no
  • Günther Deschner <>
  • BUG #11411: smbtorture does not build when configured --with-system-mitkrb5
  • Volker Lendecke <>
  • BUG #11455: fix recursion problem in rep_strtoll in lib/replace/replace.c
  • BUG #11464: xid2sid gives inconsistent results
  • BUG #11465: ctdb: Fix the build on FreeBSD 10.1
  • Roel van Meer <>
  • BUG #11427: nmbd incorrectly matches netbios names as own name
  • Stefan Metzmacher <>
  • BUG #11451: Poor SMB3 encryption performance with AES-GCM
  • BUG #11458: --bundled-libraries=!ldb,!pyldb,!pyldb-util doesn't disable ldb build and install
  • Andreas Schneider <>
  • BUG #9862: Samba "map to guest = Bad uid" doesn't work


  • Andrew Bartlett <>
  • BUG #11436: samba-tool uncaught exception error
  • BUG #10493: revert LDAP extended rule 1.2.840.113556.1.4.1941 LDAP_MATCHING_RULE_IN_CHAIN changes
  • Ralph Boehme <>
  • BUG #11278: Stream names with colon don't work with fruit:encoding = native
  • BUG #11426: net share allowedusers crashes
  • Amitay Isaacs <>

o Stefan Metzmacher <>

  • BUG #11451: Poor SMB3 encryption performance with AES-GCM (part1)
  • BUG #11316: tevent_fd needs to be destroyed before closing the fd

o Arvid Requate <>

  • BUG #11291: NetApp joined to a Samba/ADDC cannot resolve SIDs

o Martin Schwenke <>


  • Jeremy Allison <>
  • Björn Baumbach <>
  • Justin Maggard <>
  • BUG #11320: "force group" with local group not working
  • Martin Schwenke <