| 1 | <?xml version="1.0" encoding="iso-8859-1"?>
 | 
|---|
| 2 | <!DOCTYPE chapter PUBLIC "-//Samba-Team//DTD DocBook V4.2-Based Variant V1.0//EN" "http://www.samba.org/samba/DTD/samba-doc">
 | 
|---|
| 3 | <chapter id="samba-bdc">
 | 
|---|
| 4 | 
 | 
|---|
| 5 | <chapterinfo>
 | 
|---|
| 6 |         &author.jht;
 | 
|---|
| 7 |         &author.vl;
 | 
|---|
| 8 |         <author>&person.gd;<contrib>LDAP updates</contrib></author>
 | 
|---|
| 9 | </chapterinfo>
 | 
|---|
| 10 | 
 | 
|---|
| 11 | <title>Backup Domain Control</title>
 | 
|---|
| 12 | 
 | 
|---|
| 13 | <para>
 | 
|---|
| 14 | Before you continue reading this section, please make sure that you are comfortable
 | 
|---|
| 15 | with configuring a Samba domain controller as described in <link linkend="samba-pdc">Domain Control</link>.
 | 
|---|
| 16 | </para>
 | 
|---|
| 17 | 
 | 
|---|
| 18 | <sect1>
 | 
|---|
| 19 | <title>Features and Benefits</title>
 | 
|---|
| 20 | 
 | 
|---|
| 21 | <para>
 | 
|---|
| 22 | This is one of the most difficult chapters to summarize. It does not matter what we say here, for someone will
 | 
|---|
| 23 | still draw conclusions and/or approach the Samba Team with expectations that are either not yet capable of
 | 
|---|
| 24 | being delivered or that can be achieved far more effectively using a totally different approach. In the event
 | 
|---|
| 25 | that you should have a persistent concern that is not addressed in this book, please email <ulink
 | 
|---|
| 26 | url="mailto:jht@samba.org">John H. Terpstra</ulink> clearly setting out your requirements and/or question, and
 | 
|---|
| 27 | we will do our best to provide a solution.
 | 
|---|
| 28 | </para>
 | 
|---|
| 29 | 
 | 
|---|
| 30 | <para>
 | 
|---|
| 31 | <indexterm><primary>SAM backend</primary><secondary>LDAP</secondary></indexterm>
 | 
|---|
| 32 | <indexterm><primary>PDC</primary></indexterm>
 | 
|---|
| 33 | <indexterm><primary>BDC</primary></indexterm>
 | 
|---|
| 34 | <indexterm><primary>LDAP</primary><secondary>slave</secondary></indexterm>
 | 
|---|
| 35 | <indexterm><primary>scalability</primary></indexterm>
 | 
|---|
| 36 | Samba-3 can act as a Backup Domain Controller (BDC) to another Samba Primary Domain Controller (PDC). A
 | 
|---|
| 37 | Samba-3 PDC can operate with an LDAP account backend. The LDAP backend can be either a common master LDAP
 | 
|---|
| 38 | server or a slave server. The use of a slave LDAP server has the benefit that when the master is down, clients
 | 
|---|
| 39 | may still be able to log onto the network.  This effectively gives Samba a high degree of scalability and is
 | 
|---|
| 40 | an effective solution for large organizations. If you use an LDAP slave server for a PDC, you will need to
 | 
|---|
| 41 | ensure the master's continued availability &smbmdash; if the slave finds its master down at the wrong time,
 | 
|---|
| 42 | you will have stability and operational problems.
 | 
|---|
| 43 | </para>
 | 
|---|
| 44 | 
 | 
|---|
| 45 | <para>
 | 
|---|
| 46 | <indexterm><primary>two-way</primary><secondary>propagation</secondary></indexterm>
 | 
|---|
| 47 | <indexterm><primary>replication</primary><secondary>SAM</secondary></indexterm>
 | 
|---|
| 48 | <indexterm><primary>non-LDAP</primary><secondary>backend</secondary></indexterm>
 | 
|---|
| 49 | <indexterm><primary>propagate</primary></indexterm>
 | 
|---|
| 50 | While it is possible to run a Samba-3 BDC with a non-LDAP backend, that backend must allow some form of
 | 
|---|
| 51 | "two-way" propagation of changes from the BDC to the master.  At this time only LDAP delivers the capability
 | 
|---|
| 52 | to propagate identity database changes from the BDC to the PDC. The BDC can use a slave LDAP server, while it
 | 
|---|
| 53 | is preferable for the PDC to use as its primary an LDAP master server.
 | 
|---|
| 54 | </para>
 | 
|---|
| 55 | 
 | 
|---|
| 56 | <para>
 | 
|---|
| 57 | <indexterm><primary>non-LDAP</primary><secondary>backend</secondary></indexterm>
 | 
|---|
| 58 | <indexterm><primary>SAM backend</primary><secondary>non-LDAP</secondary></indexterm>
 | 
|---|
| 59 | <indexterm><primary>domain</primary><secondary>member</secondary><tertiary>server</tertiary></indexterm>
 | 
|---|
| 60 | <indexterm><primary>BDC</primary></indexterm>
 | 
|---|
| 61 | <indexterm><primary>PDC</primary></indexterm>
 | 
|---|
| 62 | <indexterm><primary>trust account password</primary></indexterm>
 | 
|---|
| 63 | <indexterm><primary>domain trust</primary></indexterm>
 | 
|---|
| 64 | The use of a non-LDAP backend SAM database is particularly problematic because domain member
 | 
|---|
| 65 | servers and workstations periodically change the Machine Trust Account password. The new
 | 
|---|
| 66 | password is then stored only locally. This means that in the absence of a centrally stored
 | 
|---|
| 67 | accounts database (such as that provided with an LDAP-based solution) if Samba-3 is running
 | 
|---|
| 68 | as a BDC, the BDC instance of the domain member trust account password will not reach the
 | 
|---|
| 69 | PDC (master) copy of the SAM. If the PDC SAM is then replicated to BDCs, this results in 
 | 
|---|
| 70 | overwriting the SAM that contains the updated (changed) trust account password with resulting
 | 
|---|
| 71 | breakage of the domain trust.
 | 
|---|
| 72 | </para>
 | 
|---|
| 73 | 
 | 
|---|
| 74 | <para>
 | 
|---|
| 75 | <indexterm><primary>net</primary><secondary>rpc</secondary></indexterm>
 | 
|---|
| 76 | <indexterm><primary>SAM backend</primary><secondary>ldapsam</secondary></indexterm>
 | 
|---|
| 77 | <indexterm><primary>SAM backend</primary><secondary>tdbsam</secondary></indexterm>
 | 
|---|
| 78 | <indexterm><primary>replication</primary><secondary>SAM</secondary></indexterm>
 | 
|---|
| 79 | Considering the number of comments and questions raised concerning how to configure a BDC,
 | 
|---|
| 80 | let's consider each possible option and look at the pros and cons for each possible solution.
 | 
|---|
| 81 | <link linkend="pdc-bdc-table">The Domain Backend Account Distribution Options table below</link> lists 
 | 
|---|
| 82 | possible design configurations for a PDC/BDC infrastructure.
 | 
|---|
| 83 | </para>
 | 
|---|
| 84 | 
 | 
|---|
| 85 | <table frame="all" id="pdc-bdc-table"><title>Domain Backend Account Distribution Options</title>
 | 
|---|
| 86 | <tgroup cols="3">
 | 
|---|
| 87 |         <colspec align="center" colwidth="1*"/>
 | 
|---|
| 88 |         <colspec align="center" colwidth="1*"/>
 | 
|---|
| 89 |         <colspec align="left" colwidth="3*"/>
 | 
|---|
| 90 | 
 | 
|---|
| 91 |         <thead>
 | 
|---|
| 92 |         <row><entry>PDC Backend</entry><entry>BDC Backend</entry><entry>Notes/Discussion</entry></row>
 | 
|---|
| 93 |         </thead>
 | 
|---|
| 94 |         <tbody>
 | 
|---|
| 95 |         <row>
 | 
|---|
| 96 |         <entry><para>Master LDAP Server</para></entry>
 | 
|---|
| 97 |         <entry><para>Slave LDAP Server</para></entry>
 | 
|---|
| 98 |         <entry><para>The optimal solution that provides high integrity. The SAM will be
 | 
|---|
| 99 |                 replicated to a common master LDAP server.</para></entry>
 | 
|---|
| 100 |         </row>
 | 
|---|
| 101 |         <row>
 | 
|---|
| 102 |         <entry><para>Single Central LDAP Server</para></entry>
 | 
|---|
| 103 |         <entry><para>Single Central LDAP Server</para></entry>
 | 
|---|
| 104 |         <entry><para>
 | 
|---|
| 105 |         A workable solution without failover ability. This is a usable solution, but not optimal. 
 | 
|---|
| 106 |         </para></entry>
 | 
|---|
| 107 |         </row>
 | 
|---|
| 108 |         <row>
 | 
|---|
| 109 |         <entry><para>tdbsam</para></entry>
 | 
|---|
| 110 |         <entry><para>tdbsam + <command>net rpc vampire</command></para></entry>
 | 
|---|
| 111 |         <entry><para>
 | 
|---|
| 112 |         Does not work with Samba-3.0; Samba does not implement the
 | 
|---|
| 113 |         server-side protocols required.
 | 
|---|
| 114 |         </para></entry>
 | 
|---|
| 115 |         </row>
 | 
|---|
| 116 |         <row>
 | 
|---|
| 117 |         <entry><para>tdbsam</para></entry>
 | 
|---|
| 118 |         <entry><para>tdbsam + <command>rsync</command></para></entry>
 | 
|---|
| 119 |         <entry><para>
 | 
|---|
| 120 |         Do not use this configuration.
 | 
|---|
| 121 |         Does not work because the TDB files are live and data may not
 | 
|---|
| 122 |         have been flushed to disk.  Furthermore, this will cause
 | 
|---|
| 123 |         domain trust breakdown.
 | 
|---|
| 124 |         </para></entry>
 | 
|---|
| 125 |         </row>
 | 
|---|
| 126 |         <row>
 | 
|---|
| 127 |         <entry><para>smbpasswd file</para></entry>
 | 
|---|
| 128 |         <entry><para>smbpasswd file</para></entry>
 | 
|---|
| 129 |         <entry><para>
 | 
|---|
| 130 |         Do not use this configuration.
 | 
|---|
| 131 |         Not an elegant solution due to the delays in synchronization
 | 
|---|
| 132 |         and also suffers
 | 
|---|
| 133 |         from the issue of domain trust breakdown.
 | 
|---|
| 134 |         </para></entry>
 | 
|---|
| 135 |         </row>
 | 
|---|
| 136 |         </tbody>
 | 
|---|
| 137 | </tgroup>
 | 
|---|
| 138 | </table>
 | 
|---|
| 139 | 
 | 
|---|
| 140 | </sect1>
 | 
|---|
| 141 | 
 | 
|---|
| 142 | <sect1>
 | 
|---|
| 143 | <title>Essential Background Information</title>
 | 
|---|
| 144 | 
 | 
|---|
| 145 | <para>
 | 
|---|
| 146 | <indexterm><primary>domain controller</primary></indexterm>
 | 
|---|
| 147 | <indexterm><primary>logon requests</primary></indexterm>
 | 
|---|
| 148 | <indexterm><primary>LanMan</primary></indexterm>
 | 
|---|
| 149 | <indexterm><primary>Netlogon</primary></indexterm>
 | 
|---|
| 150 | A domain controller is a machine that is able to answer logon requests from network
 | 
|---|
| 151 | workstations. Microsoft LanManager and IBM LanServer were two early products that
 | 
|---|
| 152 | provided this capability. The technology has become known as the LanMan Netlogon service.
 | 
|---|
| 153 | </para>
 | 
|---|
| 154 | 
 | 
|---|
| 155 | <para>
 | 
|---|
| 156 | <indexterm>network<primary></primary><secondary>logon</secondary><tertiary>service</tertiary></indexterm>
 | 
|---|
| 157 | <indexterm><primary>Windows NT3.10</primary></indexterm>
 | 
|---|
| 158 | When MS Windows NT3.10 was first released, it supported a new style of Domain Control
 | 
|---|
| 159 | and with it a new form of the network logon service that has extended functionality.
 | 
|---|
| 160 | This service became known as the NT NetLogon Service. The nature of this service has
 | 
|---|
| 161 | changed with the evolution of MS Windows NT and today provides a complex array of
 | 
|---|
| 162 | services that are implemented over an intricate spectrum of technologies.
 | 
|---|
| 163 | </para>
 | 
|---|
| 164 | 
 | 
|---|
| 165 | <sect2>
 | 
|---|
| 166 | <title>MS Windows NT4-style Domain Control</title>
 | 
|---|
| 167 | 
 | 
|---|
| 168 | <para>
 | 
|---|
| 169 | <indexterm><primary>domain controller</primary></indexterm>
 | 
|---|
| 170 | <indexterm><primary>authentication server</primary></indexterm>
 | 
|---|
| 171 | <indexterm><primary>username</primary></indexterm>
 | 
|---|
| 172 | <indexterm><primary>password</primary></indexterm>
 | 
|---|
| 173 | <indexterm><primary>SAM</primary></indexterm>
 | 
|---|
| 174 | <indexterm><primary>Security Account Manager</primary><see>SAM</see></indexterm>
 | 
|---|
| 175 | <indexterm><primary>domain control database</primary><see>SAM</see></indexterm>
 | 
|---|
| 176 | Whenever a user logs into a Windows NT4/200x/XP Professional workstation,
 | 
|---|
| 177 | the workstation connects to a domain controller (authentication server) to validate that
 | 
|---|
| 178 | the username and password the user entered are valid. If the information entered
 | 
|---|
| 179 | does not match account information that has been stored in the domain
 | 
|---|
| 180 | control database (the SAM, or Security Account Manager database), a set of error
 | 
|---|
| 181 | codes is returned to the workstation that has made the authentication request.
 | 
|---|
| 182 | </para>
 | 
|---|
| 183 | 
 | 
|---|
| 184 | <para>
 | 
|---|
| 185 | <indexterm><primary>account information</primary></indexterm>
 | 
|---|
| 186 | <indexterm><primary>machine accounts database</primary></indexterm>
 | 
|---|
| 187 | <indexterm><primary>profile</primary></indexterm>
 | 
|---|
| 188 | <indexterm><primary>network access profile</primary></indexterm>
 | 
|---|
| 189 | <indexterm><primary>desktop profile</primary></indexterm>
 | 
|---|
| 190 | When the username/password pair has been validated, the domain controller
 | 
|---|
| 191 | (authentication server) will respond with full enumeration of the account information
 | 
|---|
| 192 | that has been stored regarding that user in the user and machine accounts database
 | 
|---|
| 193 | for that domain. This information contains a complete network access profile for
 | 
|---|
| 194 | the user but excludes any information that is particular to the user's desktop profile,
 | 
|---|
| 195 | or for that matter it excludes all desktop profiles for groups that the user may
 | 
|---|
| 196 | belong to. It does include password time limits, password uniqueness controls,
 | 
|---|
| 197 | network access time limits, account validity information, machine names from which the
 | 
|---|
| 198 | user may access the network, and much more. All this information was stored in the SAM
 | 
|---|
| 199 | in all versions of MS Windows NT (3.10, 3.50, 3.51, 4.0).
 | 
|---|
| 200 | </para>
 | 
|---|
| 201 | 
 | 
|---|
| 202 | <para>
 | 
|---|
| 203 | <indexterm><primary>replication</primary><secondary>SAM</secondary></indexterm>
 | 
|---|
| 204 | <indexterm><primary>%SystemRoot%\System32\config</primary></indexterm>
 | 
|---|
| 205 | <indexterm><primary>C:\WinNT\System32\config</primary></indexterm>
 | 
|---|
| 206 | <indexterm><primary>BDC</primary></indexterm>
 | 
|---|
| 207 | <indexterm><primary>SAM</primary></indexterm>
 | 
|---|
| 208 | The account information (user and machine) on domain controllers is stored in two files,
 | 
|---|
| 209 | one containing the security information and the other the SAM. These are stored in files
 | 
|---|
| 210 | by the same name in the <filename>%SystemRoot%\System32\config</filename> directory. 
 | 
|---|
| 211 | This normally translates to the path <filename>C:\WinNT\System32\config</filename>. These
 | 
|---|
| 212 | are the files that are involved in replication of the SAM database where BDCs are present
 | 
|---|
| 213 | on the network.
 | 
|---|
| 214 | </para>
 | 
|---|
| 215 | 
 | 
|---|
| 216 | <para>
 | 
|---|
| 217 | There are two situations in which it is desirable to install BDCs:
 | 
|---|
| 218 | </para>
 | 
|---|
| 219 | 
 | 
|---|
| 220 | <itemizedlist>
 | 
|---|
| 221 |         <listitem><para>
 | 
|---|
| 222 |         <indexterm><primary>PDC</primary></indexterm>
 | 
|---|
| 223 |         <indexterm><primary>BDC</primary></indexterm>
 | 
|---|
| 224 |         On the local network that the PDC is on, if there are many
 | 
|---|
| 225 |         workstations and/or where the PDC is generally very busy. In this case the BDCs
 | 
|---|
| 226 |         will pick up network logon requests and help to add robustness to network services.
 | 
|---|
| 227 |         </para></listitem>
 | 
|---|
| 228 | 
 | 
|---|
| 229 |         <listitem><para>
 | 
|---|
| 230 |         <indexterm><primary>network</primary><secondary>wide-area</secondary></indexterm>
 | 
|---|
| 231 |         At each remote site, to reduce wide-area network traffic and to add stability to
 | 
|---|
| 232 |         remote network operations. The design of the network, and the strategic placement of
 | 
|---|
| 233 |         BDCs, together with an implementation that localizes as much of network to client
 | 
|---|
| 234 |         interchange as possible, will help to minimize wide-area network bandwidth needs
 | 
|---|
| 235 |         (and thus costs).
 | 
|---|
| 236 |         </para></listitem>
 | 
|---|
| 237 | </itemizedlist>
 | 
|---|
| 238 | 
 | 
|---|
| 239 | <para>
 | 
|---|
| 240 | <indexterm><primary>PDC</primary></indexterm>
 | 
|---|
| 241 | <indexterm><primary>SAM</primary></indexterm>
 | 
|---|
| 242 | <indexterm><primary>user account database</primary></indexterm>
 | 
|---|
| 243 | <indexterm><primary>BDC</primary></indexterm>
 | 
|---|
| 244 | <indexterm><primary>trigger</primary></indexterm>
 | 
|---|
| 245 | The interoperation of a PDC and its BDCs in a true Windows NT4 environment is worth
 | 
|---|
| 246 | mentioning here. The PDC contains the master copy of the SAM. In the event that an
 | 
|---|
| 247 | administrator makes a change to the user account database while physically present
 | 
|---|
| 248 | on the local network that has the PDC, the change will likely be made directly to
 | 
|---|
| 249 | the PDC instance of the master copy of the SAM. In the event that this update may
 | 
|---|
| 250 | be performed in a branch office, the change will likely be stored in a delta file
 | 
|---|
| 251 | on the local BDC. The BDC will then send a trigger to the PDC to commence the process
 | 
|---|
| 252 | of SAM synchronization. The PDC will then request the delta from the BDC and apply
 | 
|---|
| 253 | it to the master SAM. The PDC will then contact all the BDCs in the domain and
 | 
|---|
| 254 | trigger them to obtain the update and then apply that to their own copy of the SAM.
 | 
|---|
| 255 | </para>
 | 
|---|
| 256 | 
 | 
|---|
| 257 | <para>
 | 
|---|
| 258 | <indexterm><primary>SAM</primary><secondary>replication</secondary></indexterm>
 | 
|---|
| 259 | <indexterm><primary>SAM</primary><secondary>delta file</secondary></indexterm>
 | 
|---|
| 260 | <indexterm><primary>PDC</primary></indexterm>
 | 
|---|
| 261 | <indexterm><primary>BDC</primary></indexterm>
 | 
|---|
| 262 | Samba-3 cannot participate in true SAM replication and is therefore not able to
 | 
|---|
| 263 | employ precisely the same protocols used by MS Windows NT4. A Samba-3 BDC will
 | 
|---|
| 264 | not create SAM update delta files. It will not interoperate with a PDC (NT4 or Samba)
 | 
|---|
| 265 | to synchronize the SAM from delta files that are held by BDCs.
 | 
|---|
| 266 | </para>
 | 
|---|
| 267 | 
 | 
|---|
| 268 | <para>
 | 
|---|
| 269 | <indexterm><primary>PDC</primary></indexterm>
 | 
|---|
| 270 | <indexterm><primary>BDC</primary></indexterm>
 | 
|---|
| 271 | Samba-3 cannot function as a BDC to an MS Windows NT4 PDC, and Samba-3 cannot
 | 
|---|
| 272 | function correctly as a PDC to an MS Windows NT4 BDC. Both Samba-3 and MS Windows
 | 
|---|
| 273 | NT4 can function as a BDC to its own type of PDC.
 | 
|---|
| 274 | </para>
 | 
|---|
| 275 | 
 | 
|---|
| 276 | <para>
 | 
|---|
| 277 | <indexterm><primary>SAM</primary></indexterm>
 | 
|---|
| 278 | <indexterm><primary>BDC</primary></indexterm>
 | 
|---|
| 279 | <indexterm><primary>domain security</primary></indexterm>
 | 
|---|
| 280 | The BDC is said to hold a <emphasis>read-only</emphasis> of the SAM from which
 | 
|---|
| 281 | it is able to process network logon requests and authenticate users. The BDC can
 | 
|---|
| 282 | continue to provide this service, particularly while, for example, the wide-area
 | 
|---|
| 283 | network link to the PDC is down. A BDC plays a very important role in both the
 | 
|---|
| 284 | maintenance of domain security as well as in network integrity.
 | 
|---|
| 285 | </para>
 | 
|---|
| 286 | 
 | 
|---|
| 287 | <para>
 | 
|---|
| 288 | <indexterm><primary>PDC</primary></indexterm>
 | 
|---|
| 289 | <indexterm><primary>promoted</primary></indexterm>
 | 
|---|
| 290 | <indexterm><primary>demoted</primary></indexterm>
 | 
|---|
| 291 | <indexterm><primary>reconfiguration</primary></indexterm>
 | 
|---|
| 292 | In the event that the NT4 PDC should need to be taken out of service, or if it dies, one of the NT4 BDCs can
 | 
|---|
| 293 | be promoted to a PDC. If this happens while the original NT4 PDC is online, it is automatically demoted to an
 | 
|---|
| 294 | NT4 BDC. This is an important aspect of domain controller management. The tool that is used to effect a
 | 
|---|
| 295 | promotion or a demotion is the Server Manager for Domains. It should be noted that Samba-3 BDCs cannot be
 | 
|---|
| 296 | promoted in this manner because reconfiguration of Samba requires changes to the &smb.conf; file. It is easy
 | 
|---|
| 297 | enough to manuall change the &smb.conf; file and then restart relevant Samba network services.
 | 
|---|
| 298 | </para>
 | 
|---|
| 299 | 
 | 
|---|
| 300 | <sect3>
 | 
|---|
| 301 | <title>Example PDC Configuration</title>
 | 
|---|
| 302 | 
 | 
|---|
| 303 | <para>
 | 
|---|
| 304 | <indexterm><primary>domain logon</primary></indexterm>
 | 
|---|
| 305 | <indexterm><primary>PDC</primary></indexterm>
 | 
|---|
| 306 | Beginning with Version 2.2, Samba officially supports domain logons for all current Windows clients, including
 | 
|---|
| 307 | Windows NT4, 2003, and XP Professional. For Samba to be enabled as a PDC, some parameters in the
 | 
|---|
| 308 | <smbconfsection name="[global]"/> section of the &smb.conf; have to be set.  Refer to <link
 | 
|---|
| 309 | linkend="minimalPDC">the Minimal smb.conf for a PDC in Use with a BDC &smbmdash; LDAP Server on PDC
 | 
|---|
| 310 | section</link> for an example of the minimum required settings.
 | 
|---|
| 311 | </para>
 | 
|---|
| 312 | 
 | 
|---|
| 313 | <example id="minimalPDC">
 | 
|---|
| 314 | <title>Minimal smb.conf for a PDC in Use with a BDC &smbmdash; LDAP Server on PDC</title>
 | 
|---|
| 315 | <smbconfblock>
 | 
|---|
| 316 | <smbconfoption name="workgroup">&example.workgroup;</smbconfoption>
 | 
|---|
| 317 | <smbconfoption name="passdb backend">ldapsam://localhost:389</smbconfoption>
 | 
|---|
| 318 | <smbconfoption name="domain master">yes</smbconfoption>
 | 
|---|
| 319 | <smbconfoption name="domain logons">yes</smbconfoption>
 | 
|---|
| 320 | <smbconfoption name="ldap suffix">dc=quenya,dc=org</smbconfoption>
 | 
|---|
| 321 | <smbconfoption name="ldap user suffix">ou=Users</smbconfoption>
 | 
|---|
| 322 | <smbconfoption name="ldap group suffix">ou=Groups</smbconfoption>
 | 
|---|
| 323 | <smbconfoption name="ldap machine suffix">ou=Computers</smbconfoption>
 | 
|---|
| 324 | <smbconfoption name="ldap idmap suffix">ou=Idmap</smbconfoption>
 | 
|---|
| 325 | <smbconfoption name="ldap admin dn">cn=sambadmin,dc=quenya,dc=org</smbconfoption>
 | 
|---|
| 326 | </smbconfblock>
 | 
|---|
| 327 | </example>
 | 
|---|
| 328 | 
 | 
|---|
| 329 | <para>
 | 
|---|
| 330 | <indexterm><primary>profile path</primary></indexterm>
 | 
|---|
| 331 | <indexterm><primary>home drive</primary></indexterm>
 | 
|---|
| 332 | Several other things like a <smbconfsection name="[homes]"/> and a <smbconfsection name="[netlogon]"/> share
 | 
|---|
| 333 | also need to be set along with settings for the profile path, the user's home drive, and so on. This is not
 | 
|---|
| 334 | covered in this chapter; for more information please refer to <link linkend="samba-pdc">Domain Control</link>.
 | 
|---|
| 335 | Refer to <link linkend="samba-pdc">the Domain Control chapter</link> for specific recommendations for PDC
 | 
|---|
| 336 | configuration. Alternately, fully documented working example network configurations using OpenLDAP and Samba
 | 
|---|
| 337 | as available in the <ulink url="http://www.samba.org/samba/docs/Samba3-ByExample">book</ulink> <quote>Samba-3
 | 
|---|
| 338 | by Example</quote> that may be obtained from local and on-line book stores.
 | 
|---|
| 339 | </para>
 | 
|---|
| 340 | 
 | 
|---|
| 341 | </sect3>
 | 
|---|
| 342 | </sect2>
 | 
|---|
| 343 | 
 | 
|---|
| 344 | <sect2>
 | 
|---|
| 345 | <title>LDAP Configuration Notes</title>
 | 
|---|
| 346 | 
 | 
|---|
| 347 | <para>
 | 
|---|
| 348 | <indexterm><primary>LDAP</primary><secondary>master</secondary></indexterm>
 | 
|---|
| 349 | <indexterm><primary>LDAP</primary><secondary>slave</secondary></indexterm>
 | 
|---|
| 350 | <indexterm><primary>BDC</primary></indexterm>
 | 
|---|
| 351 | When configuring a master and a slave LDAP server, it is advisable to use the master LDAP server
 | 
|---|
| 352 | for the PDC and slave LDAP servers for the BDCs. It is not essential to use slave LDAP servers; however,
 | 
|---|
| 353 | many administrators will want to do so in order to provide redundant services. Of course, one or more BDCs
 | 
|---|
| 354 | may use any slave LDAP server. Then again, it is entirely possible to use a single LDAP server for the
 | 
|---|
| 355 | entire network.
 | 
|---|
| 356 | </para>
 | 
|---|
| 357 | 
 | 
|---|
| 358 | <para>
 | 
|---|
| 359 | <indexterm><primary>LDAP</primary><secondary>master</secondary></indexterm>
 | 
|---|
| 360 | <indexterm><primary>LDAP</primary><secondary>server</secondary></indexterm>
 | 
|---|
| 361 | <indexterm><primary>CN</primary></indexterm>
 | 
|---|
| 362 | <indexterm><primary>DN</primary></indexterm>
 | 
|---|
| 363 | <indexterm><primary>RFC2830</primary></indexterm>
 | 
|---|
| 364 | When configuring a master LDAP server that will have slave LDAP servers, do not forget to configure this in
 | 
|---|
| 365 | the <filename>/etc/openldap/slapd.conf</filename> file. It must be noted that the DN of a server certificate
 | 
|---|
| 366 | must use the CN attribute to name the server, and the CN must carry the servers' fully qualified domain name.
 | 
|---|
| 367 | Additional alias names and wildcards may be present in the subjectAltName certificate extension. More details
 | 
|---|
| 368 | on server certificate names are in RFC2830.
 | 
|---|
| 369 | </para>
 | 
|---|
| 370 | 
 | 
|---|
| 371 | <para>
 | 
|---|
| 372 | <indexterm><primary>LDAP</primary></indexterm>
 | 
|---|
| 373 | <indexterm><primary>BDC</primary></indexterm>
 | 
|---|
| 374 | <indexterm><primary>OpenLDAP</primary></indexterm>
 | 
|---|
| 375 | <indexterm><primary>transport layer security</primary><see>TLS</see></indexterm>
 | 
|---|
| 376 | <indexterm><primary>/etc/ssl/certs/slapd.pem</primary></indexterm>
 | 
|---|
| 377 | <indexterm><primary>slapd.pem</primary></indexterm>
 | 
|---|
| 378 | <indexterm><primary>Red Hat Linux</primary></indexterm>
 | 
|---|
| 379 | It does not really fit within the scope of this document, but a working LDAP installation is basic to
 | 
|---|
| 380 | LDAP-enabled Samba operation. When using an OpenLDAP server with Transport Layer Security (TLS), the machine
 | 
|---|
| 381 | name in <filename>/etc/ssl/certs/slapd.pem</filename> must be the same as in
 | 
|---|
| 382 | <filename>/etc/openldap/sldap.conf</filename>. The Red Hat Linux startup script creates the
 | 
|---|
| 383 | <filename>slapd.pem</filename> file with hostname <quote>localhost.localdomain.</quote> It is impossible to
 | 
|---|
| 384 | access this LDAP server from a slave LDAP server (i.e., a Samba BDC) unless the certificate is re-created with
 | 
|---|
| 385 | a correct hostname.
 | 
|---|
| 386 | </para>
 | 
|---|
| 387 | 
 | 
|---|
| 388 | <para>
 | 
|---|
| 389 | <indexterm><primary>PDC</primary></indexterm>
 | 
|---|
| 390 | <indexterm><primary>OpenLDAP</primary></indexterm>
 | 
|---|
| 391 | <indexterm><primary>machine account</primary></indexterm>
 | 
|---|
| 392 | <indexterm><primary>credentials</primary></indexterm>
 | 
|---|
| 393 | <indexterm><primary>replication</primary></indexterm>
 | 
|---|
| 394 | <indexterm><primary>duplicate</primary></indexterm>
 | 
|---|
| 395 | Do not install a Samba PDC so that is uses an LDAP slave server. Joining client machines to the domain
 | 
|---|
| 396 | will fail in this configuration because the change to the machine account in the LDAP tree must take place on
 | 
|---|
| 397 | the master LDAP server. This is not replicated rapidly enough to the slave server that the PDC queries. It
 | 
|---|
| 398 | therefore gives an error message on the client machine about not being able to set up account credentials. The
 | 
|---|
| 399 | machine account is created on the LDAP server, but the password fields will be empty.  Unfortunately, some
 | 
|---|
| 400 | sites are unable to avoid such configurations, and these sites should review the <smbconfoption name="ldap
 | 
|---|
| 401 | replication sleep"/> parameter, intended to slow down Samba sufficiently for the replication to catch up.
 | 
|---|
| 402 | This is a kludge, and one that the administrator must manually duplicate in any scripts (such as the
 | 
|---|
| 403 | <smbconfoption name="add machine script"/>) that they use.
 | 
|---|
| 404 | </para>
 | 
|---|
| 405 | 
 | 
|---|
| 406 | <para>
 | 
|---|
| 407 | Possible PDC/BDC plus LDAP configurations include:
 | 
|---|
| 408 | </para>
 | 
|---|
| 409 | 
 | 
|---|
| 410 | <itemizedlist>
 | 
|---|
| 411 |         <listitem><para>
 | 
|---|
| 412 |         PDC+BDC -> One Central LDAP Server.
 | 
|---|
| 413 |         </para></listitem>
 | 
|---|
| 414 |         <listitem><para>
 | 
|---|
| 415 |         PDC -> LDAP master server, BDC -> LDAP slave server.
 | 
|---|
| 416 |         </para></listitem>
 | 
|---|
| 417 |         <listitem><para>
 | 
|---|
| 418 |         PDC -> LDAP master, with secondary slave LDAP server.
 | 
|---|
| 419 |         </para><para>
 | 
|---|
| 420 |         BDC -> LDAP master, with secondary slave LDAP server.
 | 
|---|
| 421 |         </para></listitem>
 | 
|---|
| 422 |         <listitem><para>
 | 
|---|
| 423 |         PDC -> LDAP master, with secondary slave LDAP server.
 | 
|---|
| 424 |         </para><para>
 | 
|---|
| 425 |         BDC -> LDAP slave server, with secondary master LDAP server.
 | 
|---|
| 426 |         </para></listitem>
 | 
|---|
| 427 | </itemizedlist>
 | 
|---|
| 428 | 
 | 
|---|
| 429 | <para>
 | 
|---|
| 430 | In order to have a fallback configuration (secondary) LDAP server, you would specify
 | 
|---|
| 431 | the secondary LDAP server in the &smb.conf; file as shown in <link linkend="mulitldapcfg">the Multiple LDAP
 | 
|---|
| 432 | Servers in &smb.conf; example</link>.
 | 
|---|
| 433 | </para>
 | 
|---|
| 434 | 
 | 
|---|
| 435 | <example id="mulitldapcfg">
 | 
|---|
| 436 | <title>Multiple LDAP Servers in &smb.conf;</title>
 | 
|---|
| 437 | <smbconfblock>
 | 
|---|
| 438 | <smbconfoption name="passdb backend">ldapsam:"ldap://master.quenya.org ldap://slave.quenya.org"</smbconfoption>
 | 
|---|
| 439 | </smbconfblock>
 | 
|---|
| 440 | </example>
 | 
|---|
| 441 | 
 | 
|---|
| 442 | </sect2>
 | 
|---|
| 443 | 
 | 
|---|
| 444 | <sect2>
 | 
|---|
| 445 | <title>Active Directory Domain Control</title>
 | 
|---|
| 446 | 
 | 
|---|
| 447 | <para>
 | 
|---|
| 448 | <indexterm><primary>MS Windows 2000</primary></indexterm>
 | 
|---|
| 449 | <indexterm><primary>Active Directory</primary></indexterm>
 | 
|---|
| 450 | <indexterm><primary>directory</primary></indexterm>
 | 
|---|
| 451 | <indexterm><primary>replicated</primary></indexterm>
 | 
|---|
| 452 | <indexterm><primary>BDC</primary></indexterm>
 | 
|---|
| 453 | <indexterm><primary>domain controller</primary></indexterm>
 | 
|---|
| 454 | As of the release of MS Windows 2000 and Active Directory, this information is now stored
 | 
|---|
| 455 | in a directory that can be replicated and for which partial or full administrative control
 | 
|---|
| 456 | can be delegated. Samba-3 is not able to be a domain controller within an Active Directory
 | 
|---|
| 457 | tree, and it cannot be an Active Directory server. This means that Samba-3 also cannot
 | 
|---|
| 458 | act as a BDC to an Active Directory domain controller.
 | 
|---|
| 459 | </para>
 | 
|---|
| 460 | 
 | 
|---|
| 461 | </sect2>
 | 
|---|
| 462 | 
 | 
|---|
| 463 | <sect2>
 | 
|---|
| 464 | <title>What Qualifies a Domain Controller on the Network?</title>
 | 
|---|
| 465 | 
 | 
|---|
| 466 | <para>
 | 
|---|
| 467 | <indexterm><primary>DMB</primary></indexterm>
 | 
|---|
| 468 | <indexterm><primary>PDC</primary></indexterm>
 | 
|---|
| 469 | <indexterm><primary>WINS</primary></indexterm>
 | 
|---|
| 470 | <indexterm><primary>NetBIOS</primary></indexterm>
 | 
|---|
| 471 | Every machine that is a domain controller for the domain MIDEARTH has to register the NetBIOS
 | 
|---|
| 472 | group name MIDEARTH<1C> with the WINS server and/or by broadcast on the local network.
 | 
|---|
| 473 | The PDC also registers the unique NetBIOS name MIDEARTH<1B> with the WINS server.
 | 
|---|
| 474 | The name type <1B> name is normally reserved for the Domain Master Browser (DMB), a role
 | 
|---|
| 475 | that has nothing to do with anything related to authentication, but the Microsoft domain
 | 
|---|
| 476 | implementation requires the DMB to be on the same machine as the PDC.
 | 
|---|
| 477 | </para>
 | 
|---|
| 478 | 
 | 
|---|
| 479 | <para>
 | 
|---|
| 480 | <indexterm><primary>broadcast</primary></indexterm>
 | 
|---|
| 481 | <indexterm><primary>name registration</primary></indexterm>
 | 
|---|
| 482 | <indexterm><primary>SMB/CIFS</primary></indexterm>
 | 
|---|
| 483 | Where a WINS server is not used, broadcast name registrations alone must suffice. Refer to
 | 
|---|
| 484 | <link linkend="NetworkBrowsing">Network Browsing</link>,<link linkend="netdiscuss">Discussion</link>
 | 
|---|
| 485 | for more information regarding TCP/IP network protocols and how SMB/CIFS names are handled.
 | 
|---|
| 486 | </para>
 | 
|---|
| 487 | 
 | 
|---|
| 488 | </sect2>
 | 
|---|
| 489 | 
 | 
|---|
| 490 | <sect2>
 | 
|---|
| 491 | <title>How Does a Workstation find its Domain Controller?</title>
 | 
|---|
| 492 | 
 | 
|---|
| 493 | <para>
 | 
|---|
| 494 | <indexterm><primary>locate domain controller</primary></indexterm>
 | 
|---|
| 495 | <indexterm><primary>NetBIOS</primary></indexterm>
 | 
|---|
| 496 | There are two different mechanisms to locate a domain controller: one method is used when
 | 
|---|
| 497 | NetBIOS over TCP/IP is enabled and the other when it has been disabled in the TCP/IP
 | 
|---|
| 498 | network configuration.
 | 
|---|
| 499 | </para>
 | 
|---|
| 500 | 
 | 
|---|
| 501 | <para>
 | 
|---|
| 502 | <indexterm><primary>DNS</primary></indexterm>
 | 
|---|
| 503 | <indexterm><primary>broadcast messaging</primary></indexterm>
 | 
|---|
| 504 | Where NetBIOS over TCP/IP is disabled, all name resolution involves the use of DNS, broadcast
 | 
|---|
| 505 | messaging over UDP, as well as Active Directory communication technologies. In this type of
 | 
|---|
| 506 | environment all machines require appropriate DNS entries. More information may be found in
 | 
|---|
| 507 | <link linkend="adsdnstech">DNS and Active Directory</link>.
 | 
|---|
| 508 | </para>
 | 
|---|
| 509 | 
 | 
|---|
| 510 | <sect3>
 | 
|---|
| 511 | <title>NetBIOS Over TCP/IP Enabled</title>
 | 
|---|
| 512 | <para>
 | 
|---|
| 513 | <indexterm><primary>Windows NT4/200x/XP</primary></indexterm>
 | 
|---|
| 514 | <indexterm><primary>domain controller</primary></indexterm>
 | 
|---|
| 515 | <indexterm><primary>logon requests</primary></indexterm>
 | 
|---|
| 516 | <indexterm><primary>credentials validation</primary></indexterm>
 | 
|---|
| 517 | An MS Windows NT4/200x/XP Professional workstation in the domain MIDEARTH that wants a
 | 
|---|
| 518 | local user to be authenticated has to find the domain controller for MIDEARTH. It does this
 | 
|---|
| 519 | by doing a NetBIOS name query for the group name MIDEARTH<1C>. It assumes that each
 | 
|---|
| 520 | of the machines it gets back from the queries is a domain controller and can answer logon
 | 
|---|
| 521 | requests. To not open security holes, both the workstation and the selected domain controller
 | 
|---|
| 522 | authenticate each other. After that the workstation sends the user's credentials (name and
 | 
|---|
| 523 | password) to the local domain controller for validation.
 | 
|---|
| 524 | </para>
 | 
|---|
| 525 | 
 | 
|---|
| 526 | </sect3>
 | 
|---|
| 527 | 
 | 
|---|
| 528 | <sect3>
 | 
|---|
| 529 | <title>NetBIOS Over TCP/IP Disabled</title>
 | 
|---|
| 530 | 
 | 
|---|
| 531 | <para>
 | 
|---|
| 532 | <indexterm><primary>realm</primary></indexterm>
 | 
|---|
| 533 | <indexterm><primary>logon authentication</primary></indexterm>
 | 
|---|
| 534 | <indexterm><primary>DNS</primary></indexterm>
 | 
|---|
| 535 | <indexterm><primary>_ldap._tcp.pdc._msdcs.quenya.org</primary></indexterm>
 | 
|---|
| 536 | An MS Windows NT4/200x/XP Professional workstation in the realm <constant>quenya.org</constant>
 | 
|---|
| 537 | that has a need to affect user logon authentication will locate the domain controller by 
 | 
|---|
| 538 | re-querying DNS servers for the <constant>_ldap._tcp.pdc._msdcs.quenya.org</constant> record.
 | 
|---|
| 539 | More information regarding this subject may be found in <link linkend="adsdnstech">DNS and Active Directory</link>.
 | 
|---|
| 540 | </para>
 | 
|---|
| 541 | 
 | 
|---|
| 542 | </sect3>
 | 
|---|
| 543 | </sect2>
 | 
|---|
| 544 | </sect1>
 | 
|---|
| 545 | 
 | 
|---|
| 546 | <sect1>
 | 
|---|
| 547 | <title>Backup Domain Controller Configuration</title>
 | 
|---|
| 548 | 
 | 
|---|
| 549 | <para>
 | 
|---|
| 550 | <indexterm><primary>BDC</primary></indexterm>
 | 
|---|
| 551 | The creation of a BDC requires some steps to prepare the Samba server before
 | 
|---|
| 552 | &smbd; is executed for the first time. These steps are as follows:
 | 
|---|
| 553 | </para>
 | 
|---|
| 554 | 
 | 
|---|
| 555 | <itemizedlist>
 | 
|---|
| 556 |         <listitem><para>
 | 
|---|
| 557 |         <indexterm><primary>SID</primary></indexterm>
 | 
|---|
| 558 |         <indexterm><primary>PDC</primary></indexterm>
 | 
|---|
| 559 |         <indexterm><primary>BDC</primary></indexterm>
 | 
|---|
| 560 |         <indexterm><primary>private/secrets.tdb</primary></indexterm>
 | 
|---|
| 561 |         <indexterm><primary>private/MACHINE.SID</primary></indexterm>
 | 
|---|
| 562 |         <indexterm><primary>domain SID</primary></indexterm>
 | 
|---|
| 563 |         The domain SID has to be the same on the PDC and the BDC. In Samba versions pre-2.2.5, the domain SID was
 | 
|---|
| 564 |         stored in the file <filename>private/MACHINE.SID</filename>.  For all versions of Samba released since 2.2.5
 | 
|---|
| 565 |         the domain SID is stored in the file <filename>private/secrets.tdb</filename>. This file is unique to each
 | 
|---|
| 566 |         server and cannot be copied from a PDC to a BDC; the BDC will generate a new SID at startup. It will overwrite
 | 
|---|
| 567 |         the PDC domain SID with the newly created BDC SID.  There is a procedure that will allow the BDC to aquire the
 | 
|---|
| 568 |         domain SID. This is described here.
 | 
|---|
| 569 |         </para>
 | 
|---|
| 570 | 
 | 
|---|
| 571 |         <para>
 | 
|---|
| 572 |         <indexterm><primary>domain SID</primary></indexterm>
 | 
|---|
| 573 |         <indexterm><primary>PDC</primary></indexterm>
 | 
|---|
| 574 |         <indexterm><primary>BDC</primary></indexterm>
 | 
|---|
| 575 |         <indexterm><primary>secrets.tdb</primary></indexterm>
 | 
|---|
| 576 |         <indexterm><primary>net</primary><secondary>rpc</secondary><tertiary>getsid</tertiary></indexterm>
 | 
|---|
| 577 |         To retrieve the domain SID from the PDC or an existing BDC and store it in the
 | 
|---|
| 578 |         <filename>secrets.tdb</filename>, execute:
 | 
|---|
| 579 |         </para>
 | 
|---|
| 580 | <screen>
 | 
|---|
| 581 | &rootprompt;<userinput>net rpc getsid</userinput>
 | 
|---|
| 582 | </screen>
 | 
|---|
| 583 |         </listitem>
 | 
|---|
| 584 | 
 | 
|---|
| 585 |         <listitem><para>
 | 
|---|
| 586 |         <indexterm><primary>secrets.tdb</primary></indexterm>
 | 
|---|
| 587 |         <indexterm><primary>smbpasswd</primary></indexterm>
 | 
|---|
| 588 |         <indexterm><primary>LDAP administration password</primary></indexterm>
 | 
|---|
| 589 |         Specification of the <smbconfoption name="ldap admin dn"/> is obligatory.
 | 
|---|
| 590 |         This also requires the LDAP administration password to be set in the <filename>secrets.tdb</filename>
 | 
|---|
| 591 |         using the <command>smbpasswd -w <replaceable>mysecret</replaceable></command>.
 | 
|---|
| 592 |         </para></listitem>
 | 
|---|
| 593 | 
 | 
|---|
| 594 |         <listitem><para>
 | 
|---|
| 595 |         The <smbconfoption name="ldap suffix"/> parameter and the <smbconfoption name="ldap idmap suffix"/>
 | 
|---|
| 596 |         parameter must be specified in the &smb.conf; file.
 | 
|---|
| 597 |         </para></listitem>
 | 
|---|
| 598 | 
 | 
|---|
| 599 |         <listitem><para>
 | 
|---|
| 600 |         <indexterm><primary>replication</primary><secondary>SAM</secondary></indexterm>
 | 
|---|
| 601 |         <indexterm><primary>user database</primary></indexterm>
 | 
|---|
| 602 |         <indexterm><primary>synchronized</primary></indexterm>
 | 
|---|
| 603 |         <indexterm><primary>NIS</primary></indexterm>
 | 
|---|
| 604 |         The UNIX user database has to be synchronized from the PDC to the
 | 
|---|
| 605 |         BDC. This means that both the <filename>/etc/passwd</filename> and
 | 
|---|
| 606 |         <filename>/etc/group</filename> have to be replicated from the PDC
 | 
|---|
| 607 |         to the BDC. This can be done manually whenever changes are made. 
 | 
|---|
| 608 |         Alternately, the PDC is set up as an NIS master server and the BDC as an NIS slave
 | 
|---|
| 609 |         server. To set up the BDC as a mere NIS client would not be enough,
 | 
|---|
| 610 |         as the BDC would not be able to access its user database in case of
 | 
|---|
| 611 |         a PDC failure. NIS is by no means the only method to synchronize
 | 
|---|
| 612 |         passwords. An LDAP solution would also work.
 | 
|---|
| 613 |         </para>
 | 
|---|
| 614 |         </listitem>
 | 
|---|
| 615 | 
 | 
|---|
| 616 |         <listitem><para>
 | 
|---|
| 617 |         <indexterm><primary>password database</primary></indexterm>
 | 
|---|
| 618 |         <indexterm><primary>replicated</primary></indexterm>
 | 
|---|
| 619 |         <indexterm><primary>PDC</primary></indexterm>
 | 
|---|
| 620 |         <indexterm><primary>BDC</primary></indexterm>
 | 
|---|
| 621 |         <indexterm><primary>smbpasswd</primary></indexterm>
 | 
|---|
| 622 |         <indexterm><primary>rsync</primary></indexterm>
 | 
|---|
| 623 |         <indexterm><primary>ssh</primary></indexterm>
 | 
|---|
| 624 |         <indexterm><primary>LDAP</primary></indexterm>
 | 
|---|
| 625 |         The Samba password database must be replicated from the PDC to the BDC.
 | 
|---|
| 626 |         Although it is possible to synchronize the <filename>smbpasswd</filename>
 | 
|---|
| 627 |         file with <command>rsync</command> and <command>ssh</command>, this method
 | 
|---|
| 628 |         is broken and flawed, and is therefore not recommended. A better solution
 | 
|---|
| 629 |         is to set up slave LDAP servers for each BDC and a master LDAP server for the PDC.
 | 
|---|
| 630 |         The use of rsync is inherently flawed by the fact that the data will be replicated
 | 
|---|
| 631 |         at timed intervals. There is no guarantee that the BDC will be operating at all
 | 
|---|
| 632 |         times with correct and current machine and user account information. This means that
 | 
|---|
| 633 |         this method runs the risk of users being inconvenienced by discontinuity of access
 | 
|---|
| 634 |         to network services due to inconsistent security data. It must be born in mind that
 | 
|---|
| 635 |         Windows workstations update (change) the machine trust account password at regular
 | 
|---|
| 636 |         intervals &smbmdash; administrators are not normally aware that this is happening
 | 
|---|
| 637 |         or when it takes place.
 | 
|---|
| 638 |         </para>
 | 
|---|
| 639 | 
 | 
|---|
| 640 |         <para>
 | 
|---|
| 641 |         <indexterm><primary>POSIX</primary></indexterm>
 | 
|---|
| 642 |         <indexterm><primary>LDAP</primary></indexterm>
 | 
|---|
| 643 |         <indexterm><primary>SambaSAMAccount</primary></indexterm>
 | 
|---|
| 644 |         <indexterm><primary>synchronize</primary></indexterm>
 | 
|---|
| 645 |         The use of LDAP for both the POSIX (UNIX user and group) accounts and for the
 | 
|---|
| 646 |         SambaSAMAccount data automatically ensures that all account change information
 | 
|---|
| 647 |         will be written to the shared directory. This eliminates the need for any special
 | 
|---|
| 648 |         action to synchronize account information because LDAP will meet that requirement.
 | 
|---|
| 649 |         </para></listitem>
 | 
|---|
| 650 | 
 | 
|---|
| 651 |         <listitem><para>
 | 
|---|
| 652 |         <indexterm><primary>netlogon share</primary></indexterm>
 | 
|---|
| 653 |         <indexterm><primary>replicate</primary></indexterm>
 | 
|---|
| 654 |         <indexterm><primary>PDC</primary></indexterm>
 | 
|---|
| 655 |         <indexterm><primary>BDC</primary></indexterm>
 | 
|---|
| 656 |         <indexterm><primary>cron</primary></indexterm>
 | 
|---|
| 657 |         <indexterm><primary>rsync</primary></indexterm>
 | 
|---|
| 658 |         The netlogon share has to be replicated from the PDC to the BDC. This can be done manually whenever login
 | 
|---|
| 659 |         scripts are changed, or it can be done automatically using a <command>cron</command> job that will replicate
 | 
|---|
| 660 |         the directory structure in this share using a tool like <command>rsync</command>. The use of
 | 
|---|
| 661 |         <command>rsync</command> for replication of the netlogon data is not critical to network security and is one
 | 
|---|
| 662 |         that can be manually managed given that the administrator will make all changes to the netlogon share as part
 | 
|---|
| 663 |         of a conscious move.
 | 
|---|
| 664 |         </para></listitem>
 | 
|---|
| 665 | 
 | 
|---|
| 666 | </itemizedlist>
 | 
|---|
| 667 | 
 | 
|---|
| 668 | <sect2>
 | 
|---|
| 669 | <title>Example Configuration</title>
 | 
|---|
| 670 | 
 | 
|---|
| 671 | <para>
 | 
|---|
| 672 | Finally, the BDC has to be capable of being found by the workstations. This can be done by configuring the
 | 
|---|
| 673 | Samba &smb.conf; file <smbconfsection name="[global]"/> section as shown in <link linkend="minim-bdc">Minimal
 | 
|---|
| 674 | Setup for Being a BDC</link>.
 | 
|---|
| 675 | </para>
 | 
|---|
| 676 | 
 | 
|---|
| 677 | <example id="minim-bdc">
 | 
|---|
| 678 | <title>Minimal Setup for Being a BDC</title>
 | 
|---|
| 679 | <smbconfblock>
 | 
|---|
| 680 | <smbconfoption name="workgroup">&example.workgroup;</smbconfoption>
 | 
|---|
| 681 | <smbconfoption name="passdb backend">ldapsam:ldap://slave-ldap.quenya.org</smbconfoption>
 | 
|---|
| 682 | <smbconfoption name="domain master">no</smbconfoption>
 | 
|---|
| 683 | <smbconfoption name="domain logons">yes</smbconfoption>
 | 
|---|
| 684 | <smbconfoption name="ldap suffix">dc=abmas,dc=biz</smbconfoption>
 | 
|---|
| 685 | <smbconfoption name="ldap user suffix">ou=Users</smbconfoption>
 | 
|---|
| 686 | <smbconfoption name="ldap group suffix">ou=Groups</smbconfoption>
 | 
|---|
| 687 | <smbconfoption name="ldap machine suffix">ou=Computers</smbconfoption>
 | 
|---|
| 688 | <smbconfoption name="ldap idmap suffix">ou=Idmap</smbconfoption>
 | 
|---|
| 689 | <smbconfoption name="ldap admin dn">cn=sambadmin,dc=quenya,dc=org</smbconfoption>
 | 
|---|
| 690 | <smbconfoption name="idmap backend">ldap:ldap://master-ldap.quenya.org</smbconfoption>
 | 
|---|
| 691 | <smbconfoption name="idmap uid">10000-20000</smbconfoption>
 | 
|---|
| 692 | <smbconfoption name="idmap gid">10000-20000</smbconfoption>
 | 
|---|
| 693 | </smbconfblock>
 | 
|---|
| 694 | </example>
 | 
|---|
| 695 | 
 | 
|---|
| 696 | <para>
 | 
|---|
| 697 | Fully documented working example network configurations using OpenLDAP and Samba
 | 
|---|
| 698 | as available in the <ulink url="http://www.samba.org/samba/docs/Samba3-ByExample">book</ulink> <quote>Samba-3
 | 
|---|
| 699 | by Example</quote> that may be obtained from local and on-line book stores.
 | 
|---|
| 700 | </para>
 | 
|---|
| 701 | 
 | 
|---|
| 702 | <para>
 | 
|---|
| 703 | <indexterm><primary>BDC</primary></indexterm>
 | 
|---|
| 704 | <indexterm><primary>NetBIOS</primary></indexterm>
 | 
|---|
| 705 | <indexterm><primary>group</primary></indexterm>
 | 
|---|
| 706 | <indexterm><primary>PDC</primary></indexterm>
 | 
|---|
| 707 | This configuration causes the BDC to register only the name MIDEARTH<1C> with the WINS server. This is
 | 
|---|
| 708 | not a problem, as the name MIDEARTH<1C> is a NetBIOS group name that is meant to be registered by more
 | 
|---|
| 709 | than one machine. The parameter <smbconfoption name="domain master">no</smbconfoption> forces the BDC not to
 | 
|---|
| 710 | register MIDEARTH<1B>, which is a unique NetBIOS name that is reserved for the PDC.
 | 
|---|
| 711 | </para>
 | 
|---|
| 712 | 
 | 
|---|
| 713 | <para>
 | 
|---|
| 714 | <indexterm><primary>idmap backend</primary></indexterm>
 | 
|---|
| 715 | <indexterm><primary>winbindd</primary></indexterm>
 | 
|---|
| 716 | <indexterm><primary>redirect</primary></indexterm>
 | 
|---|
| 717 | <indexterm><primary>winbindd</primary></indexterm>
 | 
|---|
| 718 | <indexterm><primary>LDAP database</primary></indexterm>
 | 
|---|
| 719 | <indexterm><primary>UID</primary></indexterm>
 | 
|---|
| 720 | <indexterm><primary>GID</primary></indexterm>
 | 
|---|
| 721 | <indexterm><primary>SID</primary></indexterm>
 | 
|---|
| 722 | <indexterm><primary>nss_ldap</primary></indexterm>
 | 
|---|
| 723 | The <parameter>idmap backend</parameter> will redirect the <command>winbindd</command> utility to use the LDAP
 | 
|---|
| 724 | database to store all mappings for Windows SIDs to  UIDs and GIDs for UNIX accounts in a repository that is
 | 
|---|
| 725 | shared. The BDC will however depend on local resolution of UIDs and GIDs via NSS and the
 | 
|---|
| 726 | <command>nss_ldap</command> utility.
 | 
|---|
| 727 | </para>
 | 
|---|
| 728 | 
 | 
|---|
| 729 | <note><para>
 | 
|---|
| 730 | <indexterm><primary>Server Type</primary><secondary>Domain Member</secondary></indexterm>
 | 
|---|
| 731 | <indexterm><primary>ID mapping</primary></indexterm>
 | 
|---|
| 732 | <indexterm><primary>domain member server</primary></indexterm>
 | 
|---|
| 733 | <indexterm><primary>idmap backend</primary></indexterm>
 | 
|---|
| 734 | Samba-3 has introduced a new ID mapping facility. One of the features of this facility is that it
 | 
|---|
| 735 | allows greater flexibility in how user and group IDs are handled in respect to NT domain user and group
 | 
|---|
| 736 | SIDs. One of the new facilities provides for explicitly ensuring that UNIX/Linux UID and GID values
 | 
|---|
| 737 | will be consistent on the PDC, all BDCs, and all domain member servers. The parameter that controls this
 | 
|---|
| 738 | is called <parameter>idmap backend</parameter>. Please refer to the man page for &smb.conf; for more information
 | 
|---|
| 739 | regarding its behavior.
 | 
|---|
| 740 | </para></note>
 | 
|---|
| 741 | 
 | 
|---|
| 742 | <para>
 | 
|---|
| 743 | <indexterm><primary>BDC</primary></indexterm>
 | 
|---|
| 744 | <indexterm><primary>winbindd</primary></indexterm>
 | 
|---|
| 745 | <indexterm><primary>domain member servers</primary></indexterm>
 | 
|---|
| 746 | The use of the <smbconfoption name="idmap backend">ldap:ldap://master.quenya.org</smbconfoption>
 | 
|---|
| 747 | option on a BDC only makes sense where ldapsam is used on a PDC. The purpose of an LDAP-based idmap backend is
 | 
|---|
| 748 | also to allow a domain member (without its own passdb backend) to use winbindd to resolve Windows network users
 | 
|---|
| 749 | and groups to common UID/GIDs. In other words, this option is generally intended for use on BDCs and on domain
 | 
|---|
| 750 | member servers.
 | 
|---|
| 751 | </para>
 | 
|---|
| 752 | 
 | 
|---|
| 753 | </sect2>
 | 
|---|
| 754 | </sect1>
 | 
|---|
| 755 | 
 | 
|---|
| 756 | <sect1>
 | 
|---|
| 757 | <title>Common Errors</title>
 | 
|---|
| 758 | 
 | 
|---|
| 759 | <para>
 | 
|---|
| 760 | <indexterm><primary>domain control</primary></indexterm>
 | 
|---|
| 761 | Domain control was a new area for Samba, but there are now many examples that we may refer to.
 | 
|---|
| 762 | Updated information will be published as they become available and may be found in later Samba releases or
 | 
|---|
| 763 | from the Samba Web <ulink url="http://samba.org">site</ulink>; refer in particular to the
 | 
|---|
| 764 | <filename>WHATSNEW.txt</filename> in the Samba release tarball. The book, <quote>Samba-3 by Example</quote>
 | 
|---|
| 765 | documents well tested and proven configuration examples. You can obtain a copy of this
 | 
|---|
| 766 | <ulink url="http://www.samba.org/samba/docs/Samba3-ByExample.pdf">book</ulink> for the Samba web site.
 | 
|---|
| 767 | </para>
 | 
|---|
| 768 | 
 | 
|---|
| 769 | <sect2>
 | 
|---|
| 770 | <title>Machine Accounts Keep Expiring</title>
 | 
|---|
| 771 | 
 | 
|---|
| 772 | <para>
 | 
|---|
| 773 | <indexterm><primary>Machine Trust Accounts</primary></indexterm>
 | 
|---|
| 774 | <indexterm><primary>passdb</primary></indexterm>
 | 
|---|
| 775 | <indexterm><primary>SAM</primary></indexterm>
 | 
|---|
| 776 | <indexterm><primary>Local Machine Trust Account</primary></indexterm>
 | 
|---|
| 777 | This problem will occur when the passdb (SAM) files are copied  from a central
 | 
|---|
| 778 | server but the local BDC is acting as a PDC. This results in the application of
 | 
|---|
| 779 | Local Machine Trust Account password updates to the local SAM. Such updates 
 | 
|---|
| 780 | are not copied back to the central server. The newer machine account password is then
 | 
|---|
| 781 | overwritten when the SAM is recopied from the PDC. The result is that the domain member machine
 | 
|---|
| 782 | on startup will find that its passwords do not match the one now in the database, and
 | 
|---|
| 783 | since the startup security check will now fail, this machine will not allow logon attempts
 | 
|---|
| 784 | to proceed and the account expiry error will be reported.
 | 
|---|
| 785 | </para>
 | 
|---|
| 786 | 
 | 
|---|
| 787 | <para>
 | 
|---|
| 788 | The solution is to use a more robust passdb backend, such as the ldapsam backend, setting up
 | 
|---|
| 789 | a slave LDAP server for each BDC and a master LDAP server for the PDC.
 | 
|---|
| 790 | </para>
 | 
|---|
| 791 | 
 | 
|---|
| 792 | </sect2>
 | 
|---|
| 793 | 
 | 
|---|
| 794 | <sect2>
 | 
|---|
| 795 | <title>Can Samba Be a Backup Domain Controller to an NT4 PDC?</title>
 | 
|---|
| 796 | 
 | 
|---|
| 797 | <para>
 | 
|---|
| 798 | <indexterm><primary>replication</primary><secondary>SAM</secondary></indexterm>
 | 
|---|
| 799 | <indexterm><primary>SAM</primary></indexterm>
 | 
|---|
| 800 | No. The native NT4 SAM replication protocols have not yet been fully implemented.
 | 
|---|
| 801 | </para>
 | 
|---|
| 802 | 
 | 
|---|
| 803 | <para>
 | 
|---|
| 804 | <indexterm><primary>BDC</primary></indexterm>
 | 
|---|
| 805 | <indexterm><primary>PDC</primary></indexterm>
 | 
|---|
| 806 | <indexterm><primary>logon requests</primary></indexterm>
 | 
|---|
| 807 | Can I get the benefits of a BDC with Samba?  Yes, but only to a Samba PDC.The
 | 
|---|
| 808 | main reason for implementing a BDC is availability. If the PDC is a Samba
 | 
|---|
| 809 | machine, a second Samba machine can be set up to service logon requests whenever
 | 
|---|
| 810 | the PDC is down.
 | 
|---|
| 811 | </para>
 | 
|---|
| 812 | 
 | 
|---|
| 813 | </sect2>
 | 
|---|
| 814 | 
 | 
|---|
| 815 | <sect2>
 | 
|---|
| 816 | <title>How Do I Replicate the smbpasswd File?</title>
 | 
|---|
| 817 | 
 | 
|---|
| 818 | <para>
 | 
|---|
| 819 | <indexterm><primary>replication</primary><secondary>SAM</secondary></indexterm>
 | 
|---|
| 820 | <indexterm><primary>smbpasswd</primary></indexterm>
 | 
|---|
| 821 | <indexterm><primary>SAM</primary></indexterm>
 | 
|---|
| 822 | Replication of the smbpasswd file is sensitive. It has to be done whenever changes
 | 
|---|
| 823 | to the SAM are made. Every user's password change is done in the smbpasswd file and
 | 
|---|
| 824 | has to be replicated to the BDC. So replicating the smbpasswd file very often is necessary.
 | 
|---|
| 825 | </para>
 | 
|---|
| 826 | 
 | 
|---|
| 827 | <para>
 | 
|---|
| 828 | <indexterm><primary>plaintext password</primary></indexterm>
 | 
|---|
| 829 | <indexterm><primary>ssh</primary></indexterm>
 | 
|---|
| 830 | <indexterm><primary>rsync</primary></indexterm>
 | 
|---|
| 831 | As the smbpasswd file contains plaintext password equivalents, it must not be
 | 
|---|
| 832 | sent unencrypted over the wire. The best way to set up smbpasswd replication from
 | 
|---|
| 833 | the PDC to the BDC is to use the utility rsync. rsync can use ssh as a transport.
 | 
|---|
| 834 | <command>ssh</command> itself can be set up to accept <emphasis>only</emphasis>
 | 
|---|
| 835 | <command>rsync</command> transfer without requiring the user to type a password.
 | 
|---|
| 836 | </para>
 | 
|---|
| 837 | 
 | 
|---|
| 838 | <para>
 | 
|---|
| 839 | <indexterm><primary>machine trust accounts</primary></indexterm>
 | 
|---|
| 840 | <indexterm><primary>LDAP</primary></indexterm>
 | 
|---|
| 841 | As said a few times before, use of this method is broken and flawed. Machine trust 
 | 
|---|
| 842 | accounts will go out of sync, resulting in a broken domain. This method is
 | 
|---|
| 843 | <emphasis>not</emphasis> recommended. Try using LDAP instead.
 | 
|---|
| 844 | </para>
 | 
|---|
| 845 | 
 | 
|---|
| 846 | </sect2>
 | 
|---|
| 847 | 
 | 
|---|
| 848 | <sect2>
 | 
|---|
| 849 | <title>Can I Do This All with LDAP?</title>
 | 
|---|
| 850 | 
 | 
|---|
| 851 | <para>
 | 
|---|
| 852 | <indexterm><primary>pdb_ldap</primary></indexterm>
 | 
|---|
| 853 | <indexterm><primary>LDAP</primary></indexterm>
 | 
|---|
| 854 | The simple answer is yes. Samba's pdb_ldap code supports binding to a replica
 | 
|---|
| 855 | LDAP server and will also follow referrals and rebind to the master if it ever
 | 
|---|
| 856 | needs to make a modification to the database. (Normally BDCs are read-only, so
 | 
|---|
| 857 | this will not occur often).
 | 
|---|
| 858 | </para>
 | 
|---|
| 859 | 
 | 
|---|
| 860 | </sect2>
 | 
|---|
| 861 | </sect1>
 | 
|---|
| 862 | </chapter>
 | 
|---|