Samba 3.6.0 Available for Download

                   Release Notes for Samba 3.6.0
                          August 9, 2011

This is the first release of Samba 3.6.0.

Major enhancements in Samba 3.6.0 include:

Changed security defaults

Samba 3.6 has adopted a number of improved security defaults that will
impact on existing users of Samba.

 client ntlmv2 auth = yes
 client use spnego principal = no
 send spnego principal = no

The impact of 'client ntlmv2 auth = yes' is that by default we will not
use NTLM authentication as a client.  This applies to the Samba client
tools such as smbclient and winbind, but does not change the separately
released in-kernel CIFS client.  To re-enable the poorer NTLM encryption
set '--option=clientusentlmv2auth=no' on your smbclient command line, or
set 'client ntlmv2 auth = no' in your smb.conf

The impact of 'client use spnego principal = no' is that Samba will
use CIFS/hostname to obtain a kerberos ticket, acting more like
Windows when using Kerberos against a CIFS server in smbclient,
winbind and other Samba client tools.  This will change which servers
we will successfully negotiate kerberos connections to.  This is due
to Samba no longer trusting a server-provided hint which is not
available from Windows 2008 or later.  For correct operation with all
clients, all aliases for a server should be recorded as a as a
servicePrincipalName on the server's record in AD.  (For this reason,
this behavior change and parameter was also made in Samba 3.5.9)

The impact of 'send spnego principal = no' is to match Windows 2008 and
not to send this principal, making existing clients give more consistent
behaviour (more likely to fall back to NTLMSSP) between Samba and
Windows 2008, and between Windows versions that did and no longer use
this insecure hint.

SMB2 support

SMB2 support in 3.6.0 is fully functional (with one omission),
and can be enabled by setting:

max protocol = SMB2

in the [global] section of your smb.conf and re-starting
Samba. All features should work over SMB2 except the modification
of user quotas using the Windows quota management tools.

As this is the first release containing what we consider
to be a fully featured SMB2 protocol, we are not enabling
this by default, but encourage users to enable SMB2 and
test it. Once we have enough confirmation from Samba
users and OEMs that SMB2 support is stable in wide user
testing we will enable SMB2 by default in a future Samba

Internal Winbind passdb changes

Winbind has been changed to use the internal samr and lsa rpc pipe to get
local user and group information instead of calling passdb functions. The
reason is to use more of our infrastructure and test this infrastructure by
using it. With this approach more code in Winbind is shared.

New Spoolss code

The spoolss and the old RAP printing code have been completely
overhauled and refactored.

All calls from lanman/printing code has been changed to go through the
spoolss RPC interfaces, this allows us to keep all checks in one place
and avoid special cases in the main printing code.
Printing code has been therefore confined within the spoolss code.

All the printing code, including the spoolss RPC interfaces has been
changed to use the winreg RPC interfaces to store all data.
All data has been migrated from custom, arbitrary TDB files to the
registry interface. This transition allow us to present correct data to
windows client accessing the server registry through the winreg RPC
interfaces to query for printer data. Data is served out from a real
registry implementation and therefore arguably 100% forward compatible.

Migration code from the previous TDB files formats is provided. This
code is automatically invoked the first time the new code is run on the
server. Although manual migration is also available using the 'net
printer migrate' command.

These changes not only make all the spoolss code much more closer to
"the spec", it also greatly improves our internal testing of both
spoolss and winreg interfaces, and reduces overall code duplication.

As part of this work, new tests have been also added to increase

This code will also allow, in future, an easy transition to split out
the spooling functions into a separate daemon for those OEMs that do not
need printing functionality in their appliances, reducing the code

ID Mapping Changes

The id mapping configuration has been a source of much grief in the past.
For this release, id mapping has been rewritten yet again with the goal
of making the configuration more simple and more coherent while keeping
the needed flexibility and even adding to the flexibility in some respects.

The major change that implies the configuration simplifications is at
the heart of the id mapping system: The separation of the "idmap alloc
system" that is responsible for the unix id counters in the tdb, tdb2
and ldap idmap backends from the id mapping code itself has been removed.
The sids_to_unixids operation is now atomic and encapsulates (if needed)
the action of allocating a unix id for a mapping that is to be created.
Consequently all idmap alloc configuration parameters have vanished and
it is hence now also not possible any more to specify an idmap alloc
backend different from the idmap backend. Each idmap backend uses its
own idmap unixid creation mechanism transparently.

As a consequence of the id mapping changes, the methods that are used
for storing and deleting id mappings have been removed from the winbindd
API. The "net idmap dump/restore" commands have been rewritten to
not speak through winbindd any more but directly act on the databases.
This is currently available for the tdb and tdb2 backends, the implementation
for ldap still missing.

The allocate_id functionality is preserved for the unix id creator of the
default idmap configuration is also used as the source of unix ids
for the group mapping database and for the posix attributes in a
ldapsam:editposix setup.

As part of the changes, the default idmap configuration has been
changed to be more coherent with the per-domain configuration.
The parameters "idmap uid", "idmap gid" and "idmap range" are now
deprecated in favour of the systematic "idmap config * : range"
and "idmap config * : backend" parameters. The reason for this change
is that the old options only provided an incomplete and hence deceiving
backwards compatibility, which was a source of many problems with
upgrades. By introducing this change in configuration, it should be
brought to the conciousness of the users that even the simple
id mapping is not working exactly as in Samba 3.0 versions any more.

Endpoint Mapper

As Microsoft is more and more relying on endpoint mapper and we didn't have a
complete implementation we decided to create an instance for Samba. The
endpoint mapper is like a DNS server but for ports. If you want to talk to a
certain RPC service over TCP/IP, you just ask the endpoint mapper on which
port it is running. Then you can connect to the service and make sure that it
is running.

The code is deactivated by default, because it needs more testing and it
doesn't scale yet. If you want to enable and test the endpoint mapper
you can set "rpc_server:epmapper = daemon" in the smb.conf file.

Internal restructuring

Ongoing internal restructuring for better separation of internal subsystem to
achieve a faster build, smaller binaries and cleaner dependencies for the samba3
waf build.

SMB Traffic Analyzer

Added the new SMB Traffic Analyzer (SMBTA) VFS module protocol 2
featuring encryption, multiple arguments, and easier parseability. A new
tool 'smbta-util' has been created to control the encryption behaviour
of SMBTA. For compatibility, SMBTA by default operates on version 1.
There are programs consuming the data that the module sends.

More information can be found on

NFS quota backend on Linux

A new nfs quota backend for Linux has been added that is based
on the existing Solaris/FreeBSD implementation. This allows samba
to communicate correct diskfree information for nfs imports that
are re-exported as samba shares.


smb.conf changes

   Parameter Name                      Description     Default
   --------------                      -----------     -------

   async smb echo handler	       New	       No
   client ntlmv2 auth		       Changed Default Yes
   client use spnego principal	       New	       No
   ctdb locktime warn threshold	       New	       0
   idmap alloc backend		       Removed
   log writeable files on exit	       New	       No
   multicast dns register	       New	       Yes
   ncalrpc dir			       New
   send spnego principal	       New	       No
   smb2 max credits		       New	       8192
   smb2 max read		       New	       1048576
   smb2 max trans		       New	       1048576
   smb2 max write		       New	       1048576
   username map cache time	       New	       0
   winbind max clients		       New	       200

   The variable substitutions for %i and %I no longer
   use IPv4 addresses mapped to IPv6, e.g. '::ffff:',
   if the host has IPv6 enabled. Now %i and %I contain just

Commit Highlights

o   Michael Adam <>
    * ID Mapping changes.

o   Jeremy Allison <>
    * Implement SMB2 support.

o   Stefan Metzmacher <>
    * Implement SMB2 support.

o   Andreas Schneider <>
    * Add an Endpoint Mapper daemon.

Changes since 3.6.0rc3

o   Michael Adam <>
    * BUG 8327: Fix the reload of the configuration, also reload activated
      registry shares.
    * BUG 8328: Cleanup of idmap_tdb2 code.

o   Jeremy Allison <>
    * BUG 7462: Make SA_RESETHAND conditional on its existance.
    * BUG 8324: smbclient cannot list directories from a big-endian machine.
    * BUG 8335: File copy aborts with smb2_validate_message_id: bad message_id.

o   Christian Ambach <>
    * BUG 8330: Fix NFSv4 ACL merging logic.

o   Andrew Bartlett <>
    * BUG 8326: WinXP cannot join a Samba3 domain with a 'even' hostname.

o   Björn Baumbach <>
    * BUG 8303: db_ctdb_send_schedule_for_deletion() is not defined.

o   Alban Browaeys <>
    * BUG 8341: Fix segfault in libsmbclient.

o   Björn Jacke <>
    * BUG 8362: Fix build issue on old glibc systems.

o   Volker Lendecke <>
    * BUG 8343: Fix SMB2 crash reading with aio_fork beyond the end of file.

o   Stefan Metzmacher <>
    * BUG 8347: Fix regression for HP-UX, AIX and OSF.
    * BUG 8357: Make sure we grant credits on async read/write operations.
    * BUG 8358: Fix a bug in run_poll_events().

Changes since 3.6.0rc2

o   Michael Adam <>
    * BUG 8213: Fixes in idmap_autorid.
    * BUG 8217: Do not stat-check the share path in 'net conf addshare'.
    * BUG 8281: Fix build of examples/VFS/*.

o   Jeremy Allison <>
    * BUG 8083: Fix "inherit owner = yes" with vfs_acl_xattr or vfs_acl_tdb
    * BUG 8211: Fix "inherit owner = yes" when "inherit permissions = yes"
      is set.
    * BUG 8219: Fix SMB Panic from Windows 7 client.
    * BUG 8254: Fix "acl check permissions = no".
    * BUG 8293: Fix log file rotating in SMB2.
    * BUG 8304: Fix uninitialized variable in error path.
    * BUG 8307: brl_close_fnum does not call SMB_VFS_BRL_UNLOCK_WINDOWS on all
    * BUG 8310: toupper_ascii() is broken on big-endian systems.
    * BUG 8314: Fix smbd crash with unknown user.

o   Christian Ambach <>
    * BUG 8231: Fix crash bug in 'net cache get'.
    * BUG 8244: Fix copying files larger than 2 GB to a Samba share.
    * BUG 8263: Fix build with --with-fake-kaserver or --with-vfs-afsacl.
    * BUG 8278: Fix smbd panic when CTDB is unhealthy.
    * BUG 8286: Fix smbd crash on premature end of smb2 conn.

o   Andrew Bartlett <>
    * BUG 8230: Move .nmbd socket directory to non-hidden name PREFIX/var/nmbd.
    * Mark 'time offset' parameter as deprecated.

o   Gregor Beck <>
    * BUG 8193: Add new command 'enumerate_recursive'.
    * BUG 8253: Fix Winbind panic if verify_idpool() fails.

o   Kai Blin <>
    * BUG 8289: Fix possible XSS attack (CVE-2011-2694).
    * BUG 8290: Fix Cross-Site Request Forgery in SWAT (CVE-2011-2522).

o   Günther Deschner <>
    * BUG 7888: Deal with buggy 3.0 based PDCs.
    * BUG 8214: Fix smbd crash on printer driver upgrade.
    * BUG 8235: Fix smbd crash on startup caused by migrate_printer().

o   Björn Jacke <>
    * BUG 8262: Fix build of vfs_commit.

o   Günter Kukkukk <>
    * BUG 8305: Fix segfault in nmbd when using 'smbtree ...'..

o   Volker Lendecke <>
    * BUG 7841: Explicitly pass domain_sid to wbint_LookupRids().
    * BUG 8102: Do not allow to change file ACLs from normal domusers.
    * BUG 8247: Fix Coverity ID 2582: FORWARD_NULL.

o   Herb Lewis <>
    * BUG 8216: Make Winbind returning correct results with 'sids2xids'.

o   Stefan Metzmacher <>
    * BUG 8102: Do not allow to change file ACLs from normal domusers.
    * BUG 8195: Make rpc client code working against NT4 servers.
    * BUG 8224: Fix the build on FreeBSD.
    * BUG 8226: Use c99 initializers which are supported by old gcc 2.95
    * BUG 8260: Fix DCERPC responses with fragments larger than 1024 bytes.
    * BUG 8264: Fix Valgrind bugs in svcctl.
    * BUG 8276: Close all sockets attached to a subnet in close_subnet().
    * BUG 8292: Fix a major architectural flaw in the SMB2 server code.

o   Andreas Schneider <>
    * BUG 8215: Fix Winbind unix username lookup.
    * BUG 8240: Fix Valgrind warnings in winreg/spoolss code.

Changee since 3.6.0rc1

o   Michael Adam <>
    * BUG 8200: Add support for multiple writeable ldap idmap domains.

o   Jeremy Allison <>
    * BUG 6911: Fix Kerberos authentication from Vista to Samba.
    * BUG 7054: Fix X account flag when "pwdlastset" is "0".
    * BUG 8133: Fix strange behavior for the file (whose filename first
      character is period ) in SMB2 case.
    * BUG 8144: Fix setting timestamp when touching files with CIFS clients.
    * BUG 8150: Ban "dos charset = utf8".
    * BUG 8153: Fix setting up getaddrinfo on IPv6-only machines.
    * BUG 8156: Fix 'net ads join' using the user's Kerberos ticket.
    * BUG 8157: Fix parsing a cups printcap file.
    * BUG 8163: Fix our asn.1 parser to handle negative numbers.
    * BUG 8175: Fix smbd deadlock.
    * BUG 8191: Split the ACE flag mapping between nfs4 and Windows into two
      separate functions.
    * BUG 8197: Winbind does not properly detect when a DC connection is dead.
    * BUG 8203: Winbind needs to reset the DC connection if an RPC times out.

o   Christian Ambach <>
    * BUG 8152: Fix smbd crash in release_ip().

o   Andrew Bartlett <>
    * BUG 8151: Deprecate security parameters.

o   Gregor Beck <>
    * BUG 8191: nfs4_acls: Pass ACE_FLAG_INHERITED_ACE up to the client/down
      from the client.
    * BUG 8192: Fix parsing of multiple flags in 'smbcacls'.

o   Sumit Bose <>
    * BUG 8142: Fix typos in LDAP schema files.

o   Holger Hetterich <>
    * BUG 8148: Default to protocol version 2 for SMB Traffic Analyzer.
    * BUG 8154: Actually make use of SMBTA subversion numbers.

o   Björn Jacke <>
    * BUG 7998: Remove warning if IOV_MAX is not defined.

o   Jim McDonough <>
    * BUG 8166: Don't lockout users when offline.

o   Stefan Metzmacher <>
    * BUG 8140: talloc: Fix Valgrind false positives and other backports.
    * BUG 8141: Fix wrong permissions on lp_ncalrpc_dir().

o   Andreas Schneider <>
    * BUG 8155: Fix registering only named pipes on EPM for a service.

o   Volker Lendecke <>
    * BUG 8159: Fix memory corruption in fetching cli->server_domain from the
    * BUG 8185: "security=server" does not obey guest login field.
    * BUG 8189: Support shadow copy display over SMB2.
    * BUG 8199: Fix potential crash in smbd handling smb2.

o   Samuel Thibault <>
    * BUG 7998: Fix build on Hurd.

Changes since 3.6.0pre3

o   Jeremy Allison <>
    * BUG 8111: CIFS VFS: Fix unexpected error on SMB posix open.
    * BUG 8112: POSIX extension opens of a directory are denied with EISDIR.
    * Remove fstrings from client struct.
    * BUGFIX when converting from safe_strcpy to strlcpy.
    * Fix off-by-one calculations with strlcpy.
    * Ensure we always write the correct incoming mid into the share mode table
    * Fix the SMB2 oplock showstopper.

o   Christian Ambach <>
    * Convert user-specified domain to uppercase in libsmb.

o   Günther Deschner <>
    * BUG 8132: Fix filling printers location field when using cups.
    * Fix Coverity CID #2302: FORWARD_NULL.
    * Fix cups_pull_comment_location().
    * Fix double free of cups request.
    * Make cups_pull_comment_location() work again.
    * Fix potential crash bug in display_print_driver3().

o   Volker Lendecke <>
    * Properly clean up in pthreadpool_init in case of failure.
    * Make plaintext session setup async.
    * Reduce fd load in Winbind children.
    * Avoid a potential 100% CPU loop in Winbind.
    * Tune broadcast namequeries for unique names.
    * Properly deal with exited winbind children.
    * Fix dup_smb2_vec3.
    * Fix return check in nss_wins.

Changes since 3.6.0pre2

o   Michael Adam <>
    * Fix build of tdb2.

o   Jeremy Allison <>
    * BUG 8083: "inherit owner = yes" doesn't interact correctly with
      vfs_acl_xattr or vfs_acl_tdb module.
    * BUG 8088: rpccli_samr_chng_pswd_auth_crap segfaults if any input blobs
      are null.
    * Correctly detect and deny symlinks anywhere in a path (not just the last
      component) if "follow symlinks = no".

o   Günther Deschner <>
    * BUG 8106: Fix the build of 'smbget' on HP NonStop.
    * Fix timeout in rpc_pipe_open_tcp_port().
    * Fix the build of "--with-profiling-data".
    * Fix the AIX 5.3 build.

o   Sergey Korsak <>
    * BUG #8099: setpwent() actually does endpwent() and vice versa on FreeBSD.

o   Volker Lendecke <>
    * BUG 8066: Fix wrong output in 'smbget'.
    * Fix Coverity IDs 986, 1340, 2047, 2299, 2307, 2325, 2335, 2336, 2470,
      2471, 2478.
    * nsswitch: Add 'wbinfo --lookup-sids'.
    * nsswitch: Add 'wbinfo --sids-to-unix-ids'.
    * Fix smbd with the async echo responder.
    * Fix the build of vfs_gpfs.c.
    * Add a 10-second timeout for the 445 or netbios connection to a DC.
    * Many pthreadpool fixes.

o   Stefan Metzmacher <>
    * BUG 7383: Listen on IPv6 addresses with IPV6_ONLY.

o   Rusty Russell <>
    * Fix transaction recovery area for converted tdbs.

Changes since 3.6.0pre1

o   Michael Adam <>
    * ID Mapping changes.
    * Add "--option" to 'testparm'.

o   Jeremy Allison <>
    * BUG 7080: Quota only shown when logged as root.
    * BUG 7863: Unlink may unlink wrong file when hardlinks are involved.
    * BUG 7996: Sgid bit lost on folder rename.
    * BUG 8040: Fix smbclient segfault with Cyrillic netbios names.
    * Fix crash bug on smbd shutdown when using FOPENDIR().
    * Ensure we don't return an incorrect access mask.
    * Fix bug against the new Mac client.
    * Fix leak in error path.
    * Fix error where Windows client spoolss returns WERR_INVALID_DATA.

o   Christian Ambach <>
    * Fix a segfault in the krb5 locator plugin.
    * Enable sharesec for registry shares.

o   Andrew Bartlett <>
    * Fix memory leak in "security=share" and "force user".

o   Björn Baumbach <>
    * BUG 7875: Fix 'nmbd --port'.
    * BUG 7880: cmd_spoolss_deletedriver() returned without checking all

o   Gregor Beck <>
    * Add new 'net idmap check' command.
    * Add new 'net idmap delete' command.
    * Fix segfault on missing input file in 'net idmap restore'.

o   Olly Betts <>
    * Fix 'net usersidlist' not to skip every other user.

o   Günther Deschner <>
    * BUG 7690: Retry DNS updates when connection to one nameserver has failed.
    * BUG 7945: Let winbind try to use samlogon validation level 6.
    * Fix Coverity ID 2041.
    * Fix potential crash bug in spoolss_PrinterEnumValues push path.
    * Internal restructuring.
    * Don't wipe out all printer drivers when only one should be deleted.
    * Fix winbindd_dual_pam_auth_samlogon() for NT4 domains.

o   David Disseldorp <>
    * BUG 7915: Fix cups pcap reload with no printers.
    * BUG 8040: Fix smbclient segfault with Cyrillic netbios names.
    * Fix memory leak in print_cups.c.
    * Remove duplicate cups response processing code.
    * Follow force user/group for driver IO.
    * Initiate pcap reload from parent smbd.
    * Reload shares after pcap cache fill.

o   Björn Jacke <>
    * BUG 8033: Add explicit configure option whether or not to enable dmapi

o   Volker Lendecke <>
    * BUG 7917: Fix bug in chain_reply.
    * BUG 7940: Fall back for utimes calls.
    * BUG 8009: Fix getting username in 'net rap session'.
    * BUG 8010: Use jenkins hash for str_checksum.
    * BUG 8042: Fix file creation on OS/X.
    * Fix numerous Coverity IDs.
    * Fix a memory leak in check_sam_security_info3.
    * Fix a segfault in the nss wrapper when is not loadable.
    * Make "net sam list [users|workstations]" list only the right things.
    * Fix a potential memleak in secrets_fetch_trusted_domain_password.
    * Use the right credentials in check_netlogond_security.
    * Add support for AF_NETLINK addr notifications.
    * Fork multiple Winbind children per domain.
    * Fix a deadlock between smbd and ctdbd.
    * Add 'wbinfo --dc-info'.
    * Make "nmbd socket dir" configurable.
    * Fix a valgrind error.
    * Fix a memleak in receive_getdc_response.

o   Nikolay Martynov <>
    * BUG 8010: Fix inode generation so nautilus can count total dir size

o   Stefan Metzmacher <>
    * BUG 7567: Fix printing from Windows 7.
    * BUG 7899: Don't return "-1" on success in 'net rpc vampire keytab'.
    * BUG 7944: Catch lookup_names/sids schannel errors over ncacn_ip_tcp.
    * Don't grant SEC_STD_DELETE always to the owner of a file.
    * Fix segfaults on addrchange errors in Winbind.
    * Allow machine accounts as members in groupdb.

o   Jonathan Nieder <>
    * BUG 6837: Make "rlimit_max below minimum Windows limit" notification less

o   Andreas Schneider <>
    * Add an Endpoint Mapper daemon.
    * Add IPv6 support for the endpoint mapper.
    * Free unused memory in the rpc server.
    * Fix possible segfaults in svcctl server.
    * Fix possible segfault with client_id in rpc server.
    * Add a 'svcctl shutdown' function to rpc server.
    * Fix a resource leak in net_afs.
    * Fix a resource leak in smbta-util.
    * Fix possible resource leak in net_usershare.
    * Fix possible resource leak in 'smbget'.
    * Fix possible resource leak in 'smbfilter'.
    * Fix a possible null pointer dereference in smbd.

o   Pavel Shilovsky <>
    * BUG 7928: Fix problems with "kernel oplocks" option set to "no".
    * Ensure we send the direct levelII oplock break to the correct fid.

o   Simo Sorce <>
    * Fix private libdir and codepages paths.

o   Andrew Tridgell <>
    * Fix a valgrind error.