Update includes Jelmers' changes.
authorJohn Terpstra <jht@samba.org>
Sun, 25 May 2003 07:55:33 +0000 (07:55 +0000)
committerJohn Terpstra <jht@samba.org>
Sun, 25 May 2003 07:55:33 +0000 (07:55 +0000)
(This used to be commit a2501945cf29c5579da61e708705a56a3f0a993e)

docs/docbook/projdoc/passdb.xml

index b2ae40f0b75ea33efb58d174f6c8d5231f8c72ce..c64f5685719b3da0522c634cbad585262dab3141 100644 (file)
                </affiliation>
        </author>
        
-       <pubdate>February 2003</pubdate>
+       <pubdate>May 24, 2003</pubdate>
 </chapterinfo>
+<title>Account Information Databases</title>
 
-<title>User information database</title>
+<para>
+Samba-3 implements a new capability to work concurrently with mulitple account backends.
+The possible new combinations of password backends allows Samba-3 a degree of flexibility
+and scalability that previously could be achieved only with MS Windows Active Directory.
+This chapter describes the new functionality and how to get the most out of it.
+</para>
+
+<para>
+In the course of development of Samba-3 a number of requests were received to provide the
+ability to migrate MS Windows NT4 SAM accounts to Samba-3 without the need to provide
+matching Unix/Linux accounts. We called this the <emphasis>Non Unix Accounts (NUA)</emphasis>
+capability. The intent was that an administrator could decide to use the <emphasis>tdbsam</emphasis>
+backend and by simply specifying <emphasis>"passdb backedn = tdbsam_nua, guest"</emphasis>
+this would allow Samba-3 to implement a solution that did not use Unix accounts per se. Late
+in the development cycle the team doing this work hit upon some obstacles that prevents this
+solution from being used. Given the delays with Samba-3 release a decision was made to NOT
+deliver this functionality until a better method of recognising NT Group SIDs from NT User
+SIDs could be found. This feature may thus return during the life cycle for the Samba-3 series.
+</para>
+
+<note><para>
+Samba-3.0.0 does NOT support Non-Unix Account (NUA) operation.
+</para></note>
 
 <sect1>
-       <title>Introduction</title>
+<title>Features and Benefits</title>
 
-       <para>Old windows clients send plain text passwords over the wire. 
-       Samba can check these passwords by crypting them and comparing them 
-       to the hash stored in the unix user database.
-       </para>
-       
-       <para>
-       Newer windows clients send encrypted passwords (so-called 
-       Lanman and NT hashes) over 
-       the wire, instead of plain text passwords. The newest clients 
-       will only send encrypted passwords and refuse to send plain text 
-       passwords, unless their registry is tweaked.
-       </para>
+<para>
+Samba-3 provides for complete backwards compatibility with Samba-2.2.x functionality
+as follows:
+</para>
 
-       <para>These passwords can't be converted to unix style encrypted 
-       passwords. Because of that you can't use the standard unix 
-       user database, and you have to store the Lanman and NT hashes 
-       somewhere else. </para>
-       
-       <para>Next to a differently encrypted passwords, 
-       windows also stores certain data for each user 
-       that is not stored in a unix user database, e.g. 
-       workstations the user may logon from, the location where his/her 
-       profile is stored, etc.
-       Samba retrieves and stores this information using a "passdb backend".
-       Commonly
-       available backends are LDAP, plain text file, MySQL and nisplus.
-       For more information, see the documentation about the 
-       <command>passdb backend = </command> parameter.
-       </para>
-</sect1>
+<variablelist>
+<title>Backwards Compatibility Backends</title>
+       <varlistentry><term>Plain Text:</term>
+               <listitem>
+                       <para>
+                       This option uses nothing but the Unix/Linux <filename>/etc/passwd</filename>
+                       style back end. On systems that have PAM (Pluggable Authentication Modules)
+                       support all PAM modules are supported. The behaviour is just as it was with
+                       Samba-2.2.x, and the protocol limitations imposed by MS Windows clients
+                       apply likewise.
+                       </para>
+               </listitem>
+       </varlistentry>
 
-<sect1>
-       <title>Important Notes About Security</title>
-       
-       <para>The unix and SMB password encryption techniques seem similar 
-       on the surface. This similarity is, however, only skin deep. The unix 
-       scheme typically sends clear text passwords over the network when 
-       logging in. This is bad. The SMB encryption scheme never sends the 
-       cleartext password over the network but it does store the 16 byte 
-       hashed values on disk. This is also bad. Why? Because the 16 byte hashed 
-       values are a "password equivalent". You cannot derive the user's 
-       password from them, but they could potentially be used in a modified 
-       client to gain access to a server. This would require considerable 
-       technical knowledge on behalf of the attacker but is perfectly possible. 
-       You should thus treat the data stored in whatever 
-       passdb backend you use (smbpasswd file, ldap, mysql) as though it contained the 
-       cleartext passwords of all your users. Its contents must be kept 
-       secret, and the file should be protected accordingly.</para>
-       
-       <para>Ideally we would like a password scheme which neither requires 
-       plain text passwords on the net or on disk. Unfortunately this 
-       is not available as Samba is stuck with being compatible with 
-       other SMB systems (WinNT, WfWg, Win95 etc). </para>
-
-       <warning>
-               <para>Note that Windows NT 4.0 Service pack 3 changed the 
-               default for permissible authentication so that plaintext 
-               passwords are <emphasis>never</emphasis> sent over the wire. 
-               The solution to this is either to switch to encrypted passwords 
-               with Samba or edit the Windows NT registry to re-enable plaintext 
-               passwords. See the document WinNT.txt for details on how to do 
-               this.</para>
-               
-               <para>Other Microsoft operating systems which also exhibit 
-               this behavior includes</para>
-               
-               <para> These versions of MS Windows do not support full domain
-               security protocols, although they may log onto a domain environment.
-               Of these Only MS Windows XP Home does NOT support domain logons.</para>
+       <varlistentry><term>smbpasswd:</term>
+               <listitem>
+                       <para>
+                       This option allows continues use of the <filename>smbpasswd</filename>
+                       file that maintains a plain ASCII (text) layout that includes the MS Windows
+                       LanMan and NT encrypted passwords as well as a field that stores some
+                       account information. This form of password backend does NOT store any of
+                       the MS Windows NT/200x SAM (Security Account Manager) information needed to
+                       provide the extended controls that are needed for more comprehensive 
+                       interoperation with MS Windows NT4 / 200x servers.
+                       </para>
+               </listitem>
+       </varlistentry>
 
-               <simplelist>
-                       <member>MS DOS Network client 3.0 with 
-                       the basic network redirector installed</member>
-                       
-                       <member>Windows 95 with the network redirector 
-                       update installed</member>
-                       
-                       <member>Windows 98 [se]</member>
+       <varlistentry><term>ldapsam_compat (Samba-2.2 LDAP Compatibilty):</term>
+               <listitem>
+                       <para>
+                       There is a password backend option that allows continued operation with
+                       a existing OpenLDAP backend that uses the Samba-2.2.x LDAP schema extension.
+                       This option is provided primarily as a migration tool, although there is
+                       no reason to force migration at this time.
+                       </para>
+               </listitem>
+       </varlistentry>
+</variablelist>
 
-                       <member>Windows Me</member>
+<para>
+Samba-3 introduces the following new password backend capabilities:
+</para>
 
-                       <member>Windows XP Home</member>
-               </simplelist>
+<variablelist>
+<title>New Backends</title>
+       <varlistentry><term>tdbsam:</term>
+               <listitem>
+                       <para>
+                       The <emphasis>tdbsam</emphasis> password backend stores the old <emphasis>
+                       smbpasswd</emphasis> information PLUS the extended MS Windows NT / 200x
+                       SAM information into a binary format TDB (trivial database) file.
+                       The inclusion of the extended information makes it possible for Samba-3
+                       to implement the same account and system access controls that are possible
+                       with MS Windows NT4 and MS Windows 200x based systems.
+                       </para>
+
+                       <para>
+                       The inclusion of the <emphasis>tdbssam</emphasis> capability is a direct
+                       response to user requests to allow simple site operation without the overhead
+                       of the complexities of running OpenLDAP. It is recommended to use this only
+                       for sites that have fewer than 250 users. For larger sites or implementations
+                       the use of OpenLDAP or of Active Directory integration is strongly recommended.
+                       </para>
+               </listitem>
+       </varlistentry>
 
-               <para> The following versions of MS Windows fully support domain
-               security protocols.</para>
+       <varlistentry><term>ldapsam:</term>
+               <listitem>
+                       <para>
+                       Samba-3 has a new and extended LDAP implementation that requires configuration
+                       of OpenLDAP with a new format samba schema. The new format schema file is
+                       included in the <filename>~samba/examples/LDAP</filename> directory.
+                       </para>
+
+                       <para>
+                       The new LDAP implmentation significantly expands the control abilities that
+                       were possible with prior versions of Samba. It is not possible to specify
+                       "per user" profile settings, home directories, account access controls, and
+                       much more. Corporate sites will see that the Samba-Team has listened to their
+                       requests both for capability and to allow greater scalability.
+                       </para>
+               </listitem>
+       </varlistentry>
 
-               <simplelist>
-                       <member>Windows NT 3.5x</member>
-                       <member>Windows NT 4.0</member>
-                       <member>Windows 2000 Professional</member>
-                       <member>Windows 200x Server/Advanced Server</member>
-                       <member>Windows XP Professional</member>
-               </simplelist>
-       </warning>
-               
-       <note><para>All current release of 
-       Microsoft SMB/CIFS clients support authentication via the
-       SMB Challenge/Response mechanism described here.  Enabling
-       clear text authentication does not disable the ability
-       of the client to participate in encrypted authentication.</para></note>
-
-       <para>MS Windows clients will cache the encrypted password alone.
-       Even when plain text passwords are re-enabled, through the appropriate
-       registry change, the plain text password is NEVER cached. This means that
-       in the event that a network connections should become disconnected (broken)
-       only the cached (encrypted) password will be sent to the resource server
-       to affect a auto-reconnect. If the resource server does not support encrypted
-       passwords the auto-reconnect will fail. <emphasis>USE OF ENCRYPTED PASSWORDS
-       IS STRONGLY ADVISED.</emphasis></para>
+       <varlistentry><term>mysqlsam (MySQL based backend):</term>
+               <listitem>
+                       <para>
+                       It is expected that the MySQL based SAM will be very popular in some corners.
+                       This database backend will be on considerable interest to sites that want to
+                       leverage existing MySQL technology.
+                       </para>
+               </listitem>
+       </varlistentry>
 
-       <sect2>
-               <title>Advantages of SMB Encryption</title>
-
-               <simplelist>
-                       <member>Plain text passwords are not passed across 
-                       the network. Someone using a network sniffer cannot just 
-                       record passwords going to the SMB server.</member>
-                
-                       <member>WinNT doesn't like talking to a server 
-                       that does not support encrypted passwords. It will refuse 
-                       to browse the server if the server is also in user level 
-                       security mode. It will insist on prompting the user for the 
-                       password on each connection, which is very annoying. The
-                       only things you can do to stop this is to use SMB encryption.
-                       </member>
-
-                       <member>Encrypted password support allows automatic share
-                       (resource) reconnects.</member>
-               </simplelist>
-       </sect2>
+       <varlistentry><term>xmlsam (XML based datafile):</term>
+               <listitem>
+                       <para>
+                       Allows the account and password data to be stored in an XML format
+                       data file. This backend is NOT recommended for normal operation, it is
+                       provided for developmental and for experimental use only. We recognise
+                       that this will not stop some people from using it anyhow, it should work
+                       but is NOT officially supported at this time (and likely will not be
+                       at any time).
+                       </para>
+
+                       <para>
+                       The xmlsam option can be useful for account migration between database
+                       backends. Use of this tool will allow the data to be edited before migration
+                       into another backend format.
+                       </para>
+               </listitem>
+       </varlistentry>
 
+       <varlistentry><term>nisplussam:</term>
+               <listitem>
+                       <para>
+                       The  NIS+ based passdb backend. Takes name NIS domain as an
+                       optional argument. Only works with Sun NIS+ servers.
+                       </para>
+               </listitem>
+       </varlistentry>
 
-       <sect2>
-               <title>Advantages of non-encrypted passwords</title>
+       <varlistentry><term>plugin:</term>
+               <listitem>
+                       <para>
+                       This option allows any external non-Samba backend to interface directly
+                       to the samba code. This facility will allow third part vendors to provide
+                       a proprietary backend to Samba-3.
+                       </para>
+               </listitem>
+       </varlistentry>
+</variablelist>
 
-               <simplelist>
-                       <member>Plain text passwords are not kept 
-                       on disk, and are NOT cached in memory. </member>
-                       
-                       <member>Uses same password file as other unix 
-                       services such as login and ftp</member>
-                       
-                       <member>Use of other services (such as telnet and ftp) which
-                       send plain text passwords over the net, so sending them for SMB
-                       isn't such a big deal.</member>
-               </simplelist>
-       </sect2>
 </sect1>
 
-
 <sect1>
-       <title>The smbpasswd Command</title>
-       
-       <para>The smbpasswd utility is a utility similar to the 
-       <command>passwd</command> or <command>yppasswd</command> programs.
-       It maintains the two 32 byte password fields in the passdb backend. </para>
-
-       <para><command>smbpasswd</command> works in a client-server mode 
-       where it contacts the local smbd to change the user's password on its 
-       behalf. This has enormous benefits - as follows.</para>
-
-       <para><command>smbpasswd</command> has the capability 
-       to change passwords on Windows NT servers (this only works when 
-       the request is sent to the NT Primary Domain Controller if you 
-       are changing an NT Domain user's password).</para>
-       
-       <para>To run smbpasswd as a normal user just type :</para>
-       
-       <para><prompt>$ </prompt><userinput>smbpasswd</userinput></para>
-       <para><prompt>Old SMB password: </prompt><userinput>&lt;type old value here - 
-       or hit return if there was no old password&gt;</userinput></para>
-       <para><prompt>New SMB Password: </prompt><userinput>&lt;type new value&gt;
-       </userinput></para>
-       <para><prompt>Repeat New SMB Password: </prompt><userinput>&lt;re-type new value
-       </userinput></para>
-       
-       <para>If the old value does not match the current value stored for 
-       that user, or the two new values do not match each other, then the 
-       password will not be changed.</para>
-       
-       <para>If invoked by an ordinary user it will only allow the user 
-       to change his or her own Samba password.</para>
+       <title>Technical Information</title>
+
+       <para>
+       Old windows clients send plain text passwords over the wire. Samba can check these
+       passwords by crypting them and comparing them to the hash stored in the unix user database.
+       </para>
        
-       <para>If run by the root user smbpasswd may take an optional 
-       argument, specifying the user name whose SMB password you wish to 
-       change.  Note that when run as root smbpasswd does not prompt for 
-       or check the old password value, thus allowing root to set passwords 
-       for users who have forgotten their passwords.</para>
+       <para>
+       Newer windows clients send encrypted passwords (so-called Lanman and NT hashes) over 
+       the wire, instead of plain text passwords. The newest clients will send only encrypted
+       passwords and refuse to send plain text passwords, unless their registry is tweaked.
+       </para>
+
+       <para>
+       These passwords can't be converted to unix style encrypted passwords. Because of that
+       you can't use the standard unix user database, and you have to store the Lanman and NT
+       hashes somewhere else.
+       </para>
        
-       <para><command>smbpasswd</command> is designed to work in the same way 
-       and be familiar to UNIX users who use the <command>passwd</command> or 
-       <command>yppasswd</command> commands.</para>
+       <para>
+       In addition to differently encrypted passwords, windows also stores certain data for each
+       user that is not stored in a unix user database. e.g: workstations the user may logon from,
+       the location where the users' profile is stored, and so on. Samba retrieves and stores this
+       information using a "passdb backend".  Commonly available backends are LDAP, plain text
+       file, MySQL and nisplus.  For more information, see the man page for &smb.conf; regarding the 
+       <command>passdb backend = </command> parameter.
+       </para>
 
-       <para>For more details on using <command>smbpasswd</command> refer 
-       to the man page which will always be the definitive reference.</para>
-</sect1>
+       <sect2>
+       <title>Important Notes About Security</title>
+               
+               <para>
+               The unix and SMB password encryption techniques seem similar on the surface. This
+               similarity is, however, only skin deep. The unix scheme typically sends clear text
+               passwords over the network when logging in. This is bad. The SMB encryption scheme
+               never sends the cleartext password over the network but it does store the 16 byte 
+               hashed values on disk. This is also bad. Why? Because the 16 byte hashed values
+               are a "password equivalent". You cannot derive the user's password from them, but
+               they could potentially be used in a modified client to gain access to a server.
+               This would require considerable technical knowledge on behalf of the attacker but
+               is perfectly possible. You should thus treat the data stored in whatever passdb
+               backend you use (smbpasswd file, ldap, mysql) as though it contained the cleartext
+               passwords of all your users. Its contents must be kept secret, and the file should
+               be protected accordingly.
+               </para>
+               
+               <para>
+               Ideally we would like a password scheme that involves neither plain text passwords
+               on the net nor on disk. Unfortunately this is not available as Samba is stuck with
+               having to be compatible with other SMB systems (WinNT, WfWg, Win95 etc).
+               </para>
+
+               <para>
+               Windows NT 4.0 Service pack 3 changed the default setting so that plaintext passwords
+               are disabled from being sent over the wire. This mandates either the use of encrypted
+               password support or edit the Windows NT registry to re-enable plaintext passwords.
+               </para>
+               
+               <para>
+               The following versions of MS Windows do not support full domain security protocols,
+               although they may log onto a domain environment:
+               </para>
+
+               <itemizedlist>
+                       <listitem><para>
+                       MS DOS Network client 3.0 with the basic network redirector installed
+                       </para></listitem>
+
+                       <listitem><para>
+                       Windows 95 with the network redirector update installed
+                       </para></listitem>
+
+                       <listitem><para>
+                       Windows 98 [se]
+                       </para></listitem>
+
+                       <listitem><para>
+                       Windows Me</para>
+                       </listitem>
+               </itemizedlist>
+
+               <note>
+               <para>
+               MS Windows XP Home does not have facilities to become a domain member and it can
+               not participate in domain logons.
+               </para>
+               </note>
+
+               <para>
+               The following versions of MS Windows fully support domain security protocols.
+               </para>
+
+               <itemizedlist>
+                       <listitem><para>Windows NT 3.5x</para></listitem>
+                       <listitem><para>Windows NT 4.0</para></listitem>
+                       <listitem><para>Windows 2000 Professional</para></listitem>
+                       <listitem><para>Windows 200x Server/Advanced Server</para></listitem>
+                       <listitem><para>Windows XP Professional</para></listitem>
+               </itemizedlist>
+                       
+               <para>
+               All current release of Microsoft SMB/CIFS clients support authentication via the
+               SMB Challenge/Response mechanism described here. Enabling clear text authentication
+               does not disable the ability of the client to participate in encrypted authentication.
+               Instead, it allows the client to negotiate either plain text _or_ encrypted password
+               handling.
+               </para>
+
+               <para>
+               MS Windows clients will cache the encrypted password alone. Where plain text passwords
+               are re-enabled, through the appropriate registry change, the plain text password is NEVER
+               cached. This means that in the event that a network connections should become disconnected
+               (broken) only the cached (encrypted) password will be sent to the resource server to
+               affect a auto-reconnect. If the resource server does not support encrypted passwords the
+               auto-reconnect will fail. <emphasis>USE OF ENCRYPTED PASSWORDS IS STRONGLY ADVISED.</emphasis>
+               </para>
+
+               <sect3>
+               <title>Advantages of Encrypted Passwords</title>
+
+                       <itemizedlist>
+                               <listitem><para>Plain text passwords are not passed across 
+                               the network. Someone using a network sniffer cannot just 
+                               record passwords going to the SMB server.</para></listitem>
+
+                               <listitem><para>Plain text passwords are not stored anywhere in
+                               memory or on disk.</para></listitem>
+                        
+                               <listitem><para>WinNT doesn't like talking to a server 
+                               that does not support encrypted passwords. It will refuse 
+                               to browse the server if the server is also in user level 
+                               security mode. It will insist on prompting the user for the 
+                               password on each connection, which is very annoying. The
+                               only things you can do to stop this is to use SMB encryption.
+                               </para></listitem>
+
+                               <listitem><para>Encrypted password support allows automatic share
+                               (resource) reconnects.</para></listitem>
+
+                               <listitem><para>Encrypted passwords are essential for PDC/BDC
+                               operation.</para></listitem>
+                       </itemizedlist>
+               </sect3>
+
+
+               <sect3>
+               <title>Advantages of non-encrypted passwords</title>
 
-<!--
-<sect1>
-<title>The <command>pdbedit</command> command</title>
-FIXME
+                       <itemizedlist>
+                               <listitem><para>Plain text passwords are not kept 
+                               on disk, and are NOT cached in memory. </para></listitem>
+                               
+                               <listitem><para>Uses same password file as other unix 
+                               services such as login and ftp</para></listitem>
+                               
+                               <listitem><para>Use of other services (such as telnet and ftp) which
+                               send plain text passwords over the net, so sending them for SMB
+                               isn't such a big deal.</para></listitem>
+                       </itemizedlist>
+               </sect3>
+       </sect2>
 </sect1>
--->
 
 <sect1>
-<title>Plain text</title>
+<title>Account Management Tools</title>
+
 <para>
-Older versions of samba retrieved user information from the unix user database 
-and eventually some other fields from the file <filename>/etc/samba/smbpasswd</filename>
-or <filename>/etc/smbpasswd</filename>. When password encryption is disabled, no 
-data is stored at all.
+Samba-3 provides two (2) tools for management of User and machine accounts. These tools are
+called <filename>smbpasswd</filename> and <filename>pdbedit</filename>. A third tool is under
+development but is NOT expected to ship in time for Samba-3.0.0. The new tool will be a TCL/TK
+GUI tool that looks much like the MS Windows NT4 Domain User Manager - hopefully this will
+be announced in time for samba-3.0.1 release timing.
 </para>
-</sect1>
+       <sect2>
+       <title>The <emphasis>smbpasswd</emphasis> Command</title>
+       
+               <para>
+               The smbpasswd utility is a utility similar to the <command>passwd</command>
+               or <command>yppasswd</command> programs.  It maintains the two 32 byte password
+               fields in the passdb backend.
+               </para>
+
+               <para>
+               <command>smbpasswd</command> works in a client-server mode where it contacts the
+               local smbd to change the user's password on its behalf.This has enormous benefits
+               as follows:
+               </para>
+
+               <para>
+               <command>smbpasswd</command> has the capability to change passwords on Windows NT
+               servers (this only works when the request is sent to the NT Primary Domain Controller
+               if changing an NT Domain user's password).
+               </para>
+
+               <para>
+               <command>smbpasswd</command> can be used to:
+               </para>
+               
+               <itemizedlist>
+                       <listitem><para>
+                       <emphasis>add</emphasis> user or machine accounts
+                       </para></listitem>
+
+                       <listitem><para>
+                       <emphasis>delete</emphasis> user or machine accounts
+                       </para></listitem>
+
+                       <listitem><para>
+                       <emphasis>enable</emphasis> user or machine accounts
+                       </para></listitem>
+
+                       <listitem><para>
+                       <emphasis>disable</emphasis> user or machine accounts
+                       </para></listitem>
+
+                       <listitem><para>
+                       <emphasis>set to NULL</emphasis> user passwords
+                       </para></listitem>
+
+                       <listitem><para>
+                       <emphasis>manage interdomain trust accounts</emphasis>
+                       </para></listitem>
+               </itemizedlist>
+               
+               <para>
+               To run smbpasswd as a normal user just type:
+               </para>
+               
+               <para>
+               <programlisting>
+               <prompt>$ </prompt><userinput>smbpasswd</userinput>
+               <prompt>Old SMB password: </prompt><userinput>&lt;secret&gt;</userinput>
+               </programlisting>
+               For <emphasis>secret</emphasis> type old value here - or hit return if
+               there was no old password
+               <programlisting>
+               <prompt>New SMB Password: </prompt><userinput>&lt;new secret&gt;</userinput>
+               <prompt>Repeat New SMB Password: </prompt><userinput>&lt;new secret&gt;</userinput>
+               </programlisting>
+               </para>
+               
+               <para>
+               If the old value does not match the current value stored for that user, or the two
+               new values do not match each other, then the password will not be changed.
+               </para>
+               
+               <para>
+               When invoked by an ordinary user it will only allow change of their own
+               SMB password.
+               </para>
+               
+               <para>
+               When run by root smbpasswd may take an optional argument, specifying
+               the user name whose SMB password you wish to change. When run as root, smbpasswd
+               does not prompt for or check the old password value, thus allowing root to set passwords 
+               for users who have forgotten their passwords.
+               </para>
+               
+               <para>
+               <command>smbpasswd</command> is designed to work in the way familiar to UNIX
+               users who use the <command>passwd</command> or <command>yppasswd</command> commands.
+               While designed for administrative use, this tool provides essential user level
+               password change capabilities.
+               </para>
+
+               <para>
+               For more details on using <command>smbpasswd</command> refer to the man page (the
+               definitive reference).
+               </para>
+       </sect2>
 
-<sect1>
-<title>TDB</title>
-<para>Samba can also store the user data in a "TDB" (Trivial Database). Using this backend 
-doesn't require any additional configuration. This backend is recommended for new installations that 
-don not require LDAP.
-</para>
+       <sect2>
+       <title>The <emphasis>pdbedit</emphasis> Command</title>
+
+               <para>
+               <command>pdbedit</command> is a tool that can be used only by root. It is used to
+               manage the passdb backend. <command>pdbedit</command> can be used to:
+               </para>
+
+               <itemizedlist>
+                       <listitem><para>
+                       add, remove or modify user accounts
+                       </para></listitem>
+
+                       <listitem><para>
+                       listing user accounts
+                       </para></listitem>
+
+                       <listitem><para>
+                       migrate user accounts
+                       </para></listitem>
+               </itemizedlist>
+
+               <para>
+               The <command>pdbedit</command> tool is the only one that can manage the account
+               security and policy settings. It is capable of all operations that smbpasswd can
+               do as well as a super set of them.
+               </para>
+
+               <para>
+               One particularly important purpose of the <command>pdbedit</command> is to allow
+               the migration of account information from one passdb backend to another. See the
+               <link linkend="XMLpassdb">XML</link> password backend section of this chapter.
+               </para>
+
+               <para>
+               The following is an example of the user account information that is stored in
+               a tdbsam password backend. This listing was produced by running:
+               </para>
+
+               <para>
+               pdbedit -Lv met
+               <programlisting>
+               Unix username:        met
+               NT username:
+               Account Flags:        [UX         ]
+               User SID:             S-1-5-21-1449123459-1407424037-3116680435-2004
+               Primary Group SID:    S-1-5-21-1449123459-1407424037-3116680435-1201
+               Full Name:            Melissa E Terpstra
+               Home Directory:       \\frodo\met\Win9Profile
+               HomeDir Drive:        H:
+               Logon Script:         scripts\logon.bat
+               Profile Path:         \\frodo\Profiles\met
+               Domain:               MIDEARTH
+               Account desc:
+               Workstations:         melbelle
+               Munged dial:
+               Logon time:           0
+               Logoff time:          Mon, 18 Jan 2038 20:14:07 GMT
+               Kickoff time:         Mon, 18 Jan 2038 20:14:07 GMT
+               Password last set:    Sat, 14 Dec 2002 14:37:03 GMT
+               Password can change:  Sat, 14 Dec 2002 14:37:03 GMT
+               Password must change: Mon, 18 Jan 2038 20:14:07 GMT
+               </programlisting>
+               </para>
+
+       </sect2>
 </sect1>
 
 <sect1>
-<title>LDAP</title>
-
-<sect2>
-<title>Introduction</title>
-
-<para>
-This document describes how to use an LDAP directory for storing Samba user
-account information traditionally stored in the smbpasswd(5) file.  It is
-assumed that the reader already has a basic understanding of LDAP concepts
-and has a working directory server already installed.  For more information
-on LDAP architectures and Directories, please refer to the following sites.
-</para>
-
-<itemizedlist>
-       <listitem><para>OpenLDAP - <ulink url="http://www.openldap.org/">http://www.openldap.org/</ulink></para></listitem>
-       <listitem><para>iPlanet Directory Server - <ulink url="http://iplanet.netscape.com/directory">http://iplanet.netscape.com/directory</ulink></para></listitem>
-</itemizedlist>
+<title>Password Backends</title>
 
 <para>
-       <ulink url="http://www.ora.com/">O'Reilly Publishing</ulink> has published 
-       <ulink url="http://www.oreilly.com/catalog/ldapsa/">LDAP System Administration</ulink> 
-       written by Gerald Carter.
+Samba-3 offers the greatest flexibility in backend account database design of any SMB/CIFS server
+technology available today. The flexibility is immediately obvious as one begins to explore this
+capability.
 </para>
 
 <para>
-Two additional Samba resources which may prove to be helpful are
+It is possible to specify not only multiple different password backends, but even multiple
+backends of the same type. For example, to use two different tdbsam databases:
 </para>
 
-<itemizedlist>
-       <listitem><para>The <ulink url="http://www.unav.es/cti/ldap-smb/ldap-smb-3-howto.html">Samba-PDC-LDAP-HOWTO</ulink>
-       maintained by Ignacio Coupeau.</para></listitem>
-
-       <listitem><para>The NT migration scripts from <ulink url="http://samba.idealx.org/">IDEALX</ulink> that are
-       geared to manage users and group in such a Samba-LDAP Domain Controller configuration.
-       </para></listitem>
-</itemizedlist>
-
-</sect2>
-
-<sect2>
-<title>Encrypted Password Database</title>
-
 <para>
-Traditionally, when configuring <ulink url="smb.conf.5.html#ENCRYPTPASSWORDS">"encrypt
-passwords = yes"</ulink> in Samba's <filename>smb.conf</filename> file, user account
-information such as username, LM/NT password hashes, password change times, and account
-flags have been stored in the <filename>smbpasswd(5)</filename> file.  There are several
-disadvantages to this approach for sites with very large numbers of users (counted
-in the thousands).
+<programlisting>
+In smb.conf [globals]
+       passdb backend = tdbsam:/etc/samba/passdb.tdb, \
+               tdbsam:/etc/samba/old-passdb.tdb, guest
+</programlisting>
 </para>
 
-<itemizedlist>
-<listitem><para>
-The first is that all lookups must be performed sequentially.  Given that
-there are approximately two lookups per domain logon (one for a normal
-session connection such as when mapping a network drive or printer), this
-is a performance bottleneck for large sites.  What is needed is an indexed approach
-such as is used in databases.
-</para></listitem>
-
-<listitem><para>
-The second problem is that administrators who desired to replicate a
-smbpasswd file to more than one Samba server were left to use external
-tools such as <command>rsync(1)</command> and <command>ssh(1)</command>
-and wrote custom, in-house scripts.
-</para></listitem>
-
-<listitem><para>
-And finally, the amount of information which is stored in an
-smbpasswd entry leaves no room for additional attributes such as
-a home directory, password expiration time, or even a Relative
-Identified (RID).
-</para></listitem>
-</itemizedlist>
 
-<para>
-As a result of these defeciencies, a more robust means of storing user attributes
-used by smbd was developed.  The API which defines access to user accounts
-is commonly referred to as the samdb interface (previously this was called the passdb
-API, and is still so named in the CVS trees). 
-</para>
+       <sect2>
+       <title>Plain Text</title>
 
-<para>
-There are a few points to stress about that the ldapsam
-does not provide.  The LDAP support referred to in the this documentation does not
-include:
-</para>
+               <para>
+               Older versions of samba retrieved user information from the unix user database 
+               and eventually some other fields from the file <filename>/etc/samba/smbpasswd</filename>
+               or <filename>/etc/smbpasswd</filename>. When password encryption is disabled, no 
+               SMB specific data is stored at all. Instead all operations are conduected via the way
+               that the samba host OS will access it's <filename>/etc/passwd</filename> database.
+               eg: On Linux systems that is done via PAM.
+               </para>
 
-<itemizedlist>
-       <listitem><para>A means of retrieving user account information from
-       an Windows 2000 Active Directory server.</para></listitem>
-       <listitem><para>A means of replacing /etc/passwd.</para></listitem>
-</itemizedlist>
+       </sect2>
 
-<para>
-The second item can be accomplished by using LDAP NSS and PAM modules.  LGPL
-versions of these libraries can be obtained from PADL Software
-(<ulink url="http://www.padl.com/">http://www.padl.com/</ulink>). More
-information about the configuration of these packages may be found at "LDAP,
-System Administration; Gerald Carter, O'Reilly; Chapter 6: Replacing NIS".
-</para>
+       <sect2>
+       <title>smbpasswd - Encrypted Password Database</title>
+
+               <para>
+               Traditionally, when configuring <ulink url="smb.conf.5.html#ENCRYPTPASSWORDS">"encrypt
+               passwords = yes"</ulink> in Samba's <filename>smb.conf</filename> file, user account
+               information such as username, LM/NT password hashes, password change times, and account
+               flags have been stored in the <filename>smbpasswd(5)</filename> file.  There are several
+               disadvantages to this approach for sites with very large numbers of users (counted
+               in the thousands).
+               </para>
+
+               <itemizedlist>
+               <listitem><para>
+               The first is that all lookups must be performed sequentially.  Given that
+               there are approximately two lookups per domain logon (one for a normal
+               session connection such as when mapping a network drive or printer), this
+               is a performance bottleneck for large sites.  What is needed is an indexed approach
+               such as is used in databases.
+               </para></listitem>
+
+               <listitem><para>
+               The second problem is that administrators who desire to replicate a smbpasswd file
+               to more than one Samba server were left to use external tools such as
+               <command>rsync(1)</command> and <command>ssh(1)</command> and wrote custom,
+               in-house scripts.
+               </para></listitem>
+
+               <listitem><para>
+               And finally, the amount of information which is stored in an smbpasswd entry leaves
+               no room for additional attributes such as a home directory, password expiration time,
+               or even a Relative Identified (RID).
+               </para></listitem>
+               </itemizedlist>
+
+               <para>
+               As a result of these defeciencies, a more robust means of storing user attributes
+               used by smbd was developed.  The API which defines access to user accounts
+               is commonly referred to as the samdb interface (previously this was called the passdb
+               API, and is still so named in the Samba CVS trees). 
+               </para>
+
+               <para>
+               Samba-3 provides an enhanced set of passdb backends that overcome the deficiencies
+               of the smbpasswd plain text database. These are tdbsam, ldapsam, and xmlsam.
+               Of these ldapsam will be of most interest to large corporate or enterprise sites.
+               </para>
 
-</sect2>
+       </sect2>
 
-<sect2>
-<title>Supported LDAP Servers</title>
+       <sect2>
+       <title>tdbsam</title>
 
-<para>
-The LDAP samdb code in 2.2.3 (and later) has been developed and tested
-using the OpenLDAP 2.0 and 2.1 server and client libraries. 
-The same code should be able to work with Netscape's Directory Server
-and client SDK. However, due to lack of testing so far, there are bound
-to be compile errors and bugs.  These should not be hard to fix. Please submit 
-fixes via <link linkend="Bugs"/>.
-</para>
+               <para>Samba can store user and machine account data in a "TDB" (Trivial Database).
+               Using this backend doesn't require any additional configuration. This backend is
+               recommended for new installations that do not require LDAP.
+               </para>
 
-</sect2>
+               <para>
+               As a general guide the Samba-Team do NOT recommend using the tdbsam backend for sites
+               that have 250 or more users. Additionally, tdbsam is not capable of scaling for use
+               in sites that require PDB/BDC implmentations that requires replication of the account
+               database. Clearly, for reason of scalability the use of ldapsam should be encouraged.
+               </para>
 
-<sect2>
-<title>Schema and Relationship to the RFC 2307 posixAccount</title>
+       </sect2>
 
+       <sect2>
+       <title>ldapsam</title>
+
+               <para>
+               There are a few points to stress that the ldapsam does not provide. The LDAP
+               support referred to in the this documentation does not include:
+               </para>
+
+               <itemizedlist>
+                       <listitem><para>A means of retrieving user account information from
+                       an Windows 200x Active Directory server.</para></listitem>
+                       <listitem><para>A means of replacing /etc/passwd.</para></listitem>
+               </itemizedlist>
+
+               <para>
+               The second item can be accomplished by using LDAP NSS and PAM modules.  LGPL
+               versions of these libraries can be obtained from PADL Software
+               (<ulink url="http://www.padl.com/">http://www.padl.com/</ulink>). More
+               information about the configuration of these packages may be found at "LDAP,
+               System Administration; Gerald Carter, O'Reilly; Chapter 6: Replacing NIS".
+               Refer to <ulink url="http://safari.oreilly.com/?XmlId=1-56592-491-6">
+               http://safari.oreilly.com/?XmlId=1-56592-491-6</ulink> for those who might wish to know
+                more about configuration and adminstration of an OpenLDAP server.
+               </para>
+
+               <para>
+               This document describes how to use an LDAP directory for storing Samba user
+               account information traditionally stored in the smbpasswd(5) file.  It is
+               assumed that the reader already has a basic understanding of LDAP concepts
+               and has a working directory server already installed.  For more information
+               on LDAP architectures and Directories, please refer to the following sites.
+               </para>
+
+               <itemizedlist>
+                       <listitem><para>OpenLDAP - <ulink url="http://www.openldap.org/">http://www.openldap.org/</ulink></para></listitem>
+                       <listitem><para>iPlanet Directory Server -
+                        <ulink url="http://iplanet.netscape.com/directory">http://iplanet.netscape.com/directory</ulink></para></listitem>
+               </itemizedlist>
+
+               <para>
+               Two additional Samba resources which may prove to be helpful are
+               </para>
+
+               <itemizedlist>
+                       <listitem><para>The <ulink url="http://www.unav.es/cti/ldap-smb/ldap-smb-3-howto.html">Samba-PDC-LDAP-HOWTO</ulink>
+                       maintained by Ignacio Coupeau.</para></listitem>
+
+                       <listitem><para>The NT migration scripts from <ulink url="http://samba.idealx.org/">IDEALX</ulink> that are
+                       geared to manage users and group in such a Samba-LDAP Domain Controller configuration.
+                       </para></listitem>
+               </itemizedlist>
+
+               <sect3>
+               <title>Supported LDAP Servers</title>
+
+                       <para>
+                       The LDAP ldapsam code has been developed and tested using the OpenLDAP 2.0 and 2.1 server and
+                       client libraries.  The same code should work with Netscape's Directory Server and client SDK.
+                       However, there are bound to be compile errors and bugs. These should not be hard to fix.
+                       Please submit fixes via <link linkend="Bugs"/>.
+                       </para>
+
+               </sect3>
+
+               <sect3>
+               <title>Schema and Relationship to the RFC 2307 posixAccount</title>
+
+
+                       <para>
+                       Samba 3.0 includes the necessary schema file for OpenLDAP 2.0 in
+                       <filename>examples/LDAP/samba.schema</filename>.  The sambaAccount objectclass is given here:
+                       </para>
 
 <para>
-Samba 3.0 includes the necessary schema file for OpenLDAP 2.0 in
-<filename>examples/LDAP/samba.schema</filename>.  The sambaAccount objectclass is given here:
-</para>
-
-<para><programlisting>
+<programlisting>
 objectclass ( 1.3.6.1.4.1.7165.2.2.3 NAME 'sambaAccount' SUP top AUXILIARY
-        DESC 'Samba Auxilary Account'
-        MUST ( uid $ rid )
-        MAY  ( cn $ lmPassword $ ntPassword $ pwdLastSet $ logonTime $
-               logoffTime $ kickoffTime $ pwdCanChange $ pwdMustChange $ acctFlags $
-               displayName $ smbHome $ homeDrive $ scriptPath $ profilePath $
-               description $ userWorkstations $ primaryGroupID $ domain ))
-</programlisting></para>
-
-<para>
-The <filename>samba.schema</filename> file has been formatted for 
-OpenLDAP 2.0/2.1.  The OID's are
-owned by the Samba Team and as such is legal to be openly published.
-If you translate the schema to be used with Netscape DS, please
-submit the modified schema file as a patch to <ulink
-url="mailto:jerry@samba.org">jerry@samba.org</ulink>
-</para>
-
-<para>
-Just as the smbpasswd file is meant to store information which supplements a
-user's <filename>/etc/passwd</filename> entry, so is the sambaAccount object
-meant to supplement the UNIX user account information.  A sambaAccount is a
-<constant>STRUCTURAL</constant> objectclass so it can be stored individually
-in the directory.  However, there are several fields (e.g. uid) which overlap
-with the posixAccount objectclass outlined in RFC2307.  This is by design.
-</para>
-
-<!--olem: we should perhaps have a note about shadowAccounts too as many
-systems use them, isn'it ? -->
-
-<para>
-In order to store all user account information (UNIX and Samba) in the directory,
-it is necessary to use the sambaAccount and posixAccount objectclasses in
-combination.  However, smbd will still obtain the user's UNIX account
-information via the standard C library calls (e.g. getpwnam(), et. al.).
-This means that the Samba server must also have the LDAP NSS library installed
-and functioning correctly.  This division of information makes it possible to
-store all Samba account information in LDAP, but still maintain UNIX account
-information in NIS while the network is transitioning to a full LDAP infrastructure.
+    DESC 'Samba Auxilary Account'
+    MUST ( uid $ rid )
+    MAY  ( cn $ lmPassword $ ntPassword $ pwdLastSet $ logonTime $
+           logoffTime $ kickoffTime $ pwdCanChange $ pwdMustChange $ acctFlags $
+           displayName $ smbHome $ homeDrive $ scriptPath $ profilePath $
+           description $ userWorkstations $ primaryGroupID $ domain ))
+</programlisting>
 </para>
-</sect2>
-
-<sect2>
-<title>Configuring Samba with LDAP</title>
-
-
-<sect3>
-<title>OpenLDAP configuration</title>
 
-<para>
-To include support for the sambaAccount object in an OpenLDAP directory
-server, first copy the samba.schema file to slapd's configuration directory.
-The samba.schema file can be found in the directory <filename>examples/LDAP</filename>
-in the samba source distribution.
-</para>
+                       <para>
+                       The <filename>samba.schema</filename> file has been formatted for OpenLDAP 2.0/2.1.
+                       The OID's are owned by the Samba Team and as such is legal to be openly published.
+                       If you translate the schema to be used with Netscape DS, please
+                       submit the modified schema file as a patch to
+                       <ulink url="mailto:jerry@samba.org">jerry@samba.org</ulink>
+                       </para>
+
+                       <para>
+                       Just as the smbpasswd file is meant to store information which supplements a
+                       user's <filename>/etc/passwd</filename> entry, so is the sambaAccount object
+                       meant to supplement the UNIX user account information.  A sambaAccount is a
+                       <constant>STRUCTURAL</constant> objectclass so it can be stored individually
+                       in the directory.  However, there are several fields (e.g. uid) which overlap
+                       with the posixAccount objectclass outlined in RFC2307.  This is by design.
+                       </para>
+
+                       <!--olem: we should perhaps have a note about shadowAccounts too as many
+                       systems use them, isn'it ? -->
+
+                       <para>
+                       In order to store all user account information (UNIX and Samba) in the directory,
+                       it is necessary to use the sambaAccount and posixAccount objectclasses in
+                       combination.  However, smbd will still obtain the user's UNIX account
+                       information via the standard C library calls (e.g. getpwnam(), et. al.).
+                       This means that the Samba server must also have the LDAP NSS library installed
+                       and functioning correctly.  This division of information makes it possible to
+                       store all Samba account information in LDAP, but still maintain UNIX account
+                       information in NIS while the network is transitioning to a full LDAP infrastructure.
+                       </para>
+               </sect3>
+
+               <sect3>
+               <title>OpenLDAP configuration</title>
+
+                       <para>
+                       To include support for the sambaAccount object in an OpenLDAP directory
+                       server, first copy the samba.schema file to slapd's configuration directory.
+                       The samba.schema file can be found in the directory <filename>examples/LDAP</filename>
+                       in the samba source distribution.
+                       </para>
 
 <para>
+<programlisting>
 <prompt>root# </prompt><userinput>cp samba.schema /etc/openldap/schema/</userinput>
+</programlisting>
 </para>
 
-<para>
-Next, include the <filename>samba.schema</filename> file in <filename>slapd.conf</filename>.
-The sambaAccount object contains two attributes which depend upon other schema
-files.  The 'uid' attribute is defined in <filename>cosine.schema</filename> and
-the 'displayName' attribute is defined in the <filename>inetorgperson.schema</filename>
-file.  Both of these must be included before the <filename>samba.schema</filename> file.
-</para>
+                       <para>
+                       Next, include the <filename>samba.schema</filename> file in <filename>slapd.conf</filename>.
+                       The sambaAccount object contains two attributes which depend upon other schema
+                       files.  The 'uid' attribute is defined in <filename>cosine.schema</filename> and
+                       the 'displayName' attribute is defined in the <filename>inetorgperson.schema</filename>
+                       file.  Both of these must be included before the <filename>samba.schema</filename> file.
+                       </para>
 
-<para><programlisting>
+<para>
+<programlisting>
 ## /etc/openldap/slapd.conf
 
 ## schema files (core.schema is required by default)
@@ -451,573 +781,626 @@ include            /etc/openldap/schema/cosine.schema
 include            /etc/openldap/schema/inetorgperson.schema
 include            /etc/openldap/schema/samba.schema
 include            /etc/openldap/schema/nis.schema
-
 ....
-</programlisting></para>
+</programlisting>
+</para>
+
+               <para>
+               It is recommended that you maintain some indices on some of the most usefull attributes,
+               like in the following example, to speed up searches made on sambaAccount objectclasses
+               (and possibly posixAccount and posixGroup as well).
+               </para>
 
 <para>
-It is recommended that you maintain some indices on some of the most usefull attributes,
-like in the following example, to speed up searches made on sambaAccount objectclasses
-(and possibly posixAccount and posixGroup as well).
-</para>
-<para><programlisting>
+<programlisting>
 # Indices to maintain
-## required by OpenLDAP 2.0
-index objectclass   eq
+## required by OpenLDAP
+index objectclass             eq
 
-## support pdb_getsampwnam()
-index uid           pres,eq
-## support pdb_getsambapwrid()
-index rid           eq
+index cn                      pres,sub,eq
+index sn                      pres,sub,eq
+## required to support pdb_getsampwnam
+index uid                     pres,sub,eq
+## required to support pdb_getsambapwrid()
+index displayName             pres,sub,eq
 
 ## uncomment these if you are storing posixAccount and
 ## posixGroup entries in the directory as well
-##index uidNumber     eq
-##index gidNumber     eq
-##index cn            eq
-##index memberUid     eq
-
-# (both fetched via ldapsearch):
-index   primaryGroupID  eq
-index   displayName     pres,eq
-
-</programlisting></para>
-
-<para>Remember to restart slapd after making these changes:</para>
-
-<para><prompt>root# </prompt><userinput>/etc/init.d/slapd restart</userinput></para>
-
-</sect3>
-
+##index uidNumber               eq
+##index gidNumber               eq
+##index memberUid               eq
+
+index   rid                   eq
+index   sambaSID              eq
+index   sambaPrimaryGroupSID  eq
+index   sambaDomainName       eq
+index   default               sub
+</programlisting>
+</para>
 
-<sect3>
-<title>Configuring Samba</title>
+               <para>
+               Create the new index by executing:
+               </para>
 
 <para>
-The following parameters are available in smb.conf only if your version of samba was built 
-with LDAP support. Samba automatically builds with LDAP support if the LDAP libraries are 
-found.
+<programlisting>
+./sbin/slapindex -f slapd.conf
+</programlisting>
 </para>
 
-<itemizedlist>
-        <listitem><para><ulink url="smb.conf.5.html#PASSDBBACKEND">passdb backend = ldapsam:url</ulink></para></listitem>
-       <listitem><para><ulink url="smb.conf.5.html#LDAPSSL">ldap ssl</ulink></para></listitem>
-       <listitem><para><ulink url="smb.conf.5.html#LDAPADMINDN">ldap admin dn</ulink></para></listitem>
-       <listitem><para><ulink url="smb.conf.5.html#LDAPSUFFIX">ldap suffix</ulink></para></listitem>
-       <listitem><para><ulink url="smb.conf.5.html#LDAPFILTER">ldap filter</ulink></para></listitem>
-       <listitem><para><ulink url="smb.conf.5.html#LDAPMACHINSUFFIX">ldap machine suffix</ulink></para></listitem>
-       <listitem><para><ulink url="smb.conf.5.html#LDAPUSERSUFFIX">ldap user suffix</ulink></para></listitem>
-       <listitem><para><ulink url="smb.conf.5.html#LDAPDELETEDN">ldap delete dn</ulink></para></listitem>
-       <listitem><para><ulink url="smb.conf.5.html#LDAPPASSWDSYNC">ldap passwd sync</ulink></para></listitem>
-       <listitem><para><ulink url="smb.conf.5.html#LDAPTRUSTIDS">ldap trust ids</ulink></para></listitem>
-</itemizedlist>
+               <para>
+               Remember to restart slapd after making these changes:
+               </para>
 
 <para>
-These are described in the <ulink url="smb.conf.5.html">smb.conf(5)</ulink> man
-page and so will not be repeated here.  However, a sample smb.conf file for
-use with an LDAP directory could appear as
+<programlisting>
+root# </prompt><userinput>/etc/init.d/slapd restart</userinput>
+</programlisting>
 </para>
 
-<para><programlisting>
-## /usr/local/samba/lib/smb.conf
-[global]
-     security = user
-     encrypt passwords = yes
-
-     netbios name = TASHTEGO
-     workgroup = NARNIA
-
-     # ldap related parameters
+               </sect3>
+
+               <sect3>
+               <title>Configuring Samba</title>
+
+                       <para>
+                       The following parameters are available in smb.conf only with <parameter>--with-ldapsam</parameter>
+                       was included when compiling Samba. The following parameters are available in smb.conf only if your
+                       version of samba was built with LDAP support. Samba automatically builds with LDAP support if the
+                       LDAP libraries are found.
+                       </para>
+
+               <itemizedlist>
+                       <listitem><para><ulink url="smb.conf.5.html#PASSDBBACKEND">passdb backend ldapsam:url</ulink></para></listitem>
+                       <listitem><para><ulink url="smb.conf.5.html#LDAPSSL">ldap ssl</ulink></para></listitem>
+                       <listitem><para><ulink url="smb.conf.5.html#LDAPADMINDN">ldap admin dn</ulink></para></listitem>
+                       <listitem><para><ulink url="smb.conf.5.html#LDAPSUFFIX">ldap suffix</ulink></para></listitem>
+                       <listitem><para><ulink url="smb.conf.5.html#LDAPFILTER">ldap filter</ulink></para></listitem>
+                       <listitem><para><ulink url="smb.conf.5.html#LDAPMACHINSUFFIX">ldap machine suffix</ulink></para></listitem>
+                       <listitem><para><ulink url="smb.conf.5.html#LDAPUSERSUFFIX">ldap user suffix</ulink></para></listitem>
+                       <listitem><para><ulink url="smb.conf.5.html#LDAPDELETEDN">ldap delete dn</ulink></para></listitem>
+                       <listitem><para><ulink url="smb.conf.5.html#LDAPPASSWDSYNC">ldap passwd sync</ulink></para></listitem>
+                       <listitem><para><ulink url="smb.conf.5.html#LDAPTRUSTIDS">ldap trust ids</ulink></para></listitem>
+
+               </itemizedlist>
+
+                       <para>
+                       These are described in the <ulink url="smb.conf.5.html">smb.conf(5)</ulink> man
+                       page and so will not be repeated here.  However, a sample smb.conf file for
+                       use with an LDAP directory could appear as
+                       </para>
 
-     # define the DN to use when binding to the directory servers
-     # The password for this DN is not stored in smb.conf.  Rather it
-     # must be set by using 'smbpasswd -w <replaceable>secretpw</replaceable>' to store the
-     # passphrase in the secrets.tdb file.  If the "ldap admin dn" values
-     # change, this password will need to be reset.
-     ldap admin dn = "cn=Samba Manager,ou=people,dc=samba,dc=org"
-
-     # Define the SSL option when connecting to the directory
-     # ('off', 'start tls', or 'on' (default))
-     ldap ssl = start tls
-
-        # syntax: passdb backend = ldapsam:ldap://server-name[:port]
-     passdb backend = ldapsam:ldap://ahab.samba.org
-
-     # smbpasswd -x delete the entire dn-entry
-     ldap delete dn = no
-
-     # the machine and user suffix added to the base suffix
-     # wrote WITHOUT quotes. NULL siffixes by default
-     ldap user suffix = ou=People
-     ldap machine suffix = ou=Systems
-
-     # specify the base DN to use when searching the directory
-     ldap suffix = "ou=people,dc=samba,dc=org"
-
-        # Trust unix account information in LDAP (see the smb.conf manpage for details)
-        ldap trust ids = Yes
+       <para>
+       <programlisting>
+       ## /usr/local/samba/lib/smb.conf
+       [global]
+            security = user
+            encrypt passwords = yes
 
-     # generally the default ldap search filter is ok
-     # ldap filter = "(&amp;(uid=%u)(objectclass=sambaAccount))"
-</programlisting></para>
+            netbios name = TASHTEGO
+            workgroup = NARNIA
 
+            # ldap related parameters
 
-</sect3>
-</sect2>
+            # define the DN to use when binding to the directory servers
+            # The password for this DN is not stored in smb.conf.  Rather it
+            # must be set by using 'smbpasswd -w <replaceable>secretpw</replaceable>' to store the
+            # passphrase in the secrets.tdb file.  If the "ldap admin dn" values
+            # change, this password will need to be reset.
+            ldap admin dn = "cn=Samba Manager,ou=people,dc=samba,dc=org"
 
+            # Define the SSL option when connecting to the directory
+            # ('off', 'start tls', or 'on' (default))
+            ldap ssl = start tls
 
-<sect2>
-<title>Accounts and Groups management</title>
+            # syntax: passdb backend = ldapsam:ldap://server-name[:port]
+            passdb backend ldapsam:ldap://funball.samba.org
 
-<para>
-As users accounts are managed thru the sambaAccount objectclass, you should
-modify your existing administration tools to deal with sambaAccount attributes.
-</para>
+            # smbpasswd -x delete the entire dn-entry
+            ldap delete dn = no
 
-<para>
-Machines accounts are managed with the sambaAccount objectclass, just
-like users accounts. However, it's up to you to store thoses accounts
-in a different tree of you LDAP namespace: you should use
-"ou=Groups,dc=plainjoe,dc=org" to store groups and
-"ou=People,dc=plainjoe,dc=org" to store users. Just configure your
-NSS and PAM accordingly (usually, in the /etc/ldap.conf configuration
-file).
-</para>
+            # the machine and user suffix added to the base suffix
+            # wrote WITHOUT quotes. NULL siffixes by default
+            ldap user suffix = ou=People
+            ldap machine suffix = ou=Systems
 
-<para>
-In Samba release 3.0, the group management system is based on posix
-groups. This means that Samba makes usage of the posixGroup objectclass.
-For now, there is no NT-like group system management (global and local
-groups).
-</para>
+            # Trust unix account information in LDAP
+            #  (see the smb.conf manpage for details)
+            ldap trust ids = Yes
 
-</sect2>
+            # specify the base DN to use when searching the directory
+            ldap suffix = "ou=people,dc=samba,dc=org"
 
-<sect2>
-<title>Security and sambaAccount</title>
+            # generally the default ldap search filter is ok
+            # ldap filter = "(&amp;(uid=%u)(objectclass=sambaAccount))"
+       </programlisting>
+       </para>
 
+               </sect3>
+
+               <sect3>
+               <title>Accounts and Groups management</title>
+
+                       <para>
+                       As users accounts are managed thru the sambaAccount objectclass, you should
+                       modify your existing administration tools to deal with sambaAccount attributes.
+                       </para>
+
+                       <para>
+                       Machines accounts are managed with the sambaAccount objectclass, just
+                       like users accounts. However, it's up to you to store thoses accounts
+                       in a different tree of you LDAP namespace: you should use
+                       "ou=Groups,dc=plainjoe,dc=org" to store groups and
+                       "ou=People,dc=plainjoe,dc=org" to store users. Just configure your
+                       NSS and PAM accordingly (usually, in the /etc/ldap.conf configuration
+                       file).
+                       </para>
+
+                       <para>
+                       In Samba release 3.0, the group management system is based on posix
+                       groups. This means that Samba makes usage of the posixGroup objectclass.
+                       For now, there is no NT-like group system management (global and local
+                       groups).
+                       </para>
+
+               </sect3>
+
+               <sect3>
+               <title>Security and sambaAccount</title>
+
+
+                       <para>
+                       There are two important points to remember when discussing the security
+                       of sambaAccount entries in the directory.
+                       </para>
+
+                       <itemizedlist>
+                               <listitem><para><emphasis>Never</emphasis> retrieve the lmPassword or
+                               ntPassword attribute values over an unencrypted LDAP session.</para></listitem>
+                               <listitem><para><emphasis>Never</emphasis> allow non-admin users to
+                               view the lmPassword or ntPassword attribute values.</para></listitem>
+                       </itemizedlist>
+
+                       <para>
+                       These password hashes are clear text equivalents and can be used to impersonate
+                       the user without deriving the original clear text strings.  For more information
+                       on the details of LM/NT password hashes, refer to the
+                       <link linkend="passdb">Account Information Database</link> section of this chapter.
+                       </para>
+
+                       <para>
+                       To remedy the first security issue, the "ldap ssl" smb.conf parameter defaults
+                       to require an encrypted session (<command>ldap ssl = on</command>) using
+                       the default port of 636
+                       when contacting the directory server.  When using an OpenLDAP server, it
+                       is possible to use the use the StartTLS LDAP extended  operation in the place of
+                       LDAPS.  In either case, you are strongly discouraged to disable this security
+                       (<command>ldap ssl = off</command>).
+                       </para>
+
+                       <para>
+                       Note that the LDAPS protocol is deprecated in favor of the LDAPv3 StartTLS
+                       extended operation.  However, the OpenLDAP library still provides support for
+                       the older method of securing communication between clients and servers.
+                       </para>
+
+                       <para>
+                       The second security precaution is to prevent non-administrative users from
+                       harvesting password hashes from the directory.  This can be done using the
+                       following ACL in <filename>slapd.conf</filename>:
+                       </para>
 
-<para>
-There are two important points to remember when discussing the security
-of sambaAccount entries in the directory.
-</para>
+       <para>
+       <programlisting>
+       ## allow the "ldap admin dn" access, but deny everyone else
+       access to attrs=lmPassword,ntPassword
+            by dn="cn=Samba Admin,ou=people,dc=plainjoe,dc=org" write
+            by * none
+       </programlisting>
+       </para>
 
-<itemizedlist>
-       <listitem><para><emphasis>Never</emphasis> retrieve the lmPassword or
-       ntPassword attribute values over an unencrypted LDAP session.</para></listitem>
-       <listitem><para><emphasis>Never</emphasis> allow non-admin users to
-       view the lmPassword or ntPassword attribute values.</para></listitem>
-</itemizedlist>
+               </sect3>
 
-<para>
-These password hashes are clear text equivalents and can be used to impersonate
-the user without deriving the original clear text strings.  For more information
-on the details of LM/NT password hashes, refer to the first sections of this chapter.
-</para>
+               <sect3>
+               <title>LDAP special attributes for sambaAccounts</title>
 
-<para>
-To remedy the first security issue, the "ldap ssl" smb.conf parameter defaults
-to require an encrypted session (<command>ldap ssl = on</command>) using
-the default port of 636
-when contacting the directory server.  When using an OpenLDAP server, it
-is possible to use the use the StartTLS LDAP extended  operation in the place of
-LDAPS.  In either case, you are strongly discouraged to disable this security
-(<command>ldap ssl = off</command>).
-</para>
+                       <para>
+                       The sambaAccount objectclass is composed of the following attributes:
+                       </para>
 
-<para>
-Note that the LDAPS protocol is deprecated in favor of the LDAPv3 StartTLS
-extended operation.  However, the OpenLDAP library still provides support for
-the older method of securing communication between clients and servers.
-</para>
+                       <itemizedlist>
+                               <listitem><para><constant>lmPassword</constant>: the LANMAN password 16-byte hash stored as a character
+                               representation of a hexidecimal string.</para></listitem>
 
-<para>
-The second security precaution is to prevent non-administrative users from
-harvesting password hashes from the directory.  This can be done using the
-following ACL in <filename>slapd.conf</filename>:
-</para>
+                               <listitem><para><constant>ntPassword</constant>: the NT password hash 16-byte stored as a character
+                               representation of a hexidecimal string.</para></listitem>
 
-<para><programlisting>
-## allow the "ldap admin dn" access, but deny everyone else
-access to attrs=lmPassword,ntPassword
-     by dn="cn=Samba Admin,ou=people,dc=plainjoe,dc=org" write
-     by * none
-</programlisting></para>
+                               <listitem><para><constant>pwdLastSet</constant>: The integer time in seconds since 1970 when the
+                               <constant>lmPassword</constant> and <constant>ntPassword</constant> attributes were last set.
+                               </para></listitem>
 
+                               <listitem><para><constant>acctFlags</constant>: string of 11 characters surrounded by square brackets []
+                                               representing account flags such as U (user), W(workstation), X(no password expiration),
+                                               I(Domain trust account), H(Home dir required), S(Server trust account),
+                                               and D(disabled).</para></listitem>
 
-</sect2>
+                               <listitem><para><constant>logonTime</constant>: Integer value currently unused</para></listitem>
 
+                               <listitem><para><constant>logoffTime</constant>: Integer value currently unused</para></listitem>
 
+                               <listitem><para><constant>kickoffTime</constant>: Integer value currently unused</para></listitem>
 
-<sect2>
-<title>LDAP specials attributes for sambaAccounts</title>
+                               <listitem><para><constant>pwdCanChange</constant>: Integer value currently unused</para></listitem>
 
-<para>
-The sambaAccount objectclass is composed of the following attributes:
-</para>
+                               <listitem><para><constant>pwdMustChange</constant>: Integer value currently unused</para></listitem>
 
-<itemizedlist>
+                               <listitem><para><constant>homeDrive</constant>: specifies the drive letter to which to map the
+                               UNC path specified by homeDirectory. The drive letter must be specified in the form "X:"
+                               where X is the letter of the drive to map. Refer to the "logon drive" parameter in the
+                               smb.conf(5) man page for more information.</para></listitem>
 
-       <listitem><para><constant>lmPassword</constant>: the LANMAN password 16-byte hash stored as a character
-       representation of a hexidecimal string.</para></listitem>
+                               <listitem><para><constant>scriptPath</constant>: The scriptPath property specifies the path of
+                               the user's logon script, .CMD, .EXE, or .BAT file. The string can be null. The path
+                               is relative to the netlogon share.  Refer to the "logon script" parameter in the
+                               smb.conf(5) man page for more information.</para></listitem>
 
-       <listitem><para><constant>ntPassword</constant>: the NT password hash 16-byte stored as a character
-       representation of a hexidecimal string.</para></listitem>
+                               <listitem><para><constant>profilePath</constant>: specifies a path to the user's profile.
+                               This value can be a null string, a local absolute path, or a UNC path.  Refer to the
+                               "logon path" parameter in the smb.conf(5) man page for more information.</para></listitem>
 
-       <listitem><para><constant>pwdLastSet</constant>: The integer time in seconds since 1970 when the
-       <constant>lmPassword</constant> and <constant>ntPassword</constant> attributes were last set.
-       </para></listitem>
+                               <listitem><para><constant>smbHome</constant>: The homeDirectory property specifies the path of
+                               the home directory for the user. The string can be null. If homeDrive is set and specifies
+                               a drive letter, homeDirectory should be a UNC path. The path must be a network
+                               UNC path of the form \\server\share\directory. This value can be a null string.
+                               Refer to the "logon home" parameter in the smb.conf(5) man page for more information.
+                               </para></listitem>
 
-       <listitem><para><constant>acctFlags</constant>: string of 11 characters surrounded by square brackets []
-       representing account flags such as U (user), W(workstation), X(no password expiration), and
-       D(disabled).</para></listitem>
+                               <listitem><para><constant>userWorkstation</constant>: character string value currently unused.
+                               </para></listitem>
 
-       <listitem><para><constant>logonTime</constant>: Integer value currently unused</para></listitem>
+                               <listitem><para><constant>rid</constant>: the integer representation of the user's relative identifier
+                               (RID).</para></listitem>
 
-       <listitem><para><constant>logoffTime</constant>: Integer value currently unused</para></listitem>
+                               <listitem><para><constant>primaryGroupID</constant>: the relative identifier (RID) of the primary group
+                               of the user.</para></listitem>
 
-       <listitem><para><constant>kickoffTime</constant>: Integer value currently unused</para></listitem>
+                               <listitem><para><constant>domain</constant>: domain the user is part of.</para></listitem>
+                       </itemizedlist>
 
-       <listitem><para><constant>pwdCanChange</constant>: Integer value currently unused</para></listitem>
+                       <para>
+                       The majority of these parameters are only used when Samba is acting as a PDC of
+                       a domain (refer to the <ulink url="Samba-PDC-HOWTO.html">Samba-PDC-HOWTO</ulink> for details on
+                       how to configure Samba as a Primary Domain Controller). The following four attributes
+                       are only stored with the sambaAccount entry if the values are non-default values:
+                       </para>
 
-       <listitem><para><constant>pwdMustChange</constant>: Integer value currently unused</para></listitem>
+                       <itemizedlist>
+                               <listitem><para>smbHome</para></listitem>
+                               <listitem><para>scriptPath</para></listitem>
+                               <listitem><para>logonPath</para></listitem>
+                               <listitem><para>homeDrive</para></listitem>
+                       </itemizedlist>
 
-       <listitem><para><constant>homeDrive</constant>: specifies the drive letter to which to map the
-       UNC path specified by homeDirectory. The drive letter must be specified in the form "X:"
-       where X is the letter of the drive to map. Refer to the "logon drive" parameter in the
-       smb.conf(5) man page for more information.</para></listitem>
+                       <para>
+                       These attributes are only stored with the sambaAccount entry if
+                       the values are non-default values.  For example, assume TASHTEGO has now been
+                       configured as a PDC and that <command>logon home = \\%L\%u</command> was defined in
+                       its <filename>smb.conf</filename> file. When a user named "becky" logons to the domain,
+                       the <parameter>logon home</parameter> string is expanded to \\TASHTEGO\becky.
+                       If the smbHome attribute exists in the entry "uid=becky,ou=people,dc=samba,dc=org",
+                       this value is used.  However, if this attribute does not exist, then the value
+                       of the <parameter>logon home</parameter> parameter is used in its place.  Samba
+                       will only write the attribute value to the directory entry if the value is
+                       something other than the default (e.g. \\MOBY\becky).
+                       </para>
 
-       <listitem><para><constant>scriptPath</constant>: The scriptPath property specifies the path of
-       the user's logon script, .CMD, .EXE, or .BAT file. The string can be null. The path
-       is relative to the netlogon share.  Refer to the "logon script" parameter in the
-       smb.conf(5) man page for more information.</para></listitem>
+               </sect3>
 
-       <listitem><para><constant>profilePath</constant>: specifies a path to the user's profile.
-       This value can be a null string, a local absolute path, or a UNC path.  Refer to the
-       "logon path" parameter in the smb.conf(5) man page for more information.</para></listitem>
+               <sect3>
+               <title>Example LDIF Entries for a sambaAccount</title>
 
-       <listitem><para><constant>smbHome</constant>: The homeDirectory property specifies the path of
-       the home directory for the user. The string can be null. If homeDrive is set and specifies
-       a drive letter, homeDirectory should be a UNC path. The path must be a network
-       UNC path of the form \\server\share\directory. This value can be a null string.
-       Refer to the "logon home" parameter in the smb.conf(5) man page for more information.
-       </para></listitem>
+                       <para>
+                       The following is a working LDIF with the inclusion of the posixAccount objectclass:
+                       </para>
 
-       <listitem><para><constant>userWorkstation</constant>: character string value currently unused.
-       </para></listitem>
+       <para>
+       <programlisting>
+       dn: uid=guest2, ou=people,dc=plainjoe,dc=org
+       ntPassword: 878D8014606CDA29677A44EFA1353FC7
+       pwdMustChange: 2147483647
+       primaryGroupID: 1201
+       lmPassword: 552902031BEDE9EFAAD3B435B51404EE
+       pwdLastSet: 1010179124
+       logonTime: 0
+       objectClass: sambaAccount
+       uid: guest2
+       kickoffTime: 2147483647
+       acctFlags: [UX         ]
+       logoffTime: 2147483647
+       rid: 19006
+       pwdCanChange: 0
+       </programlisting>
+       </para>
 
-       <listitem><para><constant>rid</constant>: the integer representation of the user's relative identifier
-       (RID).</para></listitem>
+                       <para>
+                       The following is an LDIF entry for using both the sambaAccount and
+                       posixAccount objectclasses:
+                       </para>
 
-       <listitem><para><constant>primaryGroupID</constant>: the relative identifier (RID) of the primary group
-       of the user.</para></listitem>
+       <para>
+       <programlisting>
+       dn: uid=gcarter, ou=people,dc=plainjoe,dc=org
+       logonTime: 0
+       displayName: Gerald Carter
+       lmPassword: 552902031BEDE9EFAAD3B435B51404EE
+       primaryGroupID: 1201
+       objectClass: posixAccount
+       objectClass: sambaAccount
+       acctFlags: [UX         ]
+       userPassword: {crypt}BpM2ej8Rkzogo
+       uid: gcarter
+       uidNumber: 9000
+       cn: Gerald Carter
+       loginShell: /bin/bash
+       logoffTime: 2147483647
+       gidNumber: 100
+       kickoffTime: 2147483647
+       pwdLastSet: 1010179230
+       rid: 19000
+       homeDirectory: /home/tashtego/gcarter
+       pwdCanChange: 0
+       pwdMustChange: 2147483647
+       ntPassword: 878D8014606CDA29677A44EFA1353FC7
+       </programlisting>
+       </para>
 
-       <listitem><para><constant>domain</constant>: domain the user is part of.</para></listitem>
+               </sect3>
 
-</itemizedlist>
+               <sect3>
+               <title>Password synchronisation</title>
 
-<para>
-The majority of these parameters are only used when Samba is acting as a PDC of
-a domain (refer to <link linkend="samba-pdc"/> for details on
-how to configure Samba as a Primary Domain Controller). The following four attributes
-are only stored with the sambaAccount entry if the values are non-default values:
-</para>
+               <para>
+               Since 3.0 Samba can update the non-samba (LDAP) password stored with an account. When
+               using pam_ldap, this allows changing both unix and windows passwords at once.
+               </para>
 
-<itemizedlist>
-       <listitem><para>smbHome</para></listitem>
-       <listitem><para>scriptPath</para></listitem>
-       <listitem><para>logonPath</para></listitem>
-       <listitem><para>homeDrive</para></listitem>
-</itemizedlist>
+               <para>The <command>ldap passwd sync</command> options can have the following values:</para>
 
-<para>
-These attributes are only stored with the sambaAccount entry if
-the values are non-default values.  For example, assume TASHTEGO has now been
-configured as a PDC and that <command>logon home = \\%L\%u</command> was defined in
-its <filename>smb.conf</filename> file. When a user named "becky" logons to the domain,
-the <parameter>logon home</parameter> string is expanded to \\TASHTEGO\becky.
-If the smbHome attribute exists in the entry "uid=becky,ou=people,dc=samba,dc=org",
-this value is used.  However, if this attribute does not exist, then the value
-of the <parameter>logon home</parameter> parameter is used in its place.  Samba
-will only write the attribute value to the directory entry if the value is
-something other than the default (e.g. \\MOBY\becky).
-</para>
+               <variablelist>
+                      <varlistentry>
+                              <term>yes</term>
+                              <listitem><para>When the user changes his password, update
+                                              <constant>ntPassword</constant>, <constant>lmPassword</constant>
+                                              and the <constant>password</constant> fields.</para></listitem>
+                      </varlistentry>
 
+                      <varlistentry>
+                              <term>no</term>
+                              <listitem><para>Only update <constant>ntPassword</constant> and <constant>lmPassword</constant>.</para></listitem>
+                      </varlistentry>
 
-</sect2>
+                      <varlistentry>
+                              <term>only</term>
+                              <listitem><para>Only update the LDAP password and let the LDAP server worry
+                                              about the other fields. This option is only available when
+                                              the LDAP library supports LDAP_EXOP_X_MODIFY_PASSWD. </para></listitem>
+                      </varlistentry>
+               </variablelist>
 
+               <para>More information can be found in the <ulink url="smb.conf.5.html#LDAPPASSWDSYNC">smb.conf</ulink> manpage.
+               </para>
 
+               </sect3>
 
-<sect2>
-<title>Example LDIF Entries for a sambaAccount</title>
+               <sect3>
+               <title>ldap trust ids</title>
 
+               <para>
+               LDAP Performance can be approved by using the <command>ldap trust ids</command> parameter.
+               See the <ulink url="smb.conf.5.html#LDAPTRUSTIDS">smb.conf</ulink> manpage for details.
+               </para>
 
-<para>
-The following is a working LDIF with the inclusion of the posixAccount objectclass:
-</para>
+               </sect3>
 
-<para><programlisting>
-dn: uid=guest2, ou=people,dc=plainjoe,dc=org
-ntPassword: 878D8014606CDA29677A44EFA1353FC7
-pwdMustChange: 2147483647
-primaryGroupID: 1201
-lmPassword: 552902031BEDE9EFAAD3B435B51404EE
-pwdLastSet: 1010179124
-logonTime: 0
-objectClass: sambaAccount
-uid: guest2
-kickoffTime: 2147483647
-acctFlags: [UX         ]
-logoffTime: 2147483647
-rid: 19006
-pwdCanChange: 0
-</programlisting></para>
+       </sect2>
 
-<para>
-The following is an LDIF entry for using both the sambaAccount and
-posixAccount objectclasses:
-</para>
+       <sect2>
+       <title>MySQL</title>
 
-<para><programlisting>
-dn: uid=gcarter, ou=people,dc=plainjoe,dc=org
-logonTime: 0
-displayName: Gerald Carter
-lmPassword: 552902031BEDE9EFAAD3B435B51404EE
-primaryGroupID: 1201
-objectClass: posixAccount
-objectClass: sambaAccount
-acctFlags: [UX         ]
-userPassword: {crypt}BpM2ej8Rkzogo
-uid: gcarter
-uidNumber: 9000
-cn: Gerald Carter
-loginShell: /bin/bash
-logoffTime: 2147483647
-gidNumber: 100
-kickoffTime: 2147483647
-pwdLastSet: 1010179230
-rid: 19000
-homeDirectory: /home/tashtego/gcarter
-pwdCanChange: 0
-pwdMustChange: 2147483647
-ntPassword: 878D8014606CDA29677A44EFA1353FC7
-</programlisting></para>
-
-</sect2>
-
-<sect2>
-<title>Password synchronisation</title>
+       <para>
+       Stuff goes here!
+       </para>
 
-<para>
-Since 3.0 Samba can update the non-samba (LDAP) password stored with an account. When
-using pam_ldap, this allows changing both unix and windows passwords at once.
-</para>
+               <sect3>
+               <title>Creating the database</title>
 
-<para>The <command>ldap passwd sync</command> options can have the following values:</para>
+                       <para>
+                       You either can set up your own table and specify the field names to pdb_mysql (see below
+                       for the column names) or use the default table. The file <filename>examples/pdb/mysql/mysql.dump</filename> 
+                       contains the correct queries to create the required tables. Use the command :
 
-<variablelist>
-       <varlistentry>
-               <term>yes</term>
-               <listitem><para>When the user changes his password, update
-                               <constant>ntPassword</constant>, <constant>lmPassword</constant>
-                               and the <constant>password</constant> fields.</para></listitem>
-       </varlistentry>
+                       <command>mysql -u<replaceable>username</replaceable> -h<replaceable>hostname</replaceable> -p<replaceable>password</replaceable> <replaceable>databasename</replaceable> &gt; <filename>/path/to/samba/examples/pdb/mysql/mysql.dump</filename></command>
+                       </para>
+               </sect3>
 
-       <varlistentry>
-               <term>no</term>
-               <listitem><para>Only update <constant>ntPassword</constant> and <constant>lmPassword</constant>.</para></listitem>
-       </varlistentry>
+               <sect3>
+               <title>Configuring</title>
 
-       <varlistentry>
-               <term>only</term>
-               <listitem><para>Only update the LDAP password and let the LDAP server worry 
-                               about the other fields. This option is only available when 
-                               the LDAP library supports LDAP_EXOP_X_MODIFY_PASSWD. </para></listitem>
-       </varlistentry>
-</variablelist>
+                       <para>This plugin lacks some good documentation, but here is some short info:</para>
 
-<para>More information can be found in the <ulink url="smb.conf.5.html#LDAPPASSWDSYNC">smb.conf</ulink> manpage.
-</para>
+                       <para>Add a the following to the <command>passdb backend</command> variable in your <filename>smb.conf</filename>:
+                       <programlisting>
+                       passdb backend = [other-plugins] mysql:identifier [other-plugins]
+                       </programlisting>
+                       </para>
 
-</sect2>
+                       <para>The identifier can be any string you like, as long as it doesn't collide with 
+                       the identifiers of other plugins or other instances of pdb_mysql. If you 
+                       specify multiple pdb_mysql.so entries in 'passdb backend', you also need to 
+                       use different identifiers!
+                       </para>
 
-<sect2>
-<title>ldap trust ids</title>
+                       <para>
+                       Additional options can be given thru the smb.conf file in the [global] section.
+                       </para>
 
-<para>
-LDAP Performance can be approved by using the <command>ldap trust ids</command> parameter. 
-See the <ulink url="smb.conf.5.html#LDAPTRUSTIDS">smb.conf</ulink> manpage for details.
-</para>
+       <para>
+       <programlisting>
+       identifier:mysql host                     - host name, defaults to 'localhost'
+       identifier:mysql password
+       identifier:mysql user                     - defaults to 'samba'
+       identifier:mysql database                 - defaults to 'samba'
+       identifier:mysql port                     - defaults to 3306
+       identifier:table                          - Name of the table containing users
+       </programlisting>
+       </para>
 
-</sect2>
+                       <warning>
+                       <para>
+                       Since the password for the mysql user is stored in the 
+                       smb.conf file, you should make the the smb.conf file 
+                       readable only to the user that runs samba. This is considered a security 
+                       bug and will be fixed soon.
+                       </para>
+                       </warning>
 
-</sect1>
+                       <para>Names of the columns in this table(I've added column types those columns should have first):</para>
 
-<sect1>
-<title>MySQL</title>
+       <para>
+       <programlisting>
+       identifier:logon time column             - int(9)
+       identifier:logoff time column            - int(9)
+       identifier:kickoff time column           - int(9)
+       identifier:pass last set time column     - int(9)
+       identifier:pass can change time column   - int(9)
+       identifier:pass must change time column  - int(9)
+       identifier:username column               - varchar(255) - unix username
+       identifier:domain column                 - varchar(255) - NT domain user is part of
+       identifier:nt username column            - varchar(255) - NT username
+       identifier:fullname column               - varchar(255) - Full name of user
+       identifier:home dir column               - varchar(255) - Unix homedir path
+       identifier:dir drive column              - varchar(2)   - Directory drive path (eg: 'H:')
+       identifier:logon script column           - varchar(255)
+                                                - Batch file to run on client side when logging on
+       identifier:profile path column           - varchar(255) - Path of profile
+       identifier:acct desc column              - varchar(255) - Some ASCII NT user data
+       identifier:workstations column           - varchar(255)
+                                                - Workstations user can logon to (or NULL for all)
+       identifier:unknown string column         - varchar(255) - unknown string
+       identifier:munged dial column            - varchar(255) - ?
+       identifier:user sid column               - varchar(255) - NT user SID
+       identifier:group sid column              - varchar(255) - NT group ID
+       identifier:lanman pass column            - varchar(255) - encrypted lanman password
+       identifier:nt pass column                - varchar(255) - encrypted nt passwd
+       identifier:plain pass column             - varchar(255) - plaintext password
+       identifier:acct control column           - int(9) - nt user data
+       identifier:unknown 3 column              - int(9) - unknown
+       identifier:logon divs column             - int(9) - ?
+       identifier:hours len column              - int(9) - ?
+       identifier:unknown 5 column              - int(9) - unknown
+       identifier:unknown 6 column              - int(9) - unknown
+       </programlisting>
+       </para>
 
-<sect2>
-<title>Creating the database</title>
+                       <para>
+                       Eventually, you can put a colon (:) after the name of each column, which 
+                       should specify the column to update when updating the table. You can also
+                       specify nothing behind the colon - then the data from the field will not be 
+                       updated. 
+                       </para>
 
-<para>
-You either can set up your own table and specify the field names to pdb_mysql (see below
-for the column names) or use the default table. The file <filename>examples/pdb/mysql/mysql.dump</filename> 
-contains the correct queries to create the required tables. Use the command :
+               </sect3>
 
-<command>mysql -u<replaceable>username</replaceable> -h<replaceable>hostname</replaceable> -p<replaceable>password</replaceable> <replaceable>databasename</replaceable> &gt; <filename>/path/to/samba/examples/pdb/mysql/mysql.dump</filename></command>
+               <sect3>
+               <title>Using plaintext passwords or encrypted password</title>
 
-</para>
-</sect2>
+                       <para>
+                       I strongly discourage the use of plaintext passwords, however, you can use them:
+                       </para>
 
-<sect2>
-<title>Configuring</title>
+                       <para>
+                       If you would like to use plaintext passwords, set
+                       'identifier:lanman pass column' and 'identifier:nt pass column' to
+                       'NULL' (without the quotes) and 'identifier:plain pass column' to the
+                       name of the column containing the plaintext passwords. 
+                       </para>
 
-<para>This plugin lacks some good documentation, but here is some short info:</para>
+                       <para>
+                       If you use encrypted passwords, set the 'identifier:plain pass
+                       column' to 'NULL' (without the quotes). This is the default.
+                       </para>
 
-<para>Add a the following to the <command>passdb backend</command> variable in your <filename>smb.conf</filename>:
-<programlisting>
-passdb backend = [other-plugins] mysql:identifier [other-plugins]
-</programlisting>
-</para>
+               </sect3>
 
-<para>The identifier can be any string you like, as long as it doesn't collide with 
-the identifiers of other plugins or other instances of pdb_mysql. If you 
-specify multiple pdb_mysql.so entries in 'passdb backend', you also need to 
-use different identifiers!
-</para>
+               <sect3>
+               <title>Getting non-column data from the table</title>
 
-<para>
-Additional options can be given thru the smb.conf file in the [global] section.
-</para>
+                       <para>
+                       It is possible to have not all data in the database and making some 'constant'.
+                       </para>
 
-<para><programlisting>
-identifier:mysql host                     - host name, defaults to 'localhost'
-identifier:mysql password
-identifier:mysql user                     - defaults to 'samba'
-identifier:mysql database                 - defaults to 'samba'
-identifier:mysql port                     - defaults to 3306
-identifier:table                          - Name of the table containing users
-</programlisting></para>
+                       <para>
+                       For example, you can set 'identifier:fullname column' to : 
+                       <command>CONCAT(First_name,' ',Sur_name)</command>
+                       </para>
 
-<warning>
-<para>
-Since the password for the mysql user is stored in the 
-smb.conf file, you should make the the smb.conf file 
-readable only to the user that runs samba. This is considered a security 
-bug and will be fixed soon.
-</para>
-</warning>
-
-<para>Names of the columns in this table(I've added column types those columns should have first):</para>
-
-<para><programlisting>
-identifier:logon time column             - int(9)
-identifier:logoff time column            - int(9)
-identifier:kickoff time column           - int(9)
-identifier:pass last set time column     - int(9)
-identifier:pass can change time column   - int(9)
-identifier:pass must change time column  - int(9)
-identifier:username column               - varchar(255) - unix username
-identifier:domain column                 - varchar(255) - NT domain user is part of
-identifier:nt username column            - varchar(255) - NT username
-identifier:fullname column               - varchar(255) - Full name of user
-identifier:home dir column               - varchar(255) - Unix homedir path
-identifier:dir drive column              - varchar(2)   - Directory drive path (eg: 'H:')
-identifier:logon script column           - varchar(255)
-                                        - Batch file to run on client side when logging on
-identifier:profile path column           - varchar(255) - Path of profile
-identifier:acct desc column              - varchar(255) - Some ASCII NT user data
-identifier:workstations column           - varchar(255)
-                                        - Workstations user can logon to (or NULL for all)
-identifier:unknown string column         - varchar(255) - unknown string
-identifier:munged dial column            - varchar(255) - ?
-identifier:user sid column               - varchar(255) - NT user SID
-identifier:group sid column              - varchar(255) - NT group ID
-identifier:lanman pass column            - varchar(255) - encrypted lanman password
-identifier:nt pass column                - varchar(255) - encrypted nt passwd
-identifier:plain pass column             - varchar(255) - plaintext password
-identifier:acct control column           - int(9) - nt user data
-identifier:unknown 3 column              - int(9) - unknown
-identifier:logon divs column             - int(9) - ?
-identifier:hours len column              - int(9) - ?
-identifier:unknown 5 column              - int(9) - unknown
-identifier:unknown 6 column              - int(9) - unknown
-</programlisting></para>
+                       <para>
+                       Or, set 'identifier:workstations column' to :
+                       <command>NULL</command></para>
 
-<para>
-Eventually, you can put a colon (:) after the name of each column, which 
-should specify the column to update when updating the table. You can also
-specify nothing behind the colon - then the data from the field will not be 
-updated. 
-</para>
+                       <para>See the MySQL documentation for more language constructs.</para>
 
-</sect2>
+               </sect3>
+       </sect2>
 
-<sect2>
-<title>Using plaintext passwords or encrypted password</title>
+       <sect2 id="XMLpassdb">
+       <title>XML</title>
 
-<para>
-I strongly discourage the use of plaintext passwords, however, you can use them:
-</para>
+               <para>This module requires libxml2 to be installed.</para>
 
-<para>
-If you would like to use plaintext passwords, set
-'identifier:lanman pass column' and 'identifier:nt pass column' to
-'NULL' (without the quotes) and 'identifier:plain pass column' to the
-name of the column containing the plaintext passwords. 
-</para>
+               <para>The usage of pdb_xml is pretty straightforward. To export data, use:
+               </para>
 
-<para>
-If you use encrypted passwords, set the 'identifier:plain pass
-column' to 'NULL' (without the quotes). This is the default.
-</para>
+               <para>
+                       <userinput>pdbedit -e xml:filename</userinput>
+               </para>
 
-</sect2>
+               <para>
+               (where filename is the name of the file to put the data in)
+               </para>
 
-<sect2>
-<title>Getting non-column data from the table</title>
+               <para>
+               To import data, use:
+               <userinput>pdbedit -i xml:filename -e current-pdb</userinput>
+               </para>
 
-<para>
-It is possible to have not all data in the database and making some 'constant'.
-</para>
+               <para>
+               Where filename is the name to read the data from and current-pdb to put it in.
+               </para>
 
-<para>
-For example, you can set 'identifier:fullname column' to : 
-<command>CONCAT(First_name,' ',Sur_name)</command>
-</para>
+               <para>
+               For example: To migrate (copy) the smbpasswd database into a tdbsam database:
+               </para>
 
-<para>
-Or, set 'identifier:workstations column' to :
-<command>NULL</command></para>
+               <para>
+               <programlisting>
+               In your smb.conf file [globals]:
+                       passdb backend = tdbsam, smbpasswd, guest
 
-<para>See the MySQL documentation for more language constructs.</para>
 
-</sect2>
+               then execute (as root):
+                       pdbedit -i smbpasswd -e tdbsam
+               </programlisting>
+               </para>
+       </sect2>
 </sect1>
 
 <sect1>
-<title>XML</title>
-
-<para>This module requires libxml2 to be installed.</para>
-
-<para>The usage of pdb_xml is pretty straightforward. To export data, use:
-</para>
+<title>Common Errors</title>
 
 <para>
-       <userinput>pdbedit -e xml:filename</userinput>
+Put stuff here
 </para>
 
-<para>
-(where filename is the name of the file to put the data in)
-</para>
-
-<para>
-To import data, use:
-<userinput>pdbedit -i xml:filename -e current-pdb</userinput>
-</para>
-<para>
-Where filename is the name to read the data from and current-pdb to put it in.
-</para>
 </sect1>
-
 </chapter>