Remove reference to XML passdb.
[samba.git] / docs / Samba3-HOWTO / TOSHARG-Passdb.xml
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="passdb">
4 <chapterinfo>
5         &author.jelmer;
6         &author.jht;
7         &author.jerry;
8         &author.jeremy;
9         <author>&person.gd;<contrib>LDAP updates</contrib></author>
10         <author>
11                 <firstname>Olivier (lem)</firstname><surname>Lemaire</surname>
12                 <affiliation>
13                         <orgname>IDEALX</orgname>
14                         <address><email>olem@IDEALX.org</email></address>
15                 </affiliation>
16         </author>
17         
18         <pubdate>May 24, 2003</pubdate>
19 </chapterinfo>
20 <title>Account Information Databases</title>
21
22 <para>
23 <indexterm><primary>account backends</primary></indexterm>
24 <indexterm><primary>password backends</primary></indexterm>
25 <indexterm><primary>scalability</primary></indexterm>
26 <indexterm><primary>ADS</primary></indexterm>
27 Samba-3 implements a new capability to work concurrently with multiple account backends.
28 The possible new combinations of password backends allows Samba-3 a degree of flexibility
29 and scalability that previously could be achieved only with MS Windows Active Directory (ADS).
30 This chapter describes the new functionality and how to get the most out of it.
31 </para>
32
33 <para>
34 <indexterm><primary>passdb backend</primary></indexterm>
35 <indexterm><primary>smbpasswd</primary></indexterm>
36 <indexterm><primary>tdbsam</primary></indexterm>
37 <indexterm><primary>ldapsam</primary></indexterm>
38 <indexterm><primary>LDAP</primary></indexterm>
39 <indexterm><primary>single repository</primary></indexterm>
40 The three passdb backends that are fully maintained (actively supported) by the Samba Team are:
41 <literal>smbpasswd</literal> (being obsoleted), <literal>tdbsam</literal> (a tdb-based binary file format),
42 and <literal>ldapsam</literal> (LDAP directory).  Of these, only the <literal>ldapsam</literal> backend
43 stores both POSIX (UNIX) and Samba user and group account information in a single repository. The
44 <literal>smbpasswd</literal> and <literal>tdbsam</literal> backends store only Samba user accounts.
45 </para>
46
47 <para>
48 In a strict sense, there are three supported account storage and access systems. One of these is considered
49 obsolete (smbpasswd). It is recommended to use the <literal>tdbsam</literal> method for all simple systems. Use
50 <literal>ldapsam</literal> for larger and more complex networks.
51 </para>
52
53 <para>
54 <indexterm><primary>passdb backend</primary></indexterm>
55 <indexterm><primary>account storage mechanisms</primary></indexterm>
56 <indexterm><primary>account storage system</primary></indexterm>
57 <indexterm><primary>user and trust accounts</primary></indexterm>
58 <indexterm><primary>machine trust accounts</primary></indexterm>
59 <indexterm><primary>computer accounts</primary></indexterm>
60 <indexterm><primary>interdomain trust accounts</primary></indexterm>
61 In a strict and literal sense, the passdb backends are account storage mechanisms (or methods) alone. The choice
62 of terminology can be misleading, however we are stuck with this choice of wording. This chapter documents the
63 nature of the account storage system with a focus on user and trust accounts. Trust accounts have two forms,
64 machine trust accounts (computer accounts) and interdomain trust accounts. These are all treated as user-like
65 entities.
66 </para>
67
68 <sect1>
69 <title>Features and Benefits</title>
70
71 <para>
72 Samba-3 provides for complete backward compatibility with Samba-2.2.x functionality
73 as follows:
74 <indexterm><primary>SAM backend</primary><secondary>smbpasswd</secondary></indexterm>
75 <indexterm><primary>SAM backend</primary><secondary>ldapsam_compat</secondary></indexterm>
76 <indexterm><primary>encrypted passwords</primary></indexterm>
77 </para>
78
79 <sect2>
80         <title>Backward Compatibility Account Storage Systems</title>
81
82 <variablelist>
83         <varlistentry><term>Plaintext</term>
84                 <listitem>
85                         <para>
86 <indexterm><primary>plaintext</primary></indexterm>
87 <indexterm><primary>plaintext authentication</primary></indexterm>
88 <indexterm><primary>/etc/passwd</primary></indexterm>
89 <indexterm><primary>/etc/shadow</primary></indexterm>
90 <indexterm><primary>PAM</primary></indexterm>
91                         This isn't really a backend at all, but is listed here for simplicity.  Samba can be configured to pass
92                         plaintext authentication requests to the traditional UNIX/Linux <filename>/etc/passwd</filename> and
93                         <filename>/etc/shadow</filename>-style subsystems.  On systems that have Pluggable Authentication Modules
94                         (PAM) support, all PAM modules are supported. The behavior is just as it was with Samba-2.2.x, and the
95                         protocol limitations imposed by MS Windows clients apply likewise. Please refer to <link
96                         linkend="passdbtech">Technical Information</link>, for more information regarding the limitations of plaintext
97                         password usage.
98                         </para>
99                 </listitem>
100         </varlistentry>
101
102         <varlistentry><term>smbpasswd</term>
103                 <listitem>
104                         <para>
105 <indexterm><primary>smbpasswd</primary></indexterm>
106 <indexterm><primary>LanMan passwords</primary></indexterm>
107 <indexterm><primary>NT-encrypted passwords</primary></indexterm>
108 <indexterm><primary>SAM</primary></indexterm>
109                         This option allows continued use of the <filename>smbpasswd</filename>
110                         file that maintains a plain ASCII (text) layout that includes the MS Windows
111                         LanMan and NT-encrypted passwords as well as a field that stores some
112                         account information. This form of password backend does not store any of
113                         the MS Windows NT/200x SAM (Security Account Manager) information required to
114                         provide the extended controls that are needed for more comprehensive 
115                         interoperation with MS Windows NT4/200x servers.
116                         </para>
117
118                         <para>
119                         This backend should be used only for backward compatibility with older
120                         versions of Samba. It may be deprecated in future releases.
121                         </para>
122                 </listitem>
123         </varlistentry>
124
125         <varlistentry><term>ldapsam_compat (Samba-2.2 LDAP Compatibility)</term>
126                 <listitem>
127                         <para>
128 <indexterm><primary>ldapsam_compat</primary></indexterm>
129 <indexterm><primary>Samba-2.2.x LDAP schema</primary></indexterm>
130 <indexterm><primary>OpenLDAP backend</primary></indexterm>
131                         There is a password backend option that allows continued operation with
132                         an existing OpenLDAP backend that uses the Samba-2.2.x LDAP schema extension.
133                         This option is provided primarily as a migration tool, although there is
134                         no reason to force migration at this time. This tool will eventually
135                         be deprecated.
136                         </para>
137                 </listitem>
138         </varlistentry>
139 </variablelist>
140
141 </sect2>
142
143 <sect2>
144 <title>New Account Storage Systems</title>
145
146 <para>
147 Samba-3 introduces a number of new password backend capabilities.
148 <indexterm><primary>SAM backend</primary><secondary>tdbsam</secondary></indexterm>
149 <indexterm><primary>SAM backend</primary><secondary>ldapsam</secondary></indexterm>
150 </para>
151
152 <variablelist>
153         <varlistentry><term>tdbsam</term>
154                 <listitem>
155                         <para>
156 <indexterm><primary>rich database backend</primary></indexterm>
157 <indexterm><primary>PDC</primary></indexterm>
158 <indexterm><primary>BDC</primary></indexterm>
159                         This backend provides a rich database backend for local servers. This
160                         backend is not suitable for multiple domain controllers (i.e., PDC + one
161                         or more BDC) installations.
162                         </para>
163
164                         <para>
165 <indexterm><primary>extended SAM</primary></indexterm>
166 <indexterm><primary>TDB</primary></indexterm>
167 <indexterm><primary>binary format TDB</primary></indexterm>
168 <indexterm><primary>trivial database</primary></indexterm>
169 <indexterm><primary>system access controls</primary></indexterm>
170 <indexterm><primary>MS Windows NT4/200x</primary></indexterm>
171                         The <emphasis>tdbsam</emphasis> password backend stores the old <emphasis>
172                         smbpasswd</emphasis> information plus the extended MS Windows NT/200x
173                         SAM information into a binary format TDB (trivial database) file.
174                         The inclusion of the extended information makes it possible for Samba-3
175                         to implement the same account and system access controls that are possible
176                         with MS Windows NT4/200x-based systems.
177                         </para>
178
179                         <para>
180 <indexterm><primary>simple operation</primary></indexterm>
181 <indexterm><primary>OpenLDAP</primary></indexterm>
182 <indexterm><primary>ADS</primary></indexterm>
183                         The inclusion of the <emphasis>tdbsam</emphasis> capability is a direct
184                         response to user requests to allow simple site operation without the overhead
185                         of the complexities of running OpenLDAP. It is recommended to use this only
186                         for sites that have fewer than 250 users. For larger sites or implementations,
187                         the use of OpenLDAP or of Active Directory integration is strongly recommended.
188                         </para>
189                 </listitem>
190         </varlistentry>
191
192         <varlistentry><term>ldapsam</term>
193                 <listitem>
194                         <para>
195 <indexterm><primary>rich directory backend</primary></indexterm>
196 <indexterm><primary>distributed account</primary></indexterm>
197                         This provides a rich directory backend for distributed account installation.    
198                         </para>
199
200                         <para>
201 <indexterm><primary>LDAP</primary></indexterm>
202 <indexterm><primary>OpenLDAP</primary></indexterm>
203 <indexterm><primary>Samba schema</primary></indexterm>
204 <indexterm><primary>schema file</primary></indexterm>
205 <indexterm><primary>examples/LDAP</primary></indexterm>
206                         Samba-3 has a new and extended LDAP implementation that requires configuration
207                         of OpenLDAP with a new format Samba schema. The new format schema file is
208                         included in the <filename class="directory">examples/LDAP</filename> directory of the Samba distribution.
209                         </para>
210
211                         <para>
212 <indexterm><primary>expands control abilities</primary></indexterm>
213 <indexterm><primary>profile</primary></indexterm>
214 <indexterm><primary>home directories</primary></indexterm>
215 <indexterm><primary>account access controls</primary></indexterm>
216 <indexterm><primary>greater scalability</primary></indexterm>
217                         The new LDAP implementation significantly expands the control abilities that
218                         were possible with prior versions of Samba. It is now possible to specify
219                         <quote>per-user</quote> profile settings, home directories, account access controls, and
220                         much more. Corporate sites will see that the Samba Team has listened to their
221                         requests both for capability and greater scalability.
222                         </para>
223                 </listitem>
224         </varlistentry>
225
226 </variablelist>
227
228 </sect2>
229
230 </sect1>
231
232 <sect1 id="passdbtech">
233         <title>Technical Information</title>
234
235         <para>
236 <indexterm><primary>plaintext passwords</primary></indexterm>
237 <indexterm><primary>encrypted passwords</primary></indexterm>
238         Old Windows clients send plaintext passwords over the wire. Samba can check these
239         passwords by encrypting them and comparing them to the hash stored in the UNIX user database.
240         </para>
241
242         <para>
243 <indexterm><primary>encrypted passwords</primary></indexterm>   
244 <indexterm><primary>LanMan</primary></indexterm>
245 <indexterm><primary>plaintext passwords</primary></indexterm>
246 <indexterm><primary>registry</primary></indexterm>
247         Newer Windows clients send encrypted passwords (LanMan and NT hashes) instead of plaintext passwords over
248         the wire. The newest clients will send only encrypted passwords and refuse to send plaintext passwords unless
249         their registry is tweaked.
250         </para>
251
252         <para>
253 <indexterm><primary>UNIX-style encrypted passwords</primary></indexterm>
254 <indexterm><primary>converted</primary></indexterm>
255         Many people ask why Samba cannot simply use the UNIX password database. Windows requires
256         passwords that are encrypted in its own format.  The UNIX passwords can't be converted to 
257         UNIX-style encrypted passwords. Because of that, you can't use the standard UNIX user
258         database, and you have to store the LanMan and NT hashes somewhere else.
259         </para>
260         
261         <para>
262 <indexterm><primary>differently encrypted passwords</primary></indexterm>
263 <indexterm><primary>profile</primary></indexterm>
264 <indexterm><primary>workstations</primary></indexterm>
265 <indexterm><primary>tdbsam</primary></indexterm>
266         In addition to differently encrypted passwords, Windows also stores certain data for each
267         user that is not stored in a UNIX user database: for example, workstations the user may logon from,
268         the location where the user's profile is stored, and so on. Samba retrieves and stores this
269         information using a <smbconfoption name="passdb backend"/>. Commonly available backends are LDAP,
270         tdbsam, and plain text file. For more information, see the man page for &smb.conf; regarding the 
271         <smbconfoption name="passdb backend"/> parameter.
272         </para>
273
274
275         <figure id="idmap-sid2uid">
276                 <title>IDMAP: Resolution of SIDs to UIDs.</title>
277                 <imagefile scale="40">idmap-sid2uid</imagefile>
278         </figure>
279
280         <para>
281         <indexterm><primary>SID</primary></indexterm>
282 <indexterm><primary>UID</primary></indexterm>
283 <indexterm><primary>SID</primary></indexterm>
284         The resolution of SIDs to UIDs is fundamental to correct operation of Samba. In both cases shown, if winbindd
285         is not running or cannot be contacted, then only local SID/UID resolution is possible. See <link
286         linkend="idmap-sid2uid">resolution of SIDs to UIDs</link> and <link linkend="idmap-uid2sid">resolution of UIDs
287         to SIDs</link> diagrams.
288         </para>
289
290         <figure id="idmap-uid2sid">
291                 <title>IDMAP: Resolution of UIDs to SIDs.</title>
292                 <imagefile scale="50">idmap-uid2sid</imagefile>
293         </figure>
294
295         <sect2>
296         <title>Important Notes About Security</title>
297                 
298                 <para>
299 <indexterm><primary>SMB password encryption</primary></indexterm>
300 <indexterm><primary>clear-text passwords</primary></indexterm>
301 <indexterm><primary>hashed password equivalent</primary></indexterm>
302 <indexterm><primary>LDAP</primary></indexterm>
303 <indexterm><primary>secret</primary></indexterm>
304                 The UNIX and SMB password encryption techniques seem similar on the surface. This
305                 similarity is, however, only skin deep. The UNIX scheme typically sends clear-text
306                 passwords over the network when logging in. This is bad. The SMB encryption scheme
307                 never sends the clear-text password over the network, but it does store the 16-byte 
308                 hashed values on disk. This is also bad. Why? Because the 16 byte hashed values
309                 are a <quote>password equivalent.</quote> You cannot derive the user's password from them, but
310                 they could potentially be used in a modified client to gain access to a server.
311                 This would require considerable technical knowledge on behalf of the attacker but
312                 is perfectly possible. You should therefore treat the data stored in whatever passdb
313                 backend you use (smbpasswd file, LDAP) as though it contained the clear-text
314                 passwords of all your users. Its contents must be kept secret, and the file should
315                 be protected accordingly.
316                 </para>
317                 
318                 <para>
319 <indexterm><primary>password scheme</primary></indexterm>
320 <indexterm><primary>plaintext passwords</primary></indexterm>
321 <indexterm><primary>compatible</primary></indexterm>
322                 Ideally, we would like a password scheme that involves neither plaintext passwords
323                 on the network nor plaintext passwords on disk. Unfortunately, this is not available because Samba is stuck with
324                 having to be compatible with other SMB systems (Windows NT, Windows for Workgroups, Windows 9x/Me).
325                 </para>
326
327                 <para>
328 <indexterm><primary>encrypted passwords</primary></indexterm>
329 <indexterm><primary>plaintext passwords</primary></indexterm>
330                 Windows NT 4.0 Service Pack 3 changed the default setting so plaintext passwords
331                 are disabled from being sent over the wire. This mandates either the use of encrypted
332                 password support or editing the Windows NT registry to re-enable plaintext passwords.
333                 </para>
334                 
335                 <para>
336 <indexterm><primary>domain security</primary></indexterm>
337 <indexterm><primary>domain environment</primary></indexterm>
338                 The following versions of Microsoft Windows do not support full domain security protocols,
339                 although they may log onto a domain environment:
340                 </para>
341
342                 <itemizedlist>
343                         <listitem><para>MS DOS Network client 3.0 with the basic network redirector installed.</para></listitem>
344                         <listitem><para>Windows 95 with the network redirector update installed.</para></listitem>
345                         <listitem><para>Windows 98 [Second Edition].</para></listitem>
346                         <listitem><para>Windows Me.</para></listitem>
347                 </itemizedlist>
348
349                 <note>
350                 <para>
351 <indexterm><primary>Windows XP Home</primary></indexterm>
352 <indexterm><primary>domain member</primary></indexterm>
353 <indexterm><primary>domain logons</primary></indexterm>
354                 MS Windows XP Home does not have facilities to become a domain member, and it cannot participate in domain logons.
355                 </para>
356                 </note>
357
358                 <para>
359                 The following versions of MS Windows fully support domain security protocols.
360                 </para>
361
362                 <itemizedlist>
363                         <listitem><para>Windows NT 3.5x.</para></listitem>
364                         <listitem><para>Windows NT 4.0.</para></listitem>
365                         <listitem><para>Windows 2000 Professional.</para></listitem>
366                         <listitem><para>Windows 200x Server/Advanced Server.</para></listitem>
367                         <listitem><para>Windows XP Professional.</para></listitem>
368                 </itemizedlist>
369                         
370                 <para>
371 <indexterm><primary>SMB/CIFS</primary></indexterm>
372 <indexterm><primary>authentication</primary></indexterm>
373 <indexterm><primary>challenge/response mechanis</primary></indexterm>
374 <indexterm><primary>clear-text</primary></indexterm>
375 <indexterm><primary>encrypted</primary></indexterm>
376 <indexterm><primary>negotiate</primary></indexterm>
377                 All current releases of Microsoft SMB/CIFS clients support authentication via the
378                 SMB challenge/response mechanism described here. Enabling clear-text authentication
379                 does not disable the ability of the client to participate in encrypted authentication.
380                 Instead, it allows the client to negotiate either plaintext or encrypted password
381                 handling.
382                 </para>
383
384                 <para>
385 <indexterm><primary>cached encrypted password</primary></indexterm>
386 <indexterm><primary>plaintext passwords</primary></indexterm>
387 <indexterm><primary>registry change</primary></indexterm>
388 <indexterm><primary>auto-reconnect</primary></indexterm>
389 <indexterm><primary>encrypted passwords</primary></indexterm>
390                 MS Windows clients will cache the encrypted password alone. Where plaintext passwords
391                 are re-enabled through the appropriate registry change, the plaintext password is never
392                 cached. This means that in the event that a network connections should become disconnected
393                 (broken), only the cached (encrypted) password will be sent to the resource server to
394                 effect an auto-reconnect. If the resource server does not support encrypted passwords, the
395                 auto-reconnect will fail. Use of encrypted passwords is strongly advised.
396                 </para>
397
398                 <sect3>
399                 <title>Advantages of Encrypted Passwords</title>
400
401                         <itemizedlist>
402                                 <listitem><para>
403 <indexterm><primary>passed across the network</primary></indexterm>
404 <indexterm><primary>network sniffer</primary></indexterm>
405 <indexterm><primary>SMB server</primary></indexterm>
406                                 Plaintext passwords are not passed across the network. Someone using a network sniffer
407                                 cannot just record passwords going to the SMB server.
408                                 </para></listitem>
409
410                                 <listitem><para>
411 <indexterm><primary>not stored anywhere</primary></indexterm>
412 <indexterm><primary>memory</primary></indexterm>
413 <indexterm><primary>disk</primary></indexterm>
414                                 Plaintext passwords are not stored anywhere in memory or on disk.
415                                 </para></listitem>
416                          
417                                 <listitem><para>
418 <indexterm><primary>encrypted passwords</primary></indexterm>
419 <indexterm><primary>user-level security</primary></indexterm>
420 <indexterm><primary>password prompt</primary></indexterm>
421 <indexterm><primary>SMB encryption</primary></indexterm>
422                                 Windows NT does not like talking to a server that does not support encrypted passwords. It will refuse to
423                                 browse the server if the server is also in user-level security mode. It will insist on prompting the user for
424                                 the password on each connection, which is very annoying. The only thing you can do to stop this is to use SMB
425                                 encryption.
426                                 </para></listitem>
427
428                                 <listitem><para>
429 <indexterm><primary>encrypted password</primary></indexterm>
430 <indexterm><primary>automatic reconnects</primary></indexterm>
431                                 Encrypted password support allows automatic share (resource) reconnects.
432                                 </para></listitem>
433
434                                 <listitem><para>
435 <indexterm><primary>PDC</primary></indexterm>
436 <indexterm><primary>BDC</primary></indexterm>
437                                 Encrypted passwords are essential for PDC/BDC operation.
438                                 </para></listitem>
439                         </itemizedlist>
440                 </sect3>
441
442
443                 <sect3>
444                 <title>Advantages of Non-Encrypted Passwords</title>
445
446                         <itemizedlist>
447                                 <listitem><para>
448 <indexterm><primary>cached in memory</primary></indexterm>
449                                 Plaintext passwords are not kept on disk and are not cached in memory.
450                                 </para></listitem>
451                                 
452                                 <listitem><para>
453 <indexterm><primary>Login</primary></indexterm>
454 <indexterm><primary>FTP</primary></indexterm>
455                                 Plaintext passwords use the same password file as other UNIX services, such as Login and FTP.
456                                 </para></listitem>
457                                 
458                                 <listitem><para>
459 <indexterm><primary>Telnet</primary></indexterm>
460 <indexterm><primary>FTP</primary></indexterm>
461                                 Use of other services (such as Telnet and FTP) that send plaintext passwords over
462                                 the network makes sending them for SMB not such a big deal.
463                                 </para></listitem>
464                         </itemizedlist>
465                 </sect3>
466         </sect2>
467
468         <sect2>
469         <title>Mapping User Identifiers between MS Windows and UNIX</title>
470
471         <para>
472 <indexterm><primary>UID</primary></indexterm>
473 <indexterm><primary>SID</primary></indexterm>
474 <indexterm><primary>mapping</primary></indexterm>
475         Every operation in UNIX/Linux requires a user identifier (UID), just as in
476         MS Windows NT4/200x this requires a security identifier (SID). Samba provides
477         two means for mapping an MS Windows user to a UNIX/Linux UID.
478         </para>
479
480         <para>
481 <indexterm><primary>Samba SAM</primary></indexterm>
482 <indexterm><primary>SAM</primary></indexterm>
483 <indexterm><primary>UID</primary></indexterm>
484 <indexterm><primary>account information database</primary></indexterm>
485 <indexterm><primary>local user account</primary></indexterm>
486         First, all Samba SAM database accounts require a UNIX/Linux UID that the account will map to. As users are
487         added to the account information database, Samba will call the <smbconfoption name="add user script"/>
488         interface to add the account to the Samba host OS. In essence all accounts in the local SAM require a local
489         user account.
490         </para>
491
492         <para>
493         <indexterm><primary>idmap uid</primary></indexterm>
494         <indexterm><primary>idmap gid</primary></indexterm>
495         <indexterm><primary>UID</primary></indexterm>
496         <indexterm><primary>SAM</primary></indexterm>
497         <indexterm><primary>foreign domain</primary></indexterm>
498         <indexterm><primary>non-member Windows client</primary></indexterm>
499         <indexterm><primary>SID</primary></indexterm>
500         The second way to map Windows SID to UNIX UID is via the <emphasis>idmap uid</emphasis> and
501         <emphasis>idmap gid</emphasis> parameters in &smb.conf;.  Please refer to the man page for information about
502         these parameters.  These parameters are essential when mapping users from a remote (non-member Windows client
503         or a member of a foreign domain) SAM server.
504         </para>
505
506         </sect2>
507
508         <sect2 id="idmapbackend">
509         <title>Mapping Common UIDs/GIDs on Distributed Machines</title>
510
511         <para>
512 <indexterm><primary>UID</primary></indexterm>
513 <indexterm><primary>GID</primary></indexterm>
514 <indexterm><primary>BDC</primary></indexterm>
515 <indexterm><primary>domain member servers</primary></indexterm>
516 <indexterm><primary>NFS</primary></indexterm>
517 <indexterm><primary>rsync</primary></indexterm>
518         Samba-3 has a special facility that makes it possible to maintain identical UIDs and GIDs
519         on all servers in a distributed network. A distributed network is one where there exists
520         a PDC, one or more BDCs, and/or one or more domain member servers. Why is this important?
521         This is important if files are being shared over more than one protocol (e.g., NFS) and where
522         users are copying files across UNIX/Linux systems using tools such as <command>rsync</command>.
523         </para>
524
525         <para>
526 <indexterm><primary>LDAP-based</primary></indexterm>
527 <indexterm><primary>idmap backend</primary></indexterm>
528 <indexterm><primary>UID</primary></indexterm>
529 <indexterm><primary>GID</primary></indexterm>
530 <indexterm><primary>LDAP</primary></indexterm>
531 <indexterm><primary>SAM backend</primary></indexterm>
532 <indexterm><primary>LDAP idmap Backend</primary></indexterm>
533         <indexterm><primary>idmap backend</primary></indexterm>
534         The special facility is enabled using a parameter called <parameter>idmap backend</parameter>.
535         The default setting for this parameter is an empty string. Technically it is possible to use
536         an LDAP-based idmap backend for UIDs and GIDs, but it makes most sense when this is done for
537         network configurations that also use LDAP for the SAM backend.
538         <link linkend="idmapbackendexample">Example Configuration with the LDAP idmap Backend</link>
539         shows that configuration.
540         </para>
541
542 <indexterm><primary>SAM backend</primary><secondary>ldapsam</secondary></indexterm>
543 <example id="idmapbackendexample">
544 <title>Example Configuration with the LDAP idmap Backend</title>
545 <smbconfblock>
546 <smbconfsection name="[global]"/>
547 <smbconfoption name="idmap backend">ldap:ldap://ldap-server.quenya.org:636</smbconfoption>
548 <smbconfcomment>Alternatively, this could be specified as:</smbconfcomment>
549 <smbconfoption name="idmap backend">ldap:ldaps://ldap-server.quenya.org</smbconfoption>
550 </smbconfblock>
551 </example>
552
553         <para>
554 <indexterm><primary>LDAP backends</primary></indexterm>
555 <indexterm><primary>PADL Software</primary></indexterm>
556         A network administrator who wants to make significant use of LDAP backends will sooner or later be
557         exposed to the excellent work done by PADL Software. PADL <ulink url="http://www.padl.com"/> have
558         produced and released to open source an array of tools that might be of interest. These tools include:
559         </para>
560
561         <itemizedlist>
562                 <listitem>
563                 <para>
564 <indexterm><primary>nss_ldap</primary></indexterm>
565 <indexterm><primary>NSS</primary></indexterm>
566 <indexterm><primary>AIX</primary></indexterm>
567 <indexterm><primary>Linux</primary></indexterm>
568 <indexterm><primary>LDAP</primary></indexterm>
569 <indexterm><primary>Solaris</primary></indexterm>
570 <indexterm><primary>UID</primary></indexterm>
571 <indexterm><primary>GID</primary></indexterm>
572                 <emphasis>nss_ldap:</emphasis> An LDAP name service switch (NSS) module to provide native
573                 name service support for AIX, Linux, Solaris, and other operating systems. This tool
574                 can be used for centralized storage and retrieval of UIDs and GIDs.
575                 </para>
576                 </listitem>
577
578                 <listitem>
579                 <para>
580 <indexterm><primary>pam_ldap</primary></indexterm>
581 <indexterm><primary>PAM</primary></indexterm>
582 <indexterm><primary>LDAP</primary></indexterm>
583 <indexterm><primary>access authentication</primary></indexterm>
584                 <emphasis>pam_ldap:</emphasis> A PAM module that provides LDAP integration for UNIX/Linux
585                 system access authentication.
586                 </para>
587                 </listitem>
588
589                 <listitem>
590                 <para>
591 <indexterm><primary>idmap_ad</primary></indexterm>
592 <indexterm><primary>IDMAP backend</primary></indexterm>
593 <indexterm><primary>RFC 2307</primary></indexterm>
594 <indexterm><primary>PADL</primary></indexterm>
595                 <emphasis>idmap_ad:</emphasis> An IDMAP backend that supports the Microsoft Services for
596                 UNIX RFC 2307 schema available from the PADL Web 
597                 <ulink url="http://www.padl.com/download/xad_oss_plugins.tar.gz">site</ulink>.
598                 </para>
599                 </listitem>
600         </itemizedlist>
601
602         </sect2>
603
604         <sect2>
605         <title>Comments Regarding LDAP</title>
606
607         <para>
608 <indexterm><primary>LDAP</primary><secondary>directories</secondary></indexterm>
609 <indexterm><primary>architecture</primary></indexterm>
610 <indexterm><primary>FIM</primary></indexterm>
611 <indexterm><primary>SSO</primary></indexterm>
612         There is much excitement and interest in LDAP directories in the information technology world
613         today. The LDAP architecture was designed to be highly scalable. It was also designed for
614         use across a huge number of potential areas of application encompassing a wide range of operating
615         systems and platforms. LDAP technologies are at the heart of the current generations of Federated
616         Identity Management (FIM) solutions that can underlie a corporate Single Sign-On (SSO) environment.
617         </para>
618
619         <para>
620 <indexterm><primary>LDAP</primary></indexterm>
621 <indexterm><primary>eDirectory</primary></indexterm>
622 <indexterm><primary>ADS</primary></indexterm>
623 <indexterm><primary>authentication</primary></indexterm>
624         LDAP implementations have been built across a wide variety of platforms. It lies at the core of Microsoft
625         Windows Active Directory services (ADS), Novell's eDirectory, as well as many others. Implementation of the
626         directory services LDAP involves interaction with legacy as well as new generation applications, all of which
627         depend on some form of authentication services.
628         </para>
629
630         <para>
631 <indexterm><primary>LDAP directory</primary></indexterm>
632 <indexterm><primary>authentication</primary></indexterm>
633 <indexterm><primary>access controls</primary></indexterm>
634 <indexterm><primary>intermediate tools</primary></indexterm>
635 <indexterm><primary>middle-ware</primary></indexterm>
636 <indexterm><primary>central environment</primary></indexterm>
637 <indexterm><primary>infrastructure</primary></indexterm>
638 <indexterm><primary>login shells</primary></indexterm>
639 <indexterm><primary>mail</primary></indexterm>
640 <indexterm><primary>messaging systems</primary></indexterm>
641 <indexterm><primary>quota controls</primary></indexterm>
642 <indexterm><primary>printing systems</primary></indexterm>
643 <indexterm><primary>DNS servers</primary></indexterm>
644 <indexterm><primary>DHCP servers</primary></indexterm>
645         UNIX services can utilize LDAP directory information for authentication and access controls
646         through intermediate tools and utilities. The total environment that consists of the LDAP directory
647         and the middle-ware tools and utilities makes it possible for all user access to the UNIX platform
648         to be managed from a central environment and yet distributed to wherever the point of need may
649         be physically located. Applications that benefit from this infrastructure include: UNIX login 
650         shells, mail and messaging systems, quota controls, printing systems, DNS servers, DHCP servers,
651         and also Samba.
652         </para>
653
654         <para>
655 <indexterm><primary>LDAP</primary></indexterm>
656 <indexterm><primary>passdb backend</primary></indexterm>
657 <indexterm><primary>scalable</primary></indexterm>
658 <indexterm><primary>SAM backend</primary></indexterm>
659 <indexterm><primary>LDAP directory</primary></indexterm>
660 <indexterm><primary>management costs</primary></indexterm>
661         Many sites are installing LDAP for the first time in order to provide a scalable passdb backend
662         for Samba. Others are faced with the need to adapt an existing LDAP directory to new uses such
663         as for the Samba SAM backend. Whatever your particular need and attraction to Samba may be,
664         decisions made in respect of the design of the LDAP directory structure and its implementation
665         are of a durable nature for the site. These have far-reaching implications that affect long-term
666         information systems management costs.
667         </para>
668
669         <para>
670 <indexterm><primary>LDAP deployment</primary></indexterm>
671 <indexterm><primary>Directory Information Tree</primary><see>DIT</see></indexterm>
672         Do not rush into an LDAP deployment. Take the time to understand how the design of the Directory
673         Information Tree (DIT) may impact current and future site needs, as well as the ability to meet
674         them. The way that Samba SAM information should be stored within the DIT varies from site to site
675         and with each implementation new experience is gained. It is well understood by LDAP veterans that
676         first implementations create awakening, second implementations of LDAP create fear, and 
677         third-generation deployments bring peace and tranquility.
678         </para>
679
680         <sect3>
681         <title>Caution Regarding LDAP and Samba</title>
682
683         <para>
684 <indexterm><primary>POSIX identity</primary></indexterm>
685 <indexterm><primary>networking environment</primary></indexterm>
686 <indexterm><primary>user accounts</primary></indexterm>
687 <indexterm><primary>group accounts</primary></indexterm>
688 <indexterm><primary>machine trust accounts</primary></indexterm>
689 <indexterm><primary>interdomain trust accounts</primary></indexterm>
690 <indexterm><primary>intermediate information</primary></indexterm>
691         Samba requires UNIX POSIX identity information as well as a place to store information that is
692         specific to Samba and the Windows networking environment. The most used information that must
693         be dealt with includes: user accounts, group accounts, machine trust accounts, interdomain
694         trust accounts, and intermediate information specific to Samba internals.
695         </para>
696
697         <para>
698 <indexterm><primary>deployment guidelines</primary></indexterm>
699 <indexterm><primary>HOWTO documents</primary></indexterm>
700 <indexterm><primary>LDAP</primary></indexterm>
701         The example deployment guidelines in this book, as well as other books and HOWTO documents
702         available from the internet may not fit with established directory designs and implementations.
703         The existing DIT may not be able to accommodate the simple information layout proposed in common
704         sources. Additionally, you may find that the common scripts and tools that are used to provision
705         the LDAP directory for use with Samba may not suit your needs.
706         </para>
707
708         <para>
709 <indexterm><primary>existing LDAP DIT</primary></indexterm>
710         It is not uncommon, for sites that have existing LDAP DITs to find necessity to generate a
711         set of site-specific scripts and utilities to make it possible to deploy Samba within the
712         scope of site operations. The way that user and group accounts are distributed throughout
713         the DIT may make this a challenging matter. The solution will, of course, be rewarding, but
714         the journey to it may be challenging. Take time to understand site needs and do not rush
715         into deployment.
716         </para>
717
718         <para>
719 <indexterm><primary>scripts</primary></indexterm>
720 <indexterm><primary>tools</primary></indexterm>
721         Above all, do not blindly use scripts and tools that are not suitable for your site. Check
722         and validate all scripts before you execute them to make sure that the existing infrastructure
723         will not be damaged by inadvertent use of an inappropriate tool.
724         </para>
725
726         </sect3>
727
728         </sect2>
729
730         <sect2>
731         <title>LDAP Directories and Windows Computer Accounts</title>
732
733                 <para>
734 <indexterm><primary>turnkey solution</primary></indexterm>
735 <indexterm><primary>LDAP.</primary></indexterm>
736 <indexterm><primary>frustrating experience</primary></indexterm>
737                 Samba doesn't provide a turnkey solution to LDAP. It is best to deal with the design and
738                 configuration of an LDAP directory prior to integration with Samba. A working knowledge
739                 of LDAP makes Samba integration easy, and the lack of a working knowledge of LDAP can make
740                 it a frustrating experience.
741                 </para>
742
743                 <para>
744 <indexterm><primary>computer accounts</primary></indexterm>
745 <indexterm><primary>machine accounts</primary></indexterm>
746 <indexterm><primary>LDAP</primary></indexterm>
747                 Computer (machine) accounts can be placed wherever you like in an LDAP directory subject
748                 to some constraints that are described in this chapter.
749                 </para>
750
751                 <para>
752 <indexterm><primary>POSIX</primary></indexterm>
753 <indexterm><primary>sambaSamAccount</primary></indexterm>
754 <indexterm><primary>computer accounts</primary></indexterm>
755 <indexterm><primary>machine accounts</primary></indexterm>
756 <indexterm><primary>Windows NT4/200X</primary></indexterm>
757 <indexterm><primary>user account</primary></indexterm>
758 <indexterm><primary>trust accounts</primary></indexterm>
759                 The POSIX and sambaSamAccount components of computer (machine) accounts are both used by Samba.
760                 Thus, machine accounts are treated inside Samba in the same way that Windows NT4/200X treats
761                 them. A user account and a machine account are indistinquishable from each other, except that
762                 the machine account ends in a $ character, as do trust accounts.
763                 </para>
764
765                 <para>
766 <indexterm><primary>user</primary></indexterm>
767 <indexterm><primary>group</primary></indexterm>
768 <indexterm><primary>machine</primary></indexterm>
769 <indexterm><primary>trust</primary></indexterm>
770 <indexterm><primary>UID</primary></indexterm>
771                 The need for Windows user, group, machine, trust, and other accounts to be tied to a valid UNIX
772                 UID is a design decision that was made a long way back in the history of Samba development. It
773                 is unlikely that this decision will be reversed or changed during the remaining life of the
774                 Samba-3.x series.
775                 </para>
776
777                 <para>
778 <indexterm><primary>UID</primary></indexterm>
779 <indexterm><primary>SID</primary></indexterm>
780 <indexterm><primary>NSS</primary></indexterm>
781                 The resolution of a UID from the Windows SID is achieved within Samba through a mechanism that
782                 must refer back to the host operating system on which Samba is running. The NSS is the preferred
783                 mechanism that shields applications (like Samba) from the need to know everything about every
784                 host OS it runs on.
785                 </para>
786
787                 <para>
788 <indexterm><primary>UID</primary></indexterm>
789 <indexterm><primary>passwd</primary></indexterm>
790 <indexterm><primary>shadow</primary></indexterm>
791 <indexterm><primary>group</primary></indexterm>
792 <indexterm><primary>NSS</primary></indexterm>
793 <indexterm><primary>winbindd</primary></indexterm>
794 <indexterm><primary>LDAP</primary></indexterm>
795                 Samba asks the host OS to provide a UID via the <quote>passwd</quote>, <quote>shadow</quote>,
796                 and <quote>group</quote> facilities in the NSS control (configuration) file. The best tool
797                 for achieving this is left up to the UNIX administrator to determine. It is not imposed by
798                 Samba. Samba provides winbindd with its support libraries as one method. It is
799                 possible to do this via LDAP, and for that Samba provides the appropriate hooks so that
800                 all account entities can be located in an LDAP directory.
801                 </para>
802
803                 <para>
804 <indexterm><primary>PADL</primary></indexterm>
805 <indexterm><primary>nss_ldap</primary></indexterm>
806 <indexterm><primary>UID</primary></indexterm>
807 <indexterm><primary>LDAP</primary></indexterm>
808 <indexterm><primary>documentation</primary></indexterm>
809                 For many the weapon of choice is to use the PADL nss_ldap utility. This utility must
810                 be configured so that computer accounts can be resolved to a POSIX/UNIX account UID. That
811                 is fundamentally an LDAP design question.  The information provided on the Samba list and
812                 in the documentation is directed at providing working examples only. The design
813                 of an LDAP directory is a complex subject that is beyond the scope of this documentation.
814                 </para>
815
816         </sect2>
817
818 </sect1>
819
820 <sect1 id="acctmgmttools">
821 <title>Account Management Tools</title>
822
823 <para>
824 <indexterm><primary>pdbedit</primary></indexterm>
825 <indexterm><primary>machine accounts</primary></indexterm>
826 <indexterm><primary>management tools</primary></indexterm>
827 Samba provides two tools for management of user and machine accounts:
828 <command>smbpasswd</command> and <command>pdbedit</command>. 
829 </para>
830
831 <para>
832 <indexterm><primary>pdbedit</primary></indexterm>
833 <indexterm><primary>password aging</primary></indexterm>
834 <indexterm><primary>failed logins</primary></indexterm>
835 The <command>pdbedit</command> can be used to manage account policies in addition to
836 Samba user account information. The policy management capability is used to administer
837 domain default settings for password aging and management controls to handle failed login
838 attempts.
839 </para>
840
841 <para>
842 <indexterm><primary>smbpasswd</primary></indexterm>
843 <indexterm><primary>storage mechanism</primary></indexterm>
844 <indexterm><primary>SambaSAMAccount</primary></indexterm>
845 <indexterm><primary>net</primary></indexterm>
846 Some people are confused when reference is made to <literal>smbpasswd</literal> because the
847 name refers to a storage mechanism for SambaSAMAccount information, but it is also the name
848 of a utility tool. That tool is destined to eventually be replaced by new functionality that
849 is being added to the <command>net</command> toolset (see <link linkend="NetCommand">the Net Command</link>.
850 </para>
851
852         <sect2>
853         <title>The <command>smbpasswd</command> Tool</title>
854         
855                 <para>
856 <indexterm><primary>smbpasswd</primary></indexterm>
857 <indexterm><primary>passwd</primary></indexterm>
858 <indexterm><primary>yppasswd</primary></indexterm>
859 <indexterm><primary>passdb backend</primary></indexterm>
860 <indexterm><primary>storage methods</primary></indexterm>
861                 The <command>smbpasswd</command> utility is similar to the <command>passwd</command>
862                 and <command>yppasswd</command> programs. It maintains the two 32 byte password
863                 fields in the passdb backend. This utility operates independently of the actual
864                 account and password storage methods used (as specified by the <parameter>passdb
865                 backend</parameter> in the &smb.conf; file.
866                 </para>
867
868                 <para>
869 <indexterm><primary>smbpasswd</primary></indexterm>
870 <indexterm><primary>client-server mode</primary></indexterm>
871                 <command>smbpasswd</command> works in a client-server mode where it contacts the
872                 local smbd to change the user's password on its behalf. This has enormous benefits.
873                 </para>
874
875                 <para>
876 <indexterm><primary>smbpasswd</primary></indexterm>
877 <indexterm><primary>change passwords</primary></indexterm>
878                 <command>smbpasswd</command> has the capability to change passwords on Windows NT
879                 servers (this only works when the request is sent to the NT PDC if changing an NT
880                 domain user's password).
881                 </para>
882
883                 <para>
884                 <indexterm><primary>user management</primary></indexterm>
885                 <indexterm><primary>user account</primary><secondary>Adding/Deleting</secondary></indexterm>
886                 <command>smbpasswd</command> can be used to:
887                 </para>
888
889                 <itemizedlist>
890                         <listitem><para><emphasis>add</emphasis> user or machine accounts.</para></listitem>
891                         <listitem><para><emphasis>delete</emphasis> user or machine accounts.</para></listitem>
892                         <listitem><para><emphasis>enable</emphasis> user or machine accounts.</para></listitem>
893                         <listitem><para><emphasis>disable</emphasis> user or machine accounts.</para></listitem>
894                         <listitem><para><emphasis>set to NULL</emphasis> user passwords.</para></listitem>
895                         <listitem><para><emphasis>manage</emphasis> interdomain trust accounts.</para></listitem>
896                 </itemizedlist>
897                 
898                 <para>
899                 To run smbpasswd as a normal user, just type:
900                 </para>
901                 
902                 <para>
903 <screen>
904 &prompt;<userinput>smbpasswd</userinput>
905 <prompt>Old SMB password: </prompt><userinput><replaceable>secret</replaceable></userinput>
906 </screen>
907                 For <replaceable>secret</replaceable>, type the old value here or press return if
908                 there is no old password.
909 <screen>
910 <prompt>New SMB Password: </prompt><userinput><replaceable>new secret</replaceable></userinput>
911 <prompt>Repeat New SMB Password: </prompt><userinput><replaceable>new secret</replaceable></userinput>
912 </screen>
913                 </para>
914                 
915                 <para>
916                 If the old value does not match the current value stored for that user, or the two
917                 new values do not match each other, then the password will not be changed.
918                 </para>
919                 
920                 <para>
921 <indexterm><primary>SMB password</primary></indexterm>
922                 When invoked by an ordinary user, the command will allow only the user to change his or her own
923                 SMB password.
924                 </para>
925                 
926                 <para>
927 <indexterm><primary>smbpasswd</primary></indexterm>
928 <indexterm><primary>SMB password</primary></indexterm>
929                 When run by root, <command>smbpasswd</command> may take an optional argument specifying
930                 the username whose SMB password you wish to change. When run as root, <command>smbpasswd</command>
931                 does not prompt for or check the old password value, thus allowing root to set passwords 
932                 for users who have forgotten their passwords.
933                 </para>
934                 
935                 <para>
936 <indexterm><primary>smbpasswd</primary></indexterm>
937 <indexterm><primary>passwd</primary></indexterm>
938 <indexterm><primary>yppasswd</primary></indexterm>
939 <indexterm><primary>change capabilities</primary></indexterm>
940                 <command>smbpasswd</command> is designed to work in the way familiar to UNIX
941                 users who use the <command>passwd</command> or <command>yppasswd</command> commands.
942                 While designed for administrative use, this tool provides essential user-level
943                 password change capabilities.
944                 </para>
945
946                 <para>
947 <indexterm><primary>smbpasswd</primary></indexterm>
948                 For more details on using <command>smbpasswd</command>, refer to the man page (the
949                 definitive reference).
950                 </para>
951         </sect2>
952
953         <sect2 id="pdbeditthing">
954         <title>The <command>pdbedit</command> Tool</title>
955
956                 <para>
957                 <indexterm><primary>pdbedit</primary></indexterm>
958                 <indexterm><primary>User Management</primary></indexterm>
959                 <indexterm><primary>account policy</primary></indexterm>
960                 <indexterm><primary>User Accounts</primary><secondary>Adding/Deleting</secondary></indexterm>
961                 <command>pdbedit</command> is a tool that can be used only by root. It is used to
962                 manage the passdb backend, as well as domain-wide account policy settings. <command>pdbedit</command> 
963                 can be used to:
964                 </para>
965
966                 <itemizedlist>
967                         <listitem><para>add, remove, or modify user accounts.</para></listitem>
968                         <listitem><para>list user accounts.</para></listitem>
969                         <listitem><para>migrate user accounts.</para></listitem>
970                         <listitem><para>migrate group accounts.</para></listitem>
971                         <listitem><para>manage account policies.</para></listitem>
972                         <listitem><para>manage domain access policy settings.</para></listitem>
973                 </itemizedlist>
974
975                 <para>
976                 <indexterm><primary>Sarbanes-Oxley</primary></indexterm>
977                 Under the terms of the Sarbanes-Oxley Act of 2002, American businesses and organizations are mandated to
978                 implement a series of <literal>internal controls</literal> and procedures to communicate, store,
979                 and protect financial data. The Sarbanes-Oxley Act has far reaching implications in respect of:
980                 </para>
981
982                 <orderedlist>
983                         <listitem><para>Who has access to information systems that store financial data.</para></listitem>
984                         <listitem><para>How personal and financial information is treated among employees and business
985                                 partners.</para></listitem>
986                         <listitem><para>How security vulnerabilities are managed.</para></listitem>
987                         <listitem><para>Security and patch level maintenance for all information systems.</para></listitem>
988                         <listitem><para>How information systems changes are documented and tracked.</para></listitem>
989                         <listitem><para>How information access controls are implemented and managed.</para></listitem>
990                         <listitem><para>Auditability of all information systems in respect of change and security.</para></listitem>
991                         <listitem><para>Disciplinary procedures and controls to ensure privacy.</para></listitem>
992                 </orderedlist>
993
994                 <para>
995                 <indexterm><primary>accountability</primary></indexterm>
996                 <indexterm><primary>compliance</primary></indexterm>
997                 In short, the Sarbanes-Oxley Act of 2002 is an instrument that enforces accountability in respect of
998                 business related information systems so as to ensure the compliance of all information systems that
999                 are used to store personal information and particularly for financial records processing. Similar
1000                 accountabilities are being demanded around the world.
1001                 </para>
1002
1003                 <para>
1004                 <indexterm><primary>laws</primary></indexterm>
1005                 <indexterm><primary>regulations</primary></indexterm>
1006                 <indexterm><primary>pdbedit</primary></indexterm>
1007                 <indexterm><primary>access controls</primary></indexterm>
1008                 <indexterm><primary>manage accounts</primary></indexterm>
1009                 The need to be familiar with the Samba tools and facilities that permit information systems operation
1010                 in compliance with government laws and regulations is clear to all. The <command>pdbedit</command> is
1011                 currently the only Samba tool that provides the capacity to manage account and systems access controls
1012                 and policies. During the remaining life-cycle of the Samba-3 series it is possible the new tools may
1013                 be implemented to aid in this important area.
1014                 </para>
1015
1016                 <para>
1017                 Domain global policy controls available in Windows NT4 compared with Samba
1018                 is shown in <link linkend="policycontrols">NT4 Domain v's Samba Policy Controls</link>.
1019                 </para>
1020
1021                 <table id="policycontrols">
1022                 <title>NT4 Domain v's Samba Policy Controls</title>
1023             <tgroup cols="5">
1024                 <colspec align="left" colwidth="2*"/>
1025                 <colspec align="left" colwidth="2*"/>
1026                 <colspec align="center" colwidth="1*"/>
1027                 <colspec align="center" colwidth="1*"/>
1028                 <colspec align="center" colwidth="1*"/>
1029                 <thead>
1030                     <row>
1031                         <entry><para>NT4 policy Name</para></entry>
1032                         <entry><para>Samba Policy Name</para></entry>
1033                         <entry><para>NT4 Range</para></entry>
1034                         <entry><para>Samba Range</para></entry>
1035                         <entry><para>Samba Default</para></entry>
1036                     </row>
1037                 </thead>
1038                 <tbody>
1039                     <row>
1040                                         <entry><para>Maximum Password Age</para></entry>
1041                                         <entry><para>maximum password age</para></entry>
1042                                         <entry><para>0 - 999 (days)</para></entry>
1043                                         <entry><para>0 - 4294967295 (sec)</para></entry>
1044                                         <entry><para>4294967295</para></entry>
1045                     </row>
1046                     <row>
1047                                         <entry><para>Minimum Password Age</para></entry>
1048                                         <entry><para>minimum password age</para></entry>
1049                                         <entry><para>0 - 999 (days)</para></entry>
1050                                         <entry><para>0 - 4294967295 (sec)</para></entry>
1051                                         <entry><para>0</para></entry>
1052                     </row>
1053                     <row>
1054                                         <entry><para>Mimimum Password Length</para></entry>
1055                                         <entry><para>min password length</para></entry>
1056                                         <entry><para>1 - 14 (Chars)</para></entry>
1057                                         <entry><para>0 - 4294967295 (Chars)</para></entry>
1058                                         <entry><para>5</para></entry>
1059                     </row>
1060                     <row>
1061                                         <entry><para>Password Uniqueness</para></entry>
1062                                         <entry><para>password history</para></entry>
1063                                         <entry><para>0 - 23 (#)</para></entry>
1064                                         <entry><para>0 - 4294967295 (#)</para></entry>
1065                                         <entry><para>0</para></entry>
1066                     </row>
1067                     <row>
1068                                         <entry><para>Account Lockout - Reset count after</para></entry>
1069                                         <entry><para>reset count minutes</para></entry>
1070                                         <entry><para>1 - 99998 (min)</para></entry>
1071                                         <entry><para>0 - 4294967295 (min)</para></entry>
1072                                         <entry><para>30</para></entry>
1073                     </row>
1074                     <row>
1075                                         <entry><para>Lockout after bad logon attempts</para></entry>
1076                                         <entry><para>bad lockout attempt</para></entry>
1077                                         <entry><para>0 - 998 (#)</para></entry>
1078                                         <entry><para>0 - 4294967295 (#)</para></entry>
1079                                         <entry><para>0</para></entry>
1080                     </row>
1081                     <row>
1082                                         <entry><para>*** Not Known ***</para></entry>
1083                                         <entry><para>disconnect time</para></entry>
1084                                         <entry><para>TBA</para></entry>
1085                                         <entry><para>0 - 4294967295</para></entry>
1086                                         <entry><para>0</para></entry>
1087                     </row>
1088                     <row>
1089                                         <entry><para>Lockout Duration</para></entry>
1090                                         <entry><para>lockout duration</para></entry>
1091                                         <entry><para>1 - 99998 (min)</para></entry>
1092                                         <entry><para>0 - 4294967295 (min)</para></entry>
1093                                         <entry><para>30</para></entry>
1094                     </row>
1095                     <row>
1096                                         <entry><para>Users must log on in order to change password</para></entry>
1097                                         <entry><para>user must logon to change password</para></entry>
1098                                         <entry><para>0/1</para></entry>
1099                                         <entry><para>0 - 4294967295</para></entry>
1100                                         <entry><para>0</para></entry>
1101                     </row>
1102                     <row>
1103                                         <entry><para>*** Registry Setting ***</para></entry>
1104                                         <entry><para>refuse machine password change</para></entry>
1105                                         <entry><para>0/1</para></entry>
1106                                         <entry><para>0 - 4294967295</para></entry>
1107                                         <entry><para>0</para></entry>
1108                     </row>
1109                                 </tbody>
1110                         </tgroup>
1111                 </table>
1112
1113                 <para>
1114                 <indexterm><primary>pdbedit</primary></indexterm>
1115 <indexterm><primary>policy settings</primary></indexterm>
1116 <indexterm><primary>account security</primary></indexterm>
1117 <indexterm><primary>smbpasswd</primary></indexterm>
1118                 The <command>pdbedit</command> tool is the only one that can manage the account
1119                 security and policy settings. It is capable of all operations that smbpasswd can
1120                 do as well as a superset of them.
1121                 </para>
1122
1123                 <para>
1124                 <indexterm><primary>pdbedit</primary></indexterm>
1125 <indexterm><primary>account migration</primary></indexterm>
1126 <indexterm><primary>passdb backend</primary></indexterm>
1127                 One particularly important purpose of the <command>pdbedit</command> is to allow
1128                 the migration of account information from one passdb backend to another. 
1129                 </para>
1130
1131                 <sect3>
1132                 <title>User Account Management</title>
1133
1134                 <para>
1135 <indexterm><primary>pdbedit</primary></indexterm>
1136 <indexterm><primary>smbpasswd</primary></indexterm>
1137 <indexterm><primary>system accounts</primary></indexterm>
1138 <indexterm><primary>user account</primary></indexterm>
1139 <indexterm><primary>domain user manager</primary></indexterm>
1140 <indexterm><primary>add user script</primary></indexterm>
1141 <indexterm><primary>interface scripts</primary></indexterm>
1142                 The <command>pdbedit</command> tool, like the <command>smbpasswd</command> tool, requires
1143                 that a POSIX user account already exists in the UNIX/Linux system accounts database (backend).
1144                 Neither tool will call out to the operating system to create a user account because this is
1145                 considered to be the responsibility of the system administrator. When the Windows NT4 domain
1146                 user manager is used to add an account, Samba will implement the <literal>add user script</literal>
1147                 (as well as the other interface scripts) to ensure that user, group and machine accounts are
1148                 correctly created and changed. The use of the <command>pdbedit</command> tool does not
1149                 make use of these interface scripts.
1150                 </para>
1151
1152                 <para>
1153 <indexterm><primary>pdbedit</primary></indexterm>
1154 <indexterm><primary>POSIX account</primary></indexterm>
1155                 Before attempting to use the <command>pdbedit</command> tool to manage user and machine
1156                 accounts, make certain that a system (POSIX) account has already been created.
1157                 </para>
1158
1159                 <sect4>
1160                 <title>Listing User and Machine Accounts</title>
1161
1162                 <para>
1163 <indexterm><primary>tdbsam</primary></indexterm>
1164 <indexterm><primary>password backend</primary></indexterm>
1165                 The following is an example of the user account information that is stored in
1166                 a tdbsam password backend. This listing was produced by running:
1167 <screen>
1168 &prompt;<userinput>pdbedit -Lv met</userinput>
1169 UNIX username:        met
1170 NT username:          met
1171 Account Flags:        [U          ]
1172 User SID:             S-1-5-21-1449123459-1407424037-3116680435-2004
1173 Primary Group SID:    S-1-5-21-1449123459-1407424037-3116680435-1201
1174 Full Name:            Melissa E Terpstra
1175 Home Directory:       \\frodo\met\Win9Profile
1176 HomeDir Drive:        H:
1177 Logon Script:         scripts\logon.bat
1178 Profile Path:         \\frodo\Profiles\met
1179 Domain:               &example.workgroup;
1180 Account desc:
1181 Workstations:         melbelle
1182 Munged dial:
1183 Logon time:           0
1184 Logoff time:          Mon, 18 Jan 2038 20:14:07 GMT
1185 Kickoff time:         Mon, 18 Jan 2038 20:14:07 GMT
1186 Password last set:    Sat, 14 Dec 2002 14:37:03 GMT
1187 Password can change:  Sat, 14 Dec 2002 14:37:03 GMT
1188 Password must change: Mon, 18 Jan 2038 20:14:07 GMT
1189 </screen>
1190                 </para>
1191
1192                 <para>
1193 <indexterm><primary>smbpasswd format</primary></indexterm>
1194                 Accounts can also be listed in the older <literal>smbpasswd</literal> format:
1195 <screen>
1196 &rootprompt;<userinput>pdbedit -Lw</userinput>
1197 root:0:84B0D8E14D158FF8417EAF50CFAC29C3:
1198      AF6DD3FD4E2EA8BDE1695A3F05EFBF52:[U          ]:LCT-42681AB8:
1199 jht:1000:6BBC4159020A52741486235A2333E4D2:
1200      CC099521AD554A3C3CF2556274DBCFBC:[U          ]:LCT-40D75B5B:
1201 rcg:1002:E95D4331A6F23AF8AAD3B435B51404EE:
1202      BB0F2C39B04CA6100F0E535DF8314B43:[U          ]:LCT-40D7C5A3:
1203 afw:1003:1AAFA7F9F6DC1DEAAAD3B435B51404EE:
1204      CE92C2F9471594CDC4E7860CA6BC62DB:[T          ]:LCT-40DA501F:
1205 met:1004:A2848CB7E076B435AAD3B435B51404EE:
1206      F25F5D3405085C555236B80B7B22C0D2:[U          ]:LCT-4244FAB8:
1207 aurora$:1005:060DE593EA638B8ACC4A19F14D2FF2BB:
1208      060DE593EA638B8ACC4A19F14D2FF2BB:[W          ]:LCT-4173E5CC:
1209 temptation$:1006:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:
1210      A96703C014E404E33D4049F706C45EE9:[W          ]:LCT-42BF0C57:
1211 vaioboss$:1001:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:
1212      88A30A095160072784C88F811E89F98A:[W          ]:LCT-41C3878D:
1213 frodo$:1008:15891DC6B843ECA41249940C814E316B:
1214      B68EADCCD18E17503D3DAD3E6B0B9A75:[W          ]:LCT-42B7979F:
1215 marvel$:1011:BF709959C3C94E0B3958B7B84A3BB6F3:
1216      C610EFE9A385A3E8AA46ADFD576E6881:[W          ]:LCT-40F07A4
1217 </screen>
1218 <indexterm><primary>login id</primary></indexterm>
1219 <indexterm><primary>UID</primary></indexterm>
1220 <indexterm><primary>LanManger password</primary></indexterm>
1221 <indexterm><primary>NT password</primary></indexterm>
1222 <indexterm><primary>Account Flags</primary></indexterm>
1223 <indexterm><primary>LCT</primary><see>last change time</see></indexterm>
1224                 The account information that was returned by this command in order from left to right 
1225                 consists of the following colon separated data:
1226                 </para>
1227
1228                 <itemizedlist>
1229                         <listitem><para>Login ID.</para></listitem>
1230                         <listitem><para>UNIX UID.</para></listitem>
1231                         <listitem>
1232                                 <para>Microsoft LanManager password hash (password converted to upper-case then hashed.</para>
1233                         </listitem>
1234                         <listitem><para>Microsoft NT password hash (hash of the case-preserved password).</para></listitem>
1235                         <listitem><para>Samba SAM Account Flags.</para></listitem>
1236                         <listitem><para>The LCT data (password last change time).</para></listitem>
1237                 </itemizedlist>
1238
1239                 <para>
1240 <indexterm><primary>Account Flags</primary></indexterm>
1241 <indexterm><primary>pdbedit</primary></indexterm>
1242                 The Account Flags parameters are documented in the <command>pdbedit</command> man page, and are
1243                 briefly documented in <link linkend="TOSHARG-acctflags">the Account Flags Management section</link>.
1244                 </para>
1245
1246                 <para>
1247 <indexterm><primary>last change time</primary></indexterm>
1248                 The LCT data consists of 8 hexadecimal characters representing the time since January 1, 1970, of
1249                 the time when the password was last changed.
1250                 </para>
1251
1252                 </sect4>
1253
1254                 <sect4>
1255                 <title>Adding User Accounts</title>
1256
1257                 <para>
1258 <indexterm><primary>pdbedit</primary></indexterm>
1259 <indexterm><primary>add a user account</primary></indexterm>
1260 <indexterm><primary>standalone server</primary></indexterm>
1261 <indexterm><primary>domain</primary></indexterm>
1262 <indexterm><primary>SambaSAMAccount</primary></indexterm>
1263                 The <command>pdbedit</command> can be used to add a user account to a standalone server
1264                 or to a domain. In the example shown here the account for the user <literal>vlaan</literal>
1265                 has been created before attempting to add the SambaSAMAccount.
1266 <screen>
1267 &rootprompt; pdbedit -a vlaan
1268 new password: secretpw
1269 retype new password: secretpw
1270 Unix username:        vlaan
1271 NT username:          vlaan
1272 Account Flags:        [U          ]
1273 User SID:             S-1-5-21-726309263-4128913605-1168186429-3014
1274 Primary Group SID:    S-1-5-21-726309263-4128913605-1168186429-513
1275 Full Name:            Victor Laan
1276 Home Directory:       \\frodo\vlaan
1277 HomeDir Drive:        H:
1278 Logon Script:         scripts\logon.bat
1279 Profile Path:         \\frodo\profiles\vlaan
1280 Domain:               &example.workgroup;
1281 Account desc:         Guest User
1282 Workstations:
1283 Munged dial:
1284 Logon time:           0
1285 Logoff time:          Mon, 18 Jan 2038 20:14:07 GMT
1286 Kickoff time:         Mon, 18 Jan 2038 20:14:07 GMT
1287 Password last set:    Wed, 29 Jun 2005 19:35:12 GMT
1288 Password can change:  Wed, 29 Jun 2005 19:35:12 GMT
1289 Password must change: Mon, 18 Jan 2038 20:14:07 GMT
1290 Last bad password   : 0
1291 Bad password count  : 0
1292 Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
1293 </screen>
1294                 </para>
1295
1296                 </sect4>
1297
1298                 <sect4>
1299                 <title>Deleting Accounts</title>
1300
1301                 <para>
1302 <indexterm><primary>account deleted</primary></indexterm>
1303 <indexterm><primary>SambaSAMAccount</primary></indexterm>
1304 <indexterm><primary>pdbedit</primary></indexterm>
1305 <indexterm><primary>passdb backend</primary></indexterm>
1306                 An account can be deleted from the SambaSAMAccount database
1307 <screen>
1308 &rootprompt; pdbedit -x vlaan
1309 </screen>
1310                 The account is removed without further screen output. The account is removed only from the
1311                 SambaSAMAccount (passdb backend) database, it is not removed from the UNIX account backend.
1312                 </para>
1313
1314                 <para>
1315 <indexterm><primary>delete user script</primary></indexterm>
1316 <indexterm><primary>pdbedit</primary></indexterm>
1317                 The use of the NT4 domain user manager to delete an account will trigger the <parameter>delete user
1318                 script</parameter>, but not the <command>pdbedit</command> tool.
1319                 </para>
1320
1321                 </sect4>
1322
1323                 <sect4>
1324                 <title>Changing User Accounts</title>
1325
1326                 <para>
1327 <indexterm><primary>pdbedit</primary></indexterm>
1328                 Refer to the <command>pdbedit</command> man page for a full synopsis of all operations
1329                 that are available with this tool.
1330                 </para>
1331
1332                 <para>
1333 <indexterm><primary>pdbedit</primary></indexterm>
1334                 An example of a simple change in the user account information is the change of the full name
1335                 information shown here:
1336 <screen>
1337 &rootprompt; pdbedit -r --fullname="Victor Aluicious Laan" vlaan
1338 ...
1339 Primary Group SID:    S-1-5-21-726309263-4128913605-1168186429-513
1340 Full Name:            Victor Aluicious Laan
1341 Home Directory:       \\frodo\vlaan
1342 ...
1343 </screen>
1344                 </para>
1345
1346                 <para>
1347 <indexterm><primary>grace time</primary></indexterm>
1348 <indexterm><primary>password expired</primary></indexterm>
1349 <indexterm><primary>expired password</primary></indexterm>
1350                 Let us assume for a moment that a user's password has expired and the user is unable to
1351                 change the password at this time. It may be necessary to give the user additional grace time
1352                 so that it is possible to continue to work with the account and the original password. This
1353                 demonstrates how the password expiration settings may be updated
1354 <screen>
1355 &rootprompt; pdbedit -Lv vlaan
1356 ...
1357 Password last set:    Sun, 09 Sep 2001 22:21:40 GMT
1358 Password can change:  Thu, 03 Jan 2002 15:08:35 GMT
1359 Password must change: Thu, 03 Jan 2002 15:08:35 GMT
1360 Last bad password   : Thu, 03 Jan 2002 15:08:35 GMT
1361 Bad password count  : 2
1362 ...
1363 </screen>
1364 <indexterm><primary>bad logon attempts</primary></indexterm>
1365 <indexterm><primary>lock the account</primary></indexterm>
1366                 The user has recorded 2 bad logon attempts and the next will lock the account, but the
1367                 password is also expired. Here is how this account can be reset:
1368 <screen>
1369 &rootprompt; pdbedit -z vlaan
1370 ...
1371 Password last set:    Sun, 09 Sep 2001 22:21:40 GMT
1372 Password can change:  Thu, 03 Jan 2002 15:08:35 GMT
1373 Password must change: Thu, 03 Jan 2002 15:08:35 GMT
1374 Last bad password   : 0
1375 Bad password count  : 0
1376 ...
1377 </screen>
1378                 The <literal>Password must change:</literal> parameter can be reset like this:
1379 <screen>
1380 &rootprompt; pdbedit --pwd-must-change-time=1200000000 vlaan
1381 ...
1382 Password last set:    Sun, 09 Sep 2001 22:21:40 GMT
1383 Password can change:  Thu, 03 Jan 2002 15:08:35 GMT
1384 Password must change: Thu, 10 Jan 2008 14:20:00 GMT
1385 ...
1386 </screen>
1387                 Another way to use this tools is to set the date like this:
1388 <screen>
1389 &rootprompt; pdbedit --pwd-must-change-time="2010-01-01" \
1390               --time-format="%Y-%m-%d" vlaan
1391 ...
1392 Password last set:    Sun, 09 Sep 2001 22:21:40 GMT
1393 Password can change:  Thu, 03 Jan 2002 15:08:35 GMT
1394 Password must change: Fri, 01 Jan 2010 00:00:00 GMT
1395 ...
1396 </screen>
1397 <indexterm><primary>strptime</primary></indexterm>
1398 <indexterm><primary>time format</primary></indexterm>
1399                 Refer to the strptime man page for specific time format information.
1400                 </para>
1401
1402                 <para>
1403 <indexterm><primary>pdbedit</primary></indexterm>
1404 <indexterm><primary>SambaSAMAccount</primary></indexterm>
1405                 Please refer to the pdbedit man page for further information relating to SambaSAMAccount
1406                 management.
1407                 </para>
1408
1409                 <sect5 id="TOSHARG-acctflags">
1410                 <title>Account Flags Management</title>
1411
1412                 <para>
1413 <indexterm><primary>Samba SAM account flags</primary></indexterm>
1414 <indexterm><primary>account control block</primary><see>ACB</see></indexterm>
1415 <indexterm><primary>account encode_bits</primary></indexterm>
1416 <indexterm><primary>account control flags</primary></indexterm>
1417                 The Samba SAM account flags are properly called the ACB (account control block) within
1418                 the Samba source code. In some parts of the Samba source code they are referred to as the 
1419                 account encode_bits, and also as the account control flags.
1420                 </para>
1421
1422                 <para>
1423 <indexterm><primary>pdbedit</primary></indexterm>
1424 <indexterm><primary>user account</primary></indexterm>
1425 <indexterm><primary>machine account</primary></indexterm>
1426 <indexterm><primary>trust account</primary></indexterm>
1427 <indexterm><primary>damaged data</primary></indexterm>
1428                 The manual adjustment of user, machine (workstation or server) or an inter-domain trust
1429                 account account flgas should not be necessary under normal conditions of use of Samba. On the other hand,
1430                 where this information becomes corrupted for some reason, the ability to correct the damaged data is certainly
1431                 useful. The tool of choice by which such correction can be affected is the <command>pdbedit</command> utility.
1432                 </para>
1433
1434                 <para>
1435 <indexterm><primary>account flags</primary></indexterm>
1436 <indexterm><primary>LDAP directory</primary></indexterm>
1437                 There have been a few requests for information regarding the account flags from developers
1438                 who are creating their own Samba management tools. An example of a need for information regarding
1439                 the proper management of the account flags is evident when developing scripts that will be used
1440                 to manage an LDAP directory.
1441                 </para>
1442
1443                 <para>
1444 <indexterm><primary>pdbedit</primary></indexterm>
1445 <indexterm><primary>account flag order</primary></indexterm>
1446                 The account flag field can contain up to 16 characters. Presently, only 11 are in use.
1447                 These are listed in <link linkend="accountflags">Samba SAM Account Control Block Flags</link>.
1448                 The order in which the flags are specified to the <command>pdbedit</command> command is not important.
1449                 In fact, they can be set without problem in any order in the SambaAcctFlags record in the LDAP directory.
1450                 </para>
1451
1452                 <table frame="all" id="accountflags">
1453                 <title>Samba SAM Account Control Block Flags</title>
1454         <tgroup cols="2" align="center">
1455             <thead>
1456             <row><entry align="center">Flag</entry><entry>Description</entry></row>
1457             </thead>
1458             <tbody>
1459             <row>
1460                                 <entry align="center">D</entry>
1461                                 <entry align="left">Account is disabled.</entry>
1462                         </row>
1463             <row>
1464                                 <entry align="center">H</entry>
1465                                 <entry align="left">A home directory is required.</entry>
1466                         </row>
1467             <row>
1468                                 <entry align="center">I</entry>
1469                                 <entry align="left">An inter-domain trust account.</entry>
1470                         </row>
1471             <row>
1472                                 <entry align="center">L</entry>
1473                                 <entry align="left">Account has been auto-locked.</entry>
1474                         </row>
1475             <row>
1476                                 <entry align="center">M</entry>
1477                                 <entry align="left">An MNS (Microsoft network service) logon account.</entry>
1478                         </row>
1479             <row>
1480                                 <entry align="center">N</entry>
1481                                 <entry align="left">Password not required.</entry>
1482                         </row>
1483             <row>
1484                                 <entry align="center">S</entry>
1485                                 <entry align="left">A server trust account.</entry>
1486                         </row>
1487             <row>
1488                                 <entry align="center">T</entry>
1489                                 <entry align="left">Temporary duplicate account entry.</entry>
1490                         </row>
1491             <row>
1492                                 <entry align="center">U</entry>
1493                                 <entry align="left">A normal user account.</entry>
1494                         </row>
1495             <row>
1496                                 <entry align="center">W</entry>
1497                                 <entry align="left">A workstation trust account.</entry>
1498                         </row>
1499             <row>
1500                                 <entry align="center">X</entry>
1501                                 <entry align="left">Password does not expire.</entry>
1502                         </row>
1503             </tbody>
1504         </tgroup>
1505         </table>
1506
1507                 <para>
1508 <indexterm><primary>pdbedit</primary></indexterm>
1509 <indexterm><primary>account control flags</primary></indexterm>
1510                 An example of use of the <command>pdbedit</command> utility to set the account control flags
1511                 is shown here:
1512 <screen>
1513 &rootprompt; pdbedit -r -c "[DLX]" jra
1514 Unix username:        jht
1515 NT username:          jht
1516 Account Flags:        [DHULX      ]
1517 User SID:             S-1-5-21-729263-4123605-1186429-3000
1518 Primary Group SID:    S-1-5-21-729263-4123605-1186429-513
1519 Full Name:            John H Terpstra,Utah Office
1520 Home Directory:       \\aurora\jht
1521 HomeDir Drive:        H:
1522 Logon Script:         scripts\logon.bat
1523 Profile Path:         \\aurora\profiles\jht
1524 Domain:               MIDEARTH
1525 Account desc:         BluntObject
1526 Workstations:
1527 Logon time:           0
1528 Logoff time:          Mon, 18 Jan 2038 20:14:07 GMT
1529 Kickoff time:         0
1530 Password last set:    Sun, 03 Jul 2005 23:19:18 GMT
1531 Password can change:  Sun, 03 Jul 2005 23:19:18 GMT
1532 Password must change: Mon, 18 Jan 2038 20:14:07 GMT
1533 Last bad password   : 0
1534 Bad password count  : 0
1535 Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
1536 </screen>
1537 <indexterm><primary>default settings</primary></indexterm>
1538         The flags can be reset to the default settings by executing:
1539 <screen>
1540 &rootprompt; pdbedit -r -c "[]" jra
1541 Unix username:        jht
1542 NT username:          jht
1543 Account Flags:        [U          ]
1544 User SID:             S-1-5-21-729263-4123605-1186429-3000
1545 Primary Group SID:    S-1-5-21-729263-4123605-1186429-513
1546 Full Name:            John H Terpstra,Utah Office
1547 Home Directory:       \\aurora\jht
1548 HomeDir Drive:        H:
1549 Logon Script:         scripts\logon.bat
1550 Profile Path:         \\aurora\profiles\jht
1551 Domain:               MIDEARTH
1552 Account desc:         BluntObject
1553 Workstations:
1554 Logon time:           0
1555 Logoff time:          Mon, 18 Jan 2038 20:14:07 GMT
1556 Kickoff time:         0
1557 Password last set:    Sun, 03 Jul 2005 23:19:18 GMT
1558 Password can change:  Sun, 03 Jul 2005 23:19:18 GMT
1559 Password must change: Mon, 18 Jan 2038 20:14:07 GMT
1560 Last bad password   : 0
1561 Bad password count  : 0
1562 Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
1563 </screen>
1564                 </para>
1565
1566                 </sect5>
1567
1568                 </sect4>
1569
1570                 <sect4>
1571                 <title>Domain Account Policy Managment</title>
1572
1573                 <para>
1574 <indexterm><primary>domain account access policies</primary></indexterm>
1575 <indexterm><primary>access policies</primary></indexterm>
1576                 To view the domain account access policies that may be configured execute:
1577 <screen>
1578 &rootprompt; pdbedit -P ?
1579 No account policy by that name
1580 Account policy names are :
1581 min password length
1582 password history
1583 user must logon to change password
1584 maximum password age
1585 minimum password age
1586 lockout duration
1587 reset count minutes
1588 bad lockout attempt
1589 disconnect time
1590 refuse machine password change
1591 </screen>
1592                 </para>
1593
1594                 <para>
1595                 Commands will be executed to establish controls for our domain as follows:
1596                 </para>
1597
1598                 <orderedlist>
1599                         <listitem><para>min password length = 8 characters.</para></listitem>
1600                         <listitem><para>password history = last 4 passwords.</para></listitem>
1601                         <listitem><para>maximum password age = 90 days.</para></listitem>
1602                         <listitem><para>minimum password age = 7 days.</para></listitem>
1603                         <listitem><para>bad lockout attempt = 8 bad logon attempts.</para></listitem>
1604                         <listitem><para>lockout duration = forever, account must be manually reenabled.</para></listitem>
1605                 </orderedlist>
1606
1607                 <para>
1608                 The following command execution will achieve these settings:
1609 <screen>
1610 &rootprompt; pdbedit -P "min password length" -C 8
1611 account policy value for min password length was 5
1612 account policy value for min password length is now 8
1613 &rootprompt; pdbedit -P "password history" -C 4
1614 account policy value for password history was 0
1615 account policy value for password history is now 4
1616 &rootprompt; pdbedit -P "maximum password age" -C 90
1617 account policy value for maximum password age was 4294967295
1618 account policy value for maximum password age is now 90
1619 &rootprompt; pdbedit -P "minimum password age" -C 7
1620 account policy value for minimum password age was 0
1621 account policy value for minimum password age is now 7
1622 &rootprompt; pdbedit -P "bad lockout attempt" -C 8
1623 account policy value for bad lockout attempt was 0
1624 account policy value for bad lockout attempt is now 8
1625 &rootprompt; pdbedit -P "lockout duration" -C -1
1626 account policy value for lockout duration was 30
1627 account policy value for lockout duration is now 4294967295
1628 </screen>
1629                 </para>
1630
1631 <note><para>
1632 To set the maximum (infinite) lockout time use the value of -1.
1633 </para></note>
1634
1635 <warning><para>
1636 Account policies must be set individually on each PDC and BDC. At this time (Samba 3.0.11 to Samba 3.0.14a)
1637 account policies are not replicated automatically. This may be fixed before Samba 3.0.20 ships or some
1638 time there after.
1639 </para></warning>
1640
1641                 </sect4>
1642
1643                 </sect3>
1644
1645                 <sect3>
1646                 <title>Account Migration</title>
1647
1648                 <para>
1649                 <indexterm><primary>pdbedit</primary></indexterm>
1650 <indexterm><primary>migrate accounts</primary></indexterm>
1651 <indexterm><primary>authentication</primary></indexterm>
1652                 The <command>pdbedit</command> tool allows migration of authentication (account)
1653                 databases from one backend to another. For example, to migrate accounts from an
1654                 old <filename>smbpasswd</filename> database to a <parameter>tdbsam</parameter>
1655                 backend:
1656                 </para>
1657
1658                 <procedure>
1659                         <step><para>
1660                         Set the <smbconfoption name="passdb backend">tdbsam, smbpasswd</smbconfoption>.
1661                         </para></step>
1662
1663                         <step><para>
1664 <indexterm><primary>pdbedit</primary></indexterm>
1665                         Execute:
1666 <screen>
1667 &rootprompt;<userinput>pdbedit -i smbpasswd -e tdbsam</userinput>
1668 </screen>
1669                         </para></step>
1670
1671                         <step><para>
1672 <indexterm><primary>smbpasswd</primary></indexterm>
1673                         Remove the <parameter>smbpasswd</parameter> from the passdb backend
1674                         configuration in &smb.conf;.
1675                         </para></step>
1676                 </procedure>
1677
1678         </sect3>
1679         </sect2>
1680 </sect1>
1681
1682 <sect1>
1683 <title>Password Backends</title>
1684
1685 <para>
1686 <indexterm><primary>account database</primary></indexterm>
1687 <indexterm><primary>SMB/CIFS server</primary></indexterm>
1688 Samba offers the greatest flexibility in backend account database design of any SMB/CIFS server
1689 technology available today. The flexibility is immediately obvious as one begins to explore this
1690 capability.
1691 </para>
1692
1693 <para>
1694 <indexterm><primary>multiple backends</primary></indexterm>
1695 <indexterm><primary>tdbsam databases</primary></indexterm>
1696 It is possible to specify not only multiple password backends, but even multiple
1697 backends of the same type. For example, to use two different <literal>tdbsam</literal> databases:
1698
1699 <smbconfblock>
1700 <smbconfoption name="passdb backend">tdbsam:/etc/samba/passdb.tdb tdbsam:/etc/samba/old-passdb.tdb</smbconfoption>
1701 </smbconfblock>
1702
1703 What is possible is not always sensible. Be careful to avoid complexity to the point that it
1704 may be said that the solution is <quote>too clever by half!</quote>
1705 </para>
1706
1707
1708         <sect2>
1709         <title>Plaintext</title>
1710
1711                 <para>
1712 <indexterm><primary>user database</primary></indexterm>
1713 <indexterm><primary>/etc/samba/smbpasswd</primary></indexterm>
1714 <indexterm><primary>/etc/smbpasswd</primary></indexterm>
1715 <indexterm><primary>password encryption</primary></indexterm>
1716 <indexterm><primary>/etc/passwd</primary></indexterm>
1717 <indexterm><primary>PAM</primary></indexterm>
1718                 Older versions of Samba retrieved user information from the UNIX user database 
1719                 and eventually some other fields from the file <filename>/etc/samba/smbpasswd</filename>
1720                 or <filename>/etc/smbpasswd</filename>. When password encryption is disabled, no 
1721                 SMB-specific data is stored at all. Instead, all operations are conducted via the way
1722                 that the Samba host OS will access its <filename>/etc/passwd</filename> database.
1723                 On most Linux systems, for example, all user and group resolution is done via PAM.
1724                 </para>
1725
1726         </sect2>
1727
1728         <sect2>
1729         <title>smbpasswd: Encrypted Password Database</title>
1730
1731                 <para>
1732                 <indexterm><primary>SAM backend</primary><secondary>smbpasswd</secondary></indexterm>
1733 <indexterm><primary>user account</primary></indexterm>
1734 <indexterm><primary>LM/NT password hashes</primary></indexterm>
1735 <indexterm><primary>smbpasswd</primary></indexterm>
1736                 Traditionally, when configuring <smbconfoption name="encrypt passwords">yes</smbconfoption>
1737                 in Samba's &smb.conf; file, user account information such as username, LM/NT password hashes,
1738                 password change times, and account flags have been stored in the <filename>smbpasswd(5)</filename>
1739                 file. There are several disadvantages to this approach for sites with large numbers of users
1740                 (counted in the thousands).
1741                 </para>
1742
1743                 <itemizedlist>
1744                 <listitem><para>
1745 <indexterm><primary>lookups</primary></indexterm>
1746                 The first problem is that all lookups must be performed sequentially. Given that
1747                 there are approximately two lookups per domain logon (one during intial logon validation
1748                 and one for a session connection setup, such as when mapping a network drive or printer), this
1749                 is a performance bottleneck for large sites. What is needed is an indexed approach
1750                 such as that used in databases.
1751                 </para></listitem>
1752
1753                 <listitem><para>
1754 <indexterm><primary>smbpasswd</primary></indexterm>
1755 <indexterm><primary>replicate</primary></indexterm>
1756 <indexterm><primary>rsync</primary></indexterm>
1757 <indexterm><primary>ssh</primary></indexterm>
1758 <indexterm><primary>custom scripts</primary></indexterm>
1759                 The second problem is that administrators who desire to replicate an smbpasswd file
1760                 to more than one Samba server are left to use external tools such as
1761                 <command>rsync(1)</command> and <command>ssh(1)</command> and write custom,
1762                 in-house scripts.
1763                 </para></listitem>
1764
1765                 <listitem><para>
1766 <indexterm><primary>smbpasswd</primary></indexterm>
1767 <indexterm><primary>home directory</primary></indexterm>
1768 <indexterm><primary>password expiration</primary></indexterm>
1769 <indexterm><primary>relative identifier</primary></indexterm>
1770 <indexterm><primary>relative identifier</primary><see>RID</see></indexterm>
1771                 Finally, the amount of information that is stored in an smbpasswd entry leaves
1772                 no room for additional attributes such as a home directory, password expiration time,
1773                 or even a relative identifier (RID).
1774                 </para></listitem>
1775                 </itemizedlist>
1776
1777                 <para>
1778 <indexterm><primary>user attributes</primary></indexterm>
1779 <indexterm><primary>smbd</primary></indexterm>
1780 <indexterm><primary>API</primary></indexterm>
1781 <indexterm><primary>samdb interface</primary></indexterm>
1782                 As a result of these deficiencies, a more robust means of storing user attributes
1783                 used by smbd was developed. The API that defines access to user accounts
1784                 is commonly referred to as the samdb interface (previously, this was called the passdb
1785                 API and is still so named in the Samba source code trees). 
1786                 </para>
1787
1788                 <para>
1789 <indexterm><primary>passdb backends</primary></indexterm>
1790 <indexterm><primary>smbpasswd plaintext database</primary></indexterm>
1791 <indexterm><primary>tdbsam</primary></indexterm>
1792 <indexterm><primary>ldapsam</primary></indexterm>
1793 <indexterm><primary>enterprise</primary></indexterm>
1794                 Samba provides an enhanced set of passdb backends that overcome the deficiencies
1795                 of the smbpasswd plaintext database. These are tdbsam and ldapsam.
1796                 Of these, ldapsam will be of most interest to large corporate or enterprise sites.
1797                 </para>
1798
1799         </sect2>
1800
1801         <sect2>
1802         <title>tdbsam</title>
1803
1804                 <para>
1805                 <indexterm><primary>SAM backend</primary><secondary>tdbsam</secondary></indexterm>
1806 <indexterm><primary>trivial database</primary><see>TDB</see></indexterm>
1807 <indexterm><primary>machine account</primary></indexterm>
1808                 Samba can store user and machine account data in a <quote>TDB</quote> (trivial database).
1809                 Using this backend does not require any additional configuration. This backend is
1810                 recommended for new installations that do not require LDAP.
1811                 </para>
1812
1813                 <para>
1814 <indexterm><primary>tdbsam</primary></indexterm>
1815 <indexterm><primary>PDC</primary></indexterm>
1816 <indexterm><primary>BDC</primary></indexterm>
1817 <indexterm><primary>scalability</primary></indexterm>
1818                 As a general guide, the Samba Team does not recommend using the tdbsam backend for sites
1819                 that have 250 or more users. Additionally, tdbsam is not capable of scaling for use
1820                 in sites that require PDB/BDC implementations that require replication of the account
1821                 database. Clearly, for reason of scalability, the use of ldapsam should be encouraged.
1822                 </para>
1823
1824                 <para>
1825 <indexterm><primary>250-user limit</primary></indexterm>
1826 <indexterm><primary>performance-based</primary></indexterm>
1827 <indexterm><primary>tdbsam</primary></indexterm>
1828                 The recommendation of a 250-user limit is purely based on the notion that this
1829                 would generally involve a site that has routed networks, possibly spread across
1830                 more than one physical location. The Samba Team has not at this time established
1831                 the performance-based scalability limits of the tdbsam architecture.
1832                 </para>
1833
1834                 <para>
1835 <indexterm><primary>4,500 user accounts</primary></indexterm>
1836 <indexterm><primary>passdb backend</primary></indexterm>
1837 <indexterm><primary>tdbsam</primary></indexterm>
1838 <indexterm><primary>SambaSAMAccount</primary></indexterm>
1839                 There are sites that have thousands of users and yet require only one server.
1840                 One site recently reported having 4,500 user accounts on one UNIX system and
1841                 reported excellent performance with the <literal>tdbsam</literal> passdb backend.
1842                 The limitation of where the <literal>tdbsam</literal> passdb backend can be used
1843                 is not one pertaining to a limitation in the TDB storage system, it is based
1844                 only on the need for a reliable distribution mechanism for the SambaSAMAccount
1845                 backend.
1846                 </para>
1847
1848         </sect2>
1849
1850         <sect2>
1851         <title>ldapsam</title>
1852
1853                 <para>
1854 <indexterm><primary>LDAP</primary></indexterm>
1855 <indexterm><primary>ldapsam</primary></indexterm>
1856                 <indexterm><primary>SAM backend</primary><secondary>ldapsam</secondary></indexterm>
1857                 There are a few points to stress that the ldapsam does not provide. The LDAP
1858                 support referred to in this documentation does not include:
1859                 </para>
1860
1861                 <itemizedlist>
1862                         <listitem><para>A means of retrieving user account information from
1863                         a Windows 200x Active Directory server.</para></listitem>
1864                         <listitem><para>A means of replacing /etc/passwd.</para></listitem>
1865                 </itemizedlist>
1866
1867                 <para>
1868 <indexterm><primary>LDAP</primary></indexterm>
1869 <indexterm><primary>NSS</primary></indexterm>
1870 <indexterm><primary>PAM</primary></indexterm>
1871 <indexterm><primary>LGPL</primary></indexterm>
1872                 The second item can be accomplished by using LDAP NSS and PAM modules. LGPL versions of these libraries can be
1873                 obtained from <ulink url="http://www.padl.com/">PADL Software</ulink>.  More information about the
1874                 configuration of these packages may be found in <ulink url="http://safari.oreilly.com/?XmlId=1-56592-491-6">
1875                 <emphasis>LDAP, System Administration</emphasis> by Gerald Carter, Chapter 6, Replacing NIS"</ulink>.
1876                 </para>
1877
1878                 <para>
1879 <indexterm><primary>LDAP directory</primary></indexterm>
1880 <indexterm><primary>smbpasswd</primary></indexterm>
1881 <indexterm><primary>directory server</primary></indexterm>
1882                 This document describes how to use an LDAP directory for storing Samba user
1883                 account information traditionally stored in the smbpasswd(5) file. It is
1884                 assumed that the reader already has a basic understanding of LDAP concepts
1885                 and has a working directory server already installed. For more information
1886                 on LDAP architectures and directories, please refer to the following sites:
1887                 </para>
1888
1889                 <itemizedlist>
1890                         <listitem><para><ulink url="http://www.openldap.org/">OpenLDAP</ulink></para></listitem>
1891                         <listitem><para><ulink url="http://www.sun.com/software/products/directory_srvr_ee/index.xml">
1892                                 Sun One Directory Server</ulink></para></listitem>
1893                         <listitem><para><ulink url="http://www.novell.com/products/edirectory/">Novell eDirectory</ulink></para></listitem>
1894                         <listitem><para><ulink url="http://www-306.ibm.com/software/tivoli/products/directory-server/">IBM
1895                                 Tivoli Directory Server</ulink></para></listitem>
1896                         <listitem><para><ulink url="http://www.redhat.com/software/rha/directory/">Red Hat Directory
1897                                 Server</ulink></para></listitem>
1898                         <listitem><para><ulink url="http://www.linuxsecurity.com/content/view/119229">Fedora Directory
1899                                 Server</ulink></para></listitem>
1900                 </itemizedlist>
1901
1902                 <para>
1903                 Two additional Samba resources that may prove to be helpful are:
1904                 </para>
1905
1906                 <itemizedlist>
1907                         <listitem><para>
1908 <indexterm><primary>Samba-PDC-LDAP-HOWTO</primary></indexterm>
1909                         The <ulink url="http://www.unav.es/cti/ldap-smb/ldap-smb-3-howto.html">Samba-PDC-LDAP-HOWTO</ulink>
1910                         maintained by Ignacio Coupeau.
1911                         </para></listitem>
1912
1913                         <listitem><para>
1914 <indexterm><primary>IDEALX</primary></indexterm>
1915 <indexterm><primary>NT migration scripts</primary></indexterm>
1916 <indexterm><primary>smbldap-tools</primary></indexterm>
1917                         The NT migration scripts from <ulink url="http://samba.idealx.org/">IDEALX</ulink> that are
1918                         geared to manage users and groups in such a Samba-LDAP domain controller configuration.
1919                         Idealx also produced the smbldap-tools and the Interactive Console Management tool.
1920                         </para></listitem>
1921                 </itemizedlist>
1922
1923                 <sect3>
1924                 <title>Supported LDAP Servers</title>
1925
1926                         <para>
1927 <indexterm><primary>LDAP</primary></indexterm>
1928 <indexterm><primary>ldapsam</primary></indexterm>
1929 <indexterm><primary>OpenLDAP</primary></indexterm>
1930 <indexterm><primary>Netscape's Directory Server</primary></indexterm>
1931                         The LDAP ldapsam code was developed and tested using the OpenLDAP 2.x server and
1932                         client libraries. The same code should work with Netscape's Directory Server and client SDK.
1933                         However, there are bound to be compile errors and bugs. These should not be hard to fix.
1934                         Please submit fixes via the process outlined in <link linkend="bugreport">Reporting Bugs</link>.
1935                         </para>
1936
1937                         <para>
1938                         Samba is capable of working with any standards-compliant LDAP server.
1939                         </para>
1940
1941                 </sect3>
1942
1943                 <sect3>
1944                 <title>Schema and Relationship to the RFC 2307 posixAccount</title>
1945
1946
1947                         <para>
1948                         Samba-3.0 includes the necessary schema file for OpenLDAP 2.x in the
1949                         <filename>examples/LDAP/samba.schema</filename> directory of the source code distribution
1950                         tarball. The schema entry for the sambaSamAccount ObjectClass is shown here:
1951 <programlisting>
1952 ObjectClass (1.3.6.1.4.1.7165.2.2.6 NAME 'sambaSamAccount' SUP top AUXILIARY
1953     DESC 'Samba-3.0 Auxiliary SAM Account'
1954     MUST ( uid $ sambaSID )
1955     MAY  ( cn $ sambaLMPassword $ sambaNTPassword $ sambaPwdLastSet $
1956           sambaLogonTime $ sambaLogoffTime $ sambaKickoffTime $
1957           sambaPwdCanChange $ sambaPwdMustChange $ sambaAcctFlags $
1958           displayName $ sambaHomePath $ sambaHomeDrive $ sambaLogonScript $
1959           sambaProfilePath $ description $ sambaUserWorkstations $
1960           sambaPrimaryGroupSID $ sambaDomainName ))
1961 </programlisting>
1962                         </para>
1963
1964                         <para>
1965 <indexterm><primary>samba.schema</primary></indexterm>
1966 <indexterm><primary>OpenLDAP</primary></indexterm>
1967 <indexterm><primary>OID</primary></indexterm>
1968                         The <filename>samba.schema</filename> file has been formatted for OpenLDAP 2.0/2.1.
1969                         The Samba Team owns the OID space used by the above schema and recommends its use.
1970                         If you translate the schema to be used with Netscape DS, please submit the modified
1971                         schema file as a patch to <ulink url="mailto:jerry@samba.org">jerry@samba.org</ulink>.
1972                         </para>
1973
1974                         <para>
1975 <indexterm><primary>smbpasswd</primary></indexterm>
1976 <indexterm><primary>/etc/passwd</primary></indexterm>
1977 <indexterm><primary>sambaSamAccount</primary></indexterm>
1978 <indexterm><primary>AUXILIARY</primary></indexterm>
1979 <indexterm><primary>ObjectClass</primary></indexterm>
1980 <indexterm><primary>LDAP</primary></indexterm>
1981 <indexterm><primary>RFC 2307.</primary></indexterm>
1982                         Just as the smbpasswd file is meant to store information that provides information
1983                         additional to  a user's <filename>/etc/passwd</filename> entry, so is the sambaSamAccount
1984                         object meant to supplement the UNIX user account information. A sambaSamAccount is an
1985                         <constant>AUXILIARY</constant> ObjectClass, so it can be used to augment existing
1986                         user account information in the LDAP directory, thus providing information needed
1987                         for Samba account handling. However, there are several fields (e.g., uid) that overlap
1988                         with the posixAccount ObjectClass outlined in RFC 2307. This is by design.
1989                         </para>
1990
1991                         <para>
1992 <indexterm><primary>account information</primary></indexterm>
1993 <indexterm><primary>sambaSamAccount</primary></indexterm>
1994 <indexterm><primary>posixAccount</primary></indexterm>
1995 <indexterm><primary>ObjectClasses</primary></indexterm>
1996 <indexterm><primary>smbd</primary></indexterm>
1997 <indexterm><primary>getpwnam</primary></indexterm>
1998 <indexterm><primary>LDAP</primary></indexterm>
1999 <indexterm><primary>NIS</primary></indexterm>
2000 <indexterm><primary>NSS</primary></indexterm>
2001                         In order to store all user account information (UNIX and Samba) in the directory,
2002                         it is necessary to use the sambaSamAccount and posixAccount ObjectClasses in
2003                         combination. However, <command>smbd</command> will still obtain the user's UNIX account
2004                         information via the standard C library calls, such as getpwnam().
2005                         This means that the Samba server must also have the LDAP NSS library installed
2006                         and functioning correctly. This division of information makes it possible to
2007                         store all Samba account information in LDAP, but still maintain UNIX account
2008                         information in NIS while the network is transitioning to a full LDAP infrastructure.
2009                         </para>
2010                 </sect3>
2011
2012                 <sect3>
2013                 <title>OpenLDAP Configuration</title>
2014
2015                 <para>
2016 <indexterm><primary>sambaSamAccount</primary></indexterm>
2017 <indexterm><primary>OpenLDAP</primary></indexterm>
2018 <indexterm><primary>slapd</primary></indexterm>
2019 <indexterm><primary>samba.schema</primary></indexterm>
2020                 To include support for the sambaSamAccount object in an OpenLDAP directory
2021                 server, first copy the samba.schema file to slapd's configuration directory.
2022                 The samba.schema file can be found in the directory <filename>examples/LDAP</filename>
2023                 in the Samba source distribution.
2024 <screen>
2025 &rootprompt;<userinput>cp samba.schema /etc/openldap/schema/</userinput>
2026 </screen>
2027                 </para>
2028
2029                 <para>
2030 <indexterm><primary>samba.schema</primary></indexterm>
2031 <indexterm><primary>slapd.conf</primary></indexterm>
2032 <indexterm><primary>sambaSamAccount</primary></indexterm>
2033 <indexterm><primary>cosine.schema</primary></indexterm>
2034 <indexterm><primary>uid</primary></indexterm>
2035 <indexterm><primary>inetorgperson.schema</primary></indexterm>
2036 <indexterm><primary>displayName</primary></indexterm>
2037 <indexterm><primary>attribute</primary></indexterm>
2038                 Next, include the <filename>samba.schema</filename> file in <filename>slapd.conf</filename>.
2039                 The sambaSamAccount object contains two attributes that depend on other schema
2040                 files. The <parameter>uid</parameter> attribute is defined in <filename>cosine.schema</filename> and
2041                 the <parameter>displayName</parameter> attribute is defined in the <filename>inetorgperson.schema</filename>
2042                 file. Both of these must be included before the <filename>samba.schema</filename> file.
2043 <programlisting>
2044 ## /etc/openldap/slapd.conf
2045
2046 ## schema files (core.schema is required by default)
2047 include            /etc/openldap/schema/core.schema
2048
2049 ## needed for sambaSamAccount
2050 include            /etc/openldap/schema/cosine.schema
2051 include            /etc/openldap/schema/inetorgperson.schema
2052 include            /etc/openldap/schema/nis.schema
2053 include            /etc/openldap/schema/samba.schema
2054 ....
2055 </programlisting>
2056                 </para>
2057
2058                 <para>
2059 <indexterm><primary>sambaSamAccount</primary></indexterm>
2060 <indexterm><primary>posixAccount</primary></indexterm>
2061 <indexterm><primary>posixGroup</primary></indexterm>
2062 <indexterm><primary>ObjectClasses</primary></indexterm>
2063                 It is recommended that you maintain some indices on some of the most useful attributes,
2064                 as in the following example, to speed up searches made on sambaSamAccount ObjectClasses
2065                 (and possibly posixAccount and posixGroup as well):
2066                 </para>
2067
2068 <para>
2069 <programlisting>
2070 # Indices to maintain
2071 ## required by OpenLDAP
2072 index objectclass             eq
2073
2074 index cn                      pres,sub,eq
2075 index sn                      pres,sub,eq
2076 ## required to support pdb_getsampwnam
2077 index uid                     pres,sub,eq
2078 ## required to support pdb_getsambapwrid()
2079 index displayName             pres,sub,eq
2080
2081 ## uncomment these if you are storing posixAccount and
2082 ## posixGroup entries in the directory as well
2083 ##index uidNumber               eq
2084 ##index gidNumber               eq
2085 ##index memberUid               eq
2086
2087 index   sambaSID              eq
2088 index   sambaPrimaryGroupSID  eq
2089 index   sambaDomainName       eq
2090 index   default               sub
2091 </programlisting>
2092 </para>
2093
2094                 <para>
2095                 Create the new index by executing:
2096 <screen>
2097 &rootprompt;./sbin/slapindex -f slapd.conf
2098 </screen>
2099                 </para>
2100
2101                 <para>
2102                 Remember to restart slapd after making these changes:
2103 <screen>
2104 &rootprompt;<userinput>/etc/init.d/slapd restart</userinput>
2105 </screen>
2106                 </para>
2107
2108                 </sect3>
2109
2110                 <sect3>
2111                 <title>Initialize the LDAP Database</title>
2112
2113                 <para>
2114 <indexterm><primary>LDAP database</primary></indexterm>
2115 <indexterm><primary>account containers</primary></indexterm>
2116 <indexterm><primary>LDIF file</primary></indexterm>
2117 <indexterm><primary>DNS</primary></indexterm>
2118                 Before you can add accounts to the LDAP database, you must create the account containers
2119                 that they will be stored in. The following LDIF file should be modified to match your
2120                 needs (DNS entries, and so on):
2121 <programlisting>
2122 # Organization for Samba Base
2123 dn: dc=quenya,dc=org
2124 objectclass: dcObject
2125 objectclass: organization
2126 dc: quenya
2127 o: Quenya Org Network
2128 description: The Samba-3 Network LDAP Example
2129
2130 # Organizational Role for Directory Management
2131 dn: cn=Manager,dc=quenya,dc=org
2132 objectclass: organizationalRole
2133 cn: Manager
2134 description: Directory Manager
2135
2136 # Setting up container for Users OU
2137 dn: ou=People,dc=quenya,dc=org
2138 objectclass: top
2139 objectclass: organizationalUnit
2140 ou: People
2141
2142 # Setting up admin handle for People OU
2143 dn: cn=admin,ou=People,dc=quenya,dc=org
2144 cn: admin
2145 objectclass: top
2146 objectclass: organizationalRole
2147 objectclass: simpleSecurityObject
2148 userPassword: {SSHA}c3ZM9tBaBo9autm1dL3waDS21+JSfQVz
2149
2150 # Setting up container for groups
2151 dn: ou=Groups,dc=quenya,dc=org
2152 objectclass: top
2153 objectclass: organizationalUnit
2154 ou: Groups
2155
2156 # Setting up admin handle for Groups OU
2157 dn: cn=admin,ou=Groups,dc=quenya,dc=org
2158 cn: admin
2159 objectclass: top
2160 objectclass: organizationalRole
2161 objectclass: simpleSecurityObject
2162 userPassword: {SSHA}c3ZM9tBaBo9autm1dL3waDS21+JSfQVz
2163
2164 # Setting up container for computers
2165 dn: ou=Computers,dc=quenya,dc=org
2166 objectclass: top
2167 objectclass: organizationalUnit
2168 ou: Computers
2169
2170 # Setting up admin handle for Computers OU
2171 dn: cn=admin,ou=Computers,dc=quenya,dc=org
2172 cn: admin
2173 objectclass: top
2174 objectclass: organizationalRole
2175 objectclass: simpleSecurityObject
2176 userPassword: {SSHA}c3ZM9tBaBo9autm1dL3waDS21+JSfQVz
2177 </programlisting>
2178                 </para>
2179
2180                 <para>
2181 <indexterm><primary>userPassword</primary></indexterm>
2182 <indexterm><primary>slappasswd</primary></indexterm>
2183                 The userPassword shown above should be generated using <command>slappasswd</command>.
2184                 </para>
2185
2186                 <para>
2187 <indexterm><primary>LDIF</primary></indexterm>
2188 <indexterm><primary>LDAP</primary></indexterm>
2189                 The following command will then load the contents of the LDIF file into the LDAP
2190                 database.
2191 <indexterm><primary>slapadd</primary></indexterm>
2192 <screen>
2193 &prompt;<userinput>slapadd -v -l initldap.dif</userinput>
2194 </screen>
2195                 </para>
2196
2197                 <para>
2198                 Do not forget to secure your LDAP server with an adequate access control list
2199                 as well as an admin password.
2200                 </para>
2201
2202                 <note><para>
2203 <indexterm><primary>secrets.tdb</primary></indexterm>
2204                 Before Samba can access the LDAP server, you need to store the LDAP admin password
2205                 in the Samba-3 <filename>secrets.tdb</filename> database by:
2206 <indexterm><primary>smbpasswd</primary></indexterm>
2207 <screen>
2208 &rootprompt;<userinput>smbpasswd -w <replaceable>secret</replaceable></userinput>
2209 </screen>
2210                 </para></note>
2211
2212                 </sect3>
2213
2214                 <sect3>
2215                 <title>Configuring Samba</title>
2216
2217                         <para>
2218 <indexterm><primary>LDAP</primary></indexterm>
2219 <indexterm><primary>smbd</primary></indexterm>
2220                         The following parameters are available in &smb.conf; only if your version of Samba was built with
2221                         LDAP support. Samba automatically builds with LDAP support if the LDAP libraries are found. The 
2222                         best method to verify that Samba was built with LDAP support is:
2223 <screen>
2224 &rootprompt; smbd -b | grep LDAP
2225    HAVE_LDAP_H
2226    HAVE_LDAP
2227    HAVE_LDAP_DOMAIN2HOSTLIST
2228    HAVE_LDAP_INIT
2229    HAVE_LDAP_INITIALIZE
2230    HAVE_LDAP_SET_REBIND_PROC
2231    HAVE_LIBLDAP
2232    LDAP_SET_REBIND_PROC_ARGS
2233 </screen>
2234                         If the build of the <command>smbd</command> command you are using does not produce output
2235                         that includes <literal>HAVE_LDAP_H</literal> it is necessary to discover why the LDAP headers
2236                         and libraries were not found during compilation.
2237                         </para>
2238
2239                         <para>LDAP-related smb.conf options include these:
2240                         <smbconfblock>
2241                         <smbconfoption name="passdb backend">ldapsam:url</smbconfoption>
2242                         <smbconfoption name="ldap admin dn"/>
2243                         <smbconfoption name="ldap delete dn"/>
2244                         <smbconfoption name="ldap filter"/>
2245                         <smbconfoption name="ldap group suffix"/>
2246                         <smbconfoption name="ldap idmap suffix"/>
2247                         <smbconfoption name="ldap machine suffix"/>
2248                         <smbconfoption name="ldap passwd sync"/>
2249                         <smbconfoption name="ldap ssl"/>
2250                         <smbconfoption name="ldap suffix"/>
2251                         <smbconfoption name="ldap user suffix"/>
2252                         <smbconfoption name="ldap replication sleep"/>
2253                         <smbconfoption name="ldap timeout"/>
2254                         <smbconfoption name="ldap page size"/>
2255                         </smbconfblock>
2256                         </para>
2257
2258                         <para>
2259                         These are described in the &smb.conf; man page and so are not repeated here. However, an example 
2260                         for use with an LDAP directory is shown in <link linkend="confldapex">the Configuration with LDAP.</link>
2261                         </para>
2262
2263 <example id="confldapex">
2264 <title>Configuration with LDAP</title>
2265 <smbconfblock>
2266 <smbconfsection name="[global]"/>
2267 <smbconfoption name="security">user</smbconfoption>
2268 <smbconfoption name="encrypt passwords">yes</smbconfoption>
2269 <smbconfoption name="netbios name">MORIA</smbconfoption>
2270 <smbconfoption name="workgroup">NOLDOR</smbconfoption>
2271
2272 <smbconfcomment>LDAP related parameters:</smbconfcomment>
2273
2274 <smbconfcomment>Define the DN used when binding to the LDAP servers.</smbconfcomment>
2275 <smbconfcomment>The password for this DN is not stored in smb.conf</smbconfcomment>
2276 <smbconfcomment>Set it using 'smbpasswd -w secret' to store the</smbconfcomment>
2277 <smbconfcomment>passphrase in the secrets.tdb file.</smbconfcomment>
2278 <smbconfcomment>If the "ldap admin dn" value changes, it must be reset.</smbconfcomment>
2279 <smbconfoption name="ldap admin dn">"cn=Manager,dc=quenya,dc=org"</smbconfoption>
2280
2281 <smbconfcomment>SSL directory connections can be configured by:</smbconfcomment>
2282 <smbconfcomment>('off', 'start tls', or 'on' (default))</smbconfcomment>
2283 <smbconfoption name="ldap ssl">start tls</smbconfoption>
2284
2285 <smbconfcomment>syntax: passdb backend = ldapsam:ldap://server-name[:port]</smbconfcomment>
2286 <smbconfoption name="passdb backend">ldapsam:ldap://frodo.quenya.org</smbconfoption>
2287
2288 <smbconfcomment>smbpasswd -x delete the entire dn-entry</smbconfcomment>
2289 <smbconfoption name="ldap delete dn">no</smbconfoption>
2290
2291 <smbconfcomment>The machine and user suffix are added to the base suffix</smbconfcomment>
2292 <smbconfcomment>wrote WITHOUT quotes. NULL suffixes by default</smbconfcomment>
2293 <smbconfoption name="ldap user suffix">ou=People</smbconfoption>
2294 <smbconfoption name="ldap group suffix">ou=Groups</smbconfoption>
2295 <smbconfoption name="ldap machine suffix">ou=Computers</smbconfoption>
2296
2297 <smbconfcomment>Trust UNIX account information in LDAP</smbconfcomment>
2298 <smbconfcomment> (see the smb.conf man page for details)</smbconfcomment>
2299
2300 <smbconfcomment>Specify the base DN to use when searching the directory</smbconfcomment>
2301 <smbconfoption name="ldap suffix">dc=quenya,dc=org</smbconfoption>
2302 </smbconfblock>
2303 </example>
2304
2305                 </sect3>
2306
2307                 <sect3>
2308                 <title>Accounts and Groups Management</title>
2309
2310                         <para>
2311                         <indexterm><primary>User Management</primary></indexterm>
2312                         <indexterm><primary>User Accounts</primary><secondary>Adding/Deleting</secondary></indexterm>
2313                         Because user accounts are managed through the sambaSamAccount ObjectClass, you should
2314                         modify your existing administration tools to deal with sambaSamAccount attributes.
2315                         </para>
2316
2317                         <para>
2318 <indexterm><primary>sambaSamAccount</primary></indexterm>
2319 <indexterm><primary>/etc/openldap/sldap.conf</primary></indexterm>
2320 <indexterm><primary>NSS</primary></indexterm>
2321                         Machine accounts are managed with the sambaSamAccount ObjectClass, just
2322                         like user accounts. However, it is up to you to store those accounts
2323                         in a different tree of your LDAP namespace. You should use
2324                         <quote>ou=Groups,dc=quenya,dc=org</quote> to store groups and
2325                         <quote>ou=People,dc=quenya,dc=org</quote> to store users. Just configure your
2326                         NSS and PAM accordingly (usually, in the <filename>/etc/openldap/sldap.conf</filename>
2327                         configuration file).
2328                         </para>
2329
2330                         <para>
2331 <indexterm><primary>POSIX</primary></indexterm>
2332 <indexterm><primary>posixGroup</primary></indexterm>
2333 <indexterm><primary>Domain Groups</primary></indexterm>
2334 <indexterm><primary>ADS</primary></indexterm>
2335                         In Samba-3, the group management system is based on POSIX
2336                         groups. This means that Samba makes use of the posixGroup ObjectClass.
2337                         For now, there is no NT-like group system management (global and local
2338                         groups). Samba-3 knows only about <constant>Domain Groups</constant>
2339                         and, unlike MS Windows 2000 and Active Directory, Samba-3 does not
2340                         support nested groups. 
2341                         </para>
2342
2343                 </sect3>
2344
2345                 <sect3>
2346                 <title>Security and sambaSamAccount</title>
2347
2348
2349                         <para>
2350 <indexterm><primary>sambaSAMAccount</primary></indexterm>
2351                         There are two important points to remember when discussing the security
2352                         of sambaSAMAccount entries in the directory.
2353                         </para>
2354
2355                         <itemizedlist>
2356                                 <listitem><para><emphasis>Never</emphasis> retrieve the SambaLMPassword or
2357 <indexterm><primary>SambaNTPassword</primary></indexterm>
2358                                 SambaNTPassword attribute values over an unencrypted LDAP session.</para></listitem>
2359                                 <listitem><para><emphasis>Never</emphasis> allow non-admin users to
2360                                 view the SambaLMPassword or SambaNTPassword attribute values.</para></listitem>
2361                         </itemizedlist>
2362
2363                         <para>
2364 <indexterm><primary>clear-text</primary></indexterm>
2365 <indexterm><primary>impersonate</primary></indexterm>
2366 <indexterm><primary>LM/NT password hashes</primary></indexterm>
2367                         These password hashes are clear-text equivalents and can be used to impersonate
2368                         the user without deriving the original clear-text strings. For more information
2369                         on the details of LM/NT password hashes, refer to <link linkend="passdb">the
2370                         Account Information Database section</link>.
2371                         </para>
2372
2373                         <para>
2374 <indexterm><primary>encrypted session</primary></indexterm>
2375 <indexterm><primary>StartTLS</primary></indexterm>
2376 <indexterm><primary>LDAPS</primary></indexterm>
2377 <indexterm><primary>secure communications</primary></indexterm>
2378                         To remedy the first security issue, the <smbconfoption name="ldap ssl"/> &smb.conf;
2379                         parameter defaults to require an encrypted session (<smbconfoption name="ldap
2380                         ssl">on</smbconfoption>) using the default port of <constant>636</constant> when
2381                         contacting the directory server. When using an OpenLDAP server, it
2382                         is possible to use the StartTLS LDAP extended operation in the place of LDAPS.
2383                         In either case, you are strongly encouraged to use secure communications protocols
2384                         (so do not set <smbconfoption name="ldap ssl">off</smbconfoption>).
2385                         </para>
2386
2387                         <para>
2388 <indexterm><primary>LDAPS</primary></indexterm>
2389 <indexterm><primary>StartTLS</primary></indexterm>
2390 <indexterm><primary>LDAPv3</primary></indexterm>
2391                         Note that the LDAPS protocol is deprecated in favor of the LDAPv3 StartTLS
2392                         extended operation. However, the OpenLDAP library still provides support for
2393                         the older method of securing communication between clients and servers.
2394                         </para>
2395
2396                         <para>
2397 <indexterm><primary>harvesting password hashes</primary></indexterm>
2398 <indexterm><primary>ACL</primary></indexterm>
2399 <indexterm><primary>slapd.conf</primary></indexterm>
2400                         The second security precaution is to prevent non-administrative users from
2401                         harvesting password hashes from the directory. This can be done using the
2402                         following ACL in <filename>slapd.conf</filename>:
2403                         </para>
2404
2405 <para>
2406 <programlisting>
2407 ## allow the "ldap admin dn" access, but deny everyone else
2408 access to attrs=SambaLMPassword,SambaNTPassword
2409      by dn="cn=Samba Admin,ou=People,dc=quenya,dc=org" write
2410      by * none
2411 </programlisting>
2412 </para>
2413
2414                 </sect3>
2415
2416                 <sect3>
2417                 <title>LDAP Special Attributes for sambaSamAccounts</title>
2418
2419                         <para> The sambaSamAccount ObjectClass is composed of the attributes shown in next tables: <link
2420                         linkend="attribobjclPartA">Part A</link>, and <link linkend="attribobjclPartB">Part B</link>. 
2421                         </para>
2422
2423                         <table frame="all" id="attribobjclPartA">
2424                                 <title>Attributes in the sambaSamAccount ObjectClass (LDAP), Part A</title>
2425                         <tgroup cols="2" align="justify">
2426                                         <colspec align="left"/>
2427                                         <colspec align="justify" colwidth="1*"/>
2428                         <tbody>
2429                                 <row><entry><constant>sambaLMPassword</constant></entry><entry>The LanMan password 16-byte hash stored as a character
2430                                                 representation of a hexadecimal string.</entry></row>
2431                                 <row><entry><constant>sambaNTPassword</constant></entry><entry>The NT password 16-byte hash stored as a character
2432                                                 representation of a hexadecimal string.</entry></row>
2433                                 <row><entry><constant>sambaPwdLastSet</constant></entry><entry>The integer time in seconds since 1970 when the
2434                                                 <constant>sambaLMPassword</constant> and <constant>sambaNTPassword</constant> attributes were last set.
2435                                 </entry></row>
2436
2437                                 <row><entry><constant>sambaAcctFlags</constant></entry><entry>String of 11 characters surrounded by square brackets [ ]
2438                                                 representing account flags such as U (user), W (workstation), X (no password expiration),
2439                                                 I (domain trust account), H (home dir required), S (server trust account),
2440                                                 and D (disabled).</entry></row>
2441
2442                                 <row><entry><constant>sambaLogonTime</constant></entry><entry>Integer value currently unused.</entry></row>
2443
2444                                 <row><entry><constant>sambaLogoffTime</constant></entry><entry>Integer value currently unused.</entry></row>
2445
2446                                 <row><entry><constant>sambaKickoffTime</constant></entry><entry>Specifies the time (UNIX time format) when the user
2447                                 will be locked down and cannot login any longer. If this attribute is omitted, then the account will never expire.
2448                                 Using this attribute together with shadowExpire of the shadowAccount ObjectClass will enable accounts to        
2449                                 expire completely on an exact date.</entry></row>
2450
2451                                 <row><entry><constant>sambaPwdCanChange</constant></entry><entry>Specifies the time (UNIX time format)
2452                                 after which the user is allowed to change his password. If this attribute is not set, the user will be free
2453                                 to change his password whenever he wants.</entry></row> 
2454
2455                                 <row><entry><constant>sambaPwdMustChange</constant></entry><entry>Specifies the time (UNIX time format) when the user is
2456                                 forced to change his password. If this value is set to 0, the user will have to change his password at first login.
2457                                 If this attribute is not set, then the password will never expire.</entry></row>
2458
2459                                 <row><entry><constant>sambaHomeDrive</constant></entry><entry>Specifies the drive letter to which to map the
2460                                 UNC path specified by sambaHomePath. The drive letter must be specified in the form <quote>X:</quote>
2461                                 where X is the letter of the drive to map. Refer to the <quote>logon drive</quote> parameter in the
2462                                 smb.conf(5) man page for more information.</entry></row>
2463
2464                                 <row><entry><constant>sambaLogonScript</constant></entry><entry>The sambaLogonScript property specifies the path of
2465                                 the user's logon script, .CMD, .EXE, or .BAT file. The string can be null. The path
2466                                 is relative to the netlogon share. Refer to the <smbconfoption name="logon script"/> parameter in the
2467                                 &smb.conf; man page for more information.</entry></row>
2468
2469                                 <row><entry><constant>sambaProfilePath</constant></entry><entry>Specifies a path to the user's profile.
2470                                 This value can be a null string, a local absolute path, or a UNC path. Refer to the
2471                                 <smbconfoption name="logon path"/> parameter in the &smb.conf; man page for more information.</entry></row>
2472
2473                                 <row><entry><constant>sambaHomePath</constant></entry><entry>The sambaHomePath property specifies the path of
2474                                 the home directory for the user. The string can be null. If sambaHomeDrive is set and specifies
2475                                 a drive letter, sambaHomePath should be a UNC path. The path must be a network
2476                                 UNC path of the form <filename>\\server\share\directory</filename>. This value can be a null string.
2477                                 Refer to the <command>logon home</command> parameter in the &smb.conf; man page for more information.
2478                                 </entry></row>
2479                         </tbody>
2480                         </tgroup></table>
2481
2482
2483                         <table frame="all" id="attribobjclPartB">
2484                                 <title>Attributes in the sambaSamAccount ObjectClass (LDAP), Part B</title>
2485                         <tgroup cols="2" align="justify">
2486                                         <colspec align="left"/>
2487                                         <colspec align="justify" colwidth="1*"/>
2488                         <tbody>
2489                                 <row><entry><constant>sambaUserWorkstations</constant></entry><entry>Here you can give a comma-separated list of machines
2490                                 on which the user is allowed to login. You may observe problems when you try to connect to a Samba domain member.
2491                                 Because domain members are not in this list, the domain controllers will reject them. Where this attribute is omitted,
2492                                 the default implies no restrictions.
2493                                 </entry></row>
2494
2495                                 <row><entry><constant>sambaSID</constant></entry><entry>The security identifier(SID) of the user.
2496                                 The Windows equivalent of UNIX UIDs.</entry></row>
2497
2498                                 <row><entry><constant>sambaPrimaryGroupSID</constant></entry><entry>The security identifier (SID) of the primary group
2499                                 of the user.</entry></row>
2500
2501                                 <row><entry><constant>sambaDomainName</constant></entry><entry>Domain the user is part of.</entry></row>
2502                         </tbody>
2503                         </tgroup></table>
2504
2505
2506                         <para>
2507 <indexterm><primary>PDC</primary></indexterm>
2508 <indexterm><primary>sambaSamAccount</primary></indexterm>
2509                         The majority of these parameters are only used when Samba is acting as a PDC of
2510                         a domain (refer to <link linkend="samba-pdc">Domain Control</link>, for details on
2511                         how to configure Samba as a PDC). The following four attributes
2512                         are only stored with the sambaSamAccount entry if the values are non-default values:
2513                         </para>
2514
2515                         <itemizedlist>
2516 <indexterm><primary>sambaHomePath</primary></indexterm>
2517 <indexterm><primary>sambaLogonScript</primary></indexterm>
2518 <indexterm><primary>sambaProfilePath</primary></indexterm>
2519 <indexterm><primary>sambaHomeDrive</primary></indexterm>
2520                                 <listitem><para>sambaHomePath</para></listitem>
2521                                 <listitem><para>sambaLogonScript</para></listitem>
2522                                 <listitem><para>sambaProfilePath</para></listitem>
2523                                 <listitem><para>sambaHomeDrive</para></listitem>
2524                         </itemizedlist>
2525
2526                         <para>
2527 <indexterm><primary>sambaSamAccount</primary></indexterm>
2528 <indexterm><primary>PDC</primary></indexterm>
2529 <indexterm><primary>smbHome</primary></indexterm>
2530                         These attributes are only stored with the sambaSamAccount entry if
2531                         the values are non-default values. For example, assume MORIA has now been
2532                         configured as a PDC and that <smbconfoption name="logon home">\\%L\%u</smbconfoption> was defined in
2533                         its &smb.conf; file. When a user named <quote>becky</quote> logs on to the domain,
2534                         the <smbconfoption name="logon home"/> string is expanded to \\MORIA\becky.
2535                         If the smbHome attribute exists in the entry <quote>uid=becky,ou=People,dc=samba,dc=org</quote>,
2536                         this value is used. However, if this attribute does not exist, then the value
2537                         of the <smbconfoption name="logon home"/> parameter is used in its place. Samba
2538                         will only write the attribute value to the directory entry if the value is
2539                         something other than the default (e.g., <filename>\\MOBY\becky</filename>).
2540                         </para>
2541
2542                 </sect3>
2543
2544                 <sect3>
2545                 <title>Example LDIF Entries for a sambaSamAccount</title>
2546
2547                         <para>
2548                         The following is a working LDIF that demonstrates the use of the SambaSamAccount ObjectClass:
2549 <programlisting>
2550 dn: uid=guest2, ou=People,dc=quenya,dc=org
2551 sambaLMPassword: 878D8014606CDA29677A44EFA1353FC7
2552 sambaPwdMustChange: 2147483647
2553 sambaPrimaryGroupSID: S-1-5-21-2447931902-1787058256-3961074038-513
2554 sambaNTPassword: 552902031BEDE9EFAAD3B435B51404EE
2555 sambaPwdLastSet: 1010179124
2556 sambaLogonTime: 0
2557 objectClass: sambaSamAccount
2558 uid: guest2
2559 sambaKickoffTime: 2147483647
2560 sambaAcctFlags: [UX         ]
2561 sambaLogoffTime: 2147483647
2562 sambaSID: S-1-5-21-2447931902-1787058256-3961074038-5006
2563 sambaPwdCanChange: 0
2564 </programlisting>
2565                         </para>
2566
2567                         <para>
2568                         The following is an LDIF entry for using both the sambaSamAccount and
2569                         posixAccount ObjectClasses:
2570 <programlisting>
2571 dn: uid=gcarter, ou=People,dc=quenya,dc=org
2572 sambaLogonTime: 0
2573 displayName: Gerald Carter
2574 sambaLMPassword: 552902031BEDE9EFAAD3B435B51404EE
2575 sambaPrimaryGroupSID: S-1-5-21-2447931902-1787058256-3961074038-1201
2576 objectClass: posixAccount
2577 objectClass: sambaSamAccount
2578 sambaAcctFlags: [UX         ]
2579 userPassword: {crypt}BpM2ej8Rkzogo
2580 uid: gcarter
2581 uidNumber: 9000
2582 cn: Gerald Carter
2583 loginShell: /bin/bash
2584 logoffTime: 2147483647
2585 gidNumber: 100
2586 sambaKickoffTime: 2147483647
2587 sambaPwdLastSet: 1010179230
2588 sambaSID: S-1-5-21-2447931902-1787058256-3961074038-5004
2589 homeDirectory: /home/moria/gcarter
2590 sambaPwdCanChange: 0
2591 sambaPwdMustChange: 2147483647
2592 sambaNTPassword: 878D8014606CDA29677A44EFA1353FC7
2593 </programlisting>
2594                 </para>
2595
2596                 </sect3>
2597
2598                 <sect3>
2599                 <title>Password Synchronization</title>
2600
2601                 <para>
2602                 Samba-3 and later can update the non-Samba (LDAP) password stored with an account. When
2603                 using pam_ldap, this allows changing both UNIX and Windows passwords at once.
2604                 </para>
2605
2606                 <para>The <smbconfoption name="ldap passwd sync"/> options can have the  values shown in
2607                 <link linkend="ldappwsync">Possible <emphasis>ldap passwd sync</emphasis> Values</link>.</para>
2608
2609                 <table frame="all" id="ldappwsync">
2610                 <title>Possible <parameter>ldap passwd sync</parameter> Values</title>
2611                 <tgroup cols="2">
2612                         <colspec align="left" colwidth="1*"/>
2613                         <colspec align="justify" colwidth="4*"/>
2614                 <thead>
2615                         <row><entry align="left">Value</entry><entry align="center">Description</entry></row>
2616                 </thead>
2617                 <tbody>
2618                 <row><entry>yes</entry><entry><para>When the user changes his password, update
2619                                <constant>SambaNTPassword</constant>, <constant>SambaLMPassword</constant>,
2620                                and the <constant>password</constant> fields.</para></entry></row>
2621
2622                 <row><entry>no</entry><entry><para>Only update <constant>SambaNTPassword</constant> and
2623                                         <constant>SambaLMPassword</constant>.</para></entry></row>
2624
2625                 <row><entry>only</entry><entry><para>Only update the LDAP password and let the LDAP server
2626                         worry about the other fields.  This option is only available on some LDAP servers and
2627                         only when the LDAP server supports LDAP_EXOP_X_MODIFY_PASSWD.</para></entry></row>
2628                 </tbody>
2629                 </tgroup>
2630                 </table>
2631
2632
2633                 <para>More information can be found in the &smb.conf; man page.</para>
2634
2635                 </sect3>
2636
2637                 <sect3>
2638                 <title>Using OpenLDAP Overlay for Password Syncronization</title>
2639
2640                 <para>
2641                 Howard Chu has written a special overlay called <command>smbk5pwd</command>. This tool  modifies the
2642                 <literal>SambaNTPassword</literal>, <literal>SambaLMPassword</literal> and <literal>Heimdal</literal>
2643                 hashes in an OpenLDAP entry when an LDAP_EXOP_X_MODIFY_PASSWD operation is performed.
2644                 </para>
2645
2646                 <para>
2647                 The overlay is shipped with OpenLDAP-2.3 and can be found in the
2648                 <filename>contrib/slapd-modules/smbk5pwd</filename> subdirectory. This module can also be used with
2649                 OpenLDAP-2.2.
2650                 </para>
2651
2652                 </sect3>
2653
2654         </sect2>
2655
2656 </sect1>
2657
2658 <sect1>
2659 <title>Common Errors</title>
2660
2661         <sect2>
2662                 <title>Users Cannot Logon</title>
2663
2664                 <para><quote>I've installed Samba, but now I can't log on with my UNIX account! </quote></para>
2665
2666                 <para>Make sure your user has been added to the current Samba <smbconfoption name="passdb backend"/>. 
2667                 Read the <link linkend="acctmgmttools">Account Management Tools,</link> for details.</para>
2668
2669         </sect2>
2670
2671         <sect2>
2672         <title>Users Being Added to the Wrong Backend Database</title>
2673
2674         <para>
2675         A few complaints have been received from users who just moved to Samba-3. The following
2676         &smb.conf; file entries were causing problems: new accounts were being added to the old
2677         smbpasswd file, not to the tdbsam passdb.tdb file:
2678         </para>
2679
2680         <para>
2681         <smbconfblock>
2682         <smbconfsection name="[global]"/>
2683         <member>...</member>
2684         <smbconfoption name="passdb backend">smbpasswd, tdbsam</smbconfoption>
2685         <member>...</member>
2686         </smbconfblock>
2687         </para>
2688
2689         <para>
2690         Samba will add new accounts to the first entry in the <emphasis>passdb backend</emphasis>
2691         parameter entry. If you want to update to the tdbsam, then change the entry to:
2692         </para>
2693
2694         <para>
2695 <smbconfblock>
2696 [globals]
2697 ...
2698 <smbconfoption name="passdb backend">tdbsam, smbpasswd</smbconfoption>
2699 ...
2700 </smbconfblock>
2701         </para>
2702
2703         </sect2>
2704
2705         <sect2>
2706         <title>Configuration of <parameter>auth methods</parameter></title>
2707
2708         <para>
2709         When explicitly setting an <smbconfoption name="auth methods"/> parameter,
2710         <parameter>guest</parameter> must be specified as the first entry on the line &smbmdash;
2711         for example, <smbconfoption name="auth methods">guest sam</smbconfoption>.
2712         </para>
2713
2714         </sect2>
2715
2716 </sect1>
2717
2718 </chapter>