~ubuntu-branches/ubuntu/intrepid/samba/intrepid-updates

« back to all changes in this revision

Viewing changes to docs-xml/Samba3-HOWTO/TOSHARG-IDMAP.xml

  • Committer: Bazaar Package Importer
  • Author(s): Chuck Short
  • Date: 2008-06-02 09:01:46 UTC
  • mfrom: (0.25.3 upstream)
  • Revision ID: james.westby@ubuntu.com-20080602090146-92ur4nx39ccg708r
Tags: 2:3.0.30-2ubuntu1
* Merge from debian unstable, remaining changes:
  * debian/patches/VERSION.patch
    - set SAMABA_VERSION_VENDOR_SUFFIX to Ubuntu
  * debian/smb.conf
    - add "(Samba, Ubuntu)" to server string.
    - comment out the default [homes] shares, and a comment about
      "value users = %S to show users how to restrict access to 
      \\server\useranem to only username.
    - Add map to guest = Bad user, maps bad username to guest access.
      (LP: #32067)
  * debian/samba-common.postinst:
    - Fix upgrade from a first installation done with feisty, edgy, or dapper.
      (LP: #201059)
    - When populating the new sambashare group, it's not an error if the user
      simply doesn't exist; test for this case and the install continue 
      instead of aborting. (LP: #206036)
  * debian/smba-common.config:
    - do not change priority to HIGH if dhclient3 is installed
    - used priority medium instead of hight for the workgroup question
  * debian/winbind.files
    - insclude additional files
  * debian/patches/fix-documentation.patch:
    - fix typos in net(8) and smb.conf(5) man pages
  * debian/mksambapasswd.awk:
    - Don't add user with UID less than 1000 to smbpasswd.
  * debian/samba.init:
    - add 'status' option for LSB conformance.
  * Updated control version.
  * Dropped Changes:
    - Dropped debian/patches/fix-smbprinting-os2.patch. Accepted upstream.
    - Dropped debian/patches/fix-documentation.patch. Accepted upstream.
     

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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="idmapper">
 
4
<chapterinfo>
 
5
        &author.jht;
 
6
</chapterinfo>
 
7
 
 
8
<title>Identity Mapping (IDMAP)</title>
 
9
 
 
10
<para>
 
11
<indexterm><primary>Windows</primary></indexterm>
 
12
<indexterm><primary>interoperability</primary></indexterm>
 
13
<indexterm><primary>IDMAP</primary></indexterm>
 
14
<indexterm><primary>Windows Security Identifiers</primary><see>SID</see></indexterm>
 
15
<indexterm><primary>SID</primary></indexterm>
 
16
<indexterm><primary>UID</primary></indexterm>
 
17
<indexterm><primary>GID</primary></indexterm>
 
18
The Microsoft Windows operating system has a number of features that impose specific challenges
 
19
to interoperability with the operating systems on which Samba is implemented. This chapter deals
 
20
explicitly with the mechanisms Samba-3 (version 3.0.8 and later) uses to overcome one of the
 
21
key challenges in the integration of Samba servers into an MS Windows networking environment.
 
22
This chapter deals with identity mapping (IDMAP) of Windows security identifiers (SIDs)
 
23
to UNIX UIDs and GIDs.
 
24
</para>
 
25
 
 
26
<para>
 
27
To ensure sufficient coverage, each possible Samba deployment type is discussed.
 
28
This is followed by an overview of how the IDMAP facility may be implemented.
 
29
</para>
 
30
 
 
31
<para>
 
32
<indexterm><primary>network client</primary></indexterm>
 
33
<indexterm><primary>IDMAP</primary></indexterm>
 
34
<indexterm><primary>IDMAP infrastructure</primary></indexterm>
 
35
<indexterm><primary>default behavior</primary></indexterm>
 
36
The IDMAP facility is of concern where more than one Samba server (or Samba network client)
 
37
is installed in a domain. Where there is a single Samba server, do not be too concerned regarding
 
38
the IDMAP infrastructure &smbmdash; the default behavior of Samba is nearly always sufficient.
 
39
Where mulitple Samba servers are used it is often necessary to move data off one server and onto
 
40
another, and that is where the fun begins!
 
41
</para>
 
42
 
 
43
<para>
 
44
<indexterm><primary>UID</primary></indexterm>
 
45
<indexterm><primary>GID</primary></indexterm>
 
46
<indexterm><primary>LDAP</primary></indexterm>
 
47
<indexterm><primary>NSS</primary></indexterm>
 
48
<indexterm><primary>nss_ldap</primary></indexterm>
 
49
<indexterm><primary>NT4 domain members</primary></indexterm>
 
50
<indexterm><primary>ADS domain members</primary></indexterm>
 
51
<indexterm><primary>security name-space</primary></indexterm>
 
52
Where user and group account information is stored in an LDAP directory every server can have the same
 
53
consistent UID and GID for users and groups. This is achieved using NSS and the nss_ldap tool. Samba
 
54
can be configured to use only local accounts, in which case the scope of the IDMAP problem is somewhat
 
55
reduced. This works reasonably well if the servers belong to a single domain, and interdomain trusts
 
56
are not needed. On the other hand, if the Samba servers are NT4 domain members, or ADS  domain members,
 
57
or if there is a need to keep the security name-space separate (i.e., the user
 
58
<literal>DOMINICUS\FJones</literal> must not be given access to the account resources of the user 
 
59
<literal>FRANCISCUS\FJones</literal><footnote>Samba local account mode results in both
 
60
<literal>DOMINICUS\FJones</literal> and <literal>FRANCISCUS\FJones</literal> mapping to the UNIX user
 
61
<literal>FJones</literal>.</footnote> free from inadvertent cross-over, close attention should be given
 
62
to the way that the IDMAP facility is configured.
 
63
</para>
 
64
 
 
65
<para>
 
66
<indexterm><primary>IDMAP</primary></indexterm>
 
67
<indexterm><primary>domain access</primary></indexterm>
 
68
<indexterm><primary>SID</primary></indexterm>
 
69
<indexterm><primary>UID</primary></indexterm>
 
70
<indexterm><primary>GID</primary></indexterm>
 
71
<indexterm><primary>one domain</primary></indexterm>
 
72
The use of IDMAP is important where the Samba server will be accessed by workstations or servers from
 
73
more than one domain, in which case it is important to run winbind so it can handle the resolution (ID mapping)
 
74
of foreign SIDs to local UNIX UIDs and GIDs.
 
75
</para>
 
76
 
 
77
<para>
 
78
<indexterm><primary>winbindd</primary></indexterm>
 
79
The use of the IDMAP facility requires the execution of the <command>winbindd</command> upon Samba startup.
 
80
</para>
 
81
 
 
82
<sect1>
 
83
<title>Samba Server Deployment Types and IDMAP</title>
 
84
 
 
85
<para>
 
86
<indexterm><primary>Server Types</primary></indexterm>
 
87
There are four basic server deployment types, as documented in <link linkend="ServerType">the chapter
 
88
on Server Types and Security Modes</link>.
 
89
</para>
 
90
 
 
91
        <sect2>
 
92
        <title>Standalone Samba Server</title>
 
93
 
 
94
        <para>
 
95
        <indexterm><primary>stand-alone server</primary></indexterm>
 
96
        <indexterm><primary>Active Directory</primary></indexterm>
 
97
        <indexterm><primary>NT4 Domain</primary></indexterm>
 
98
        A standalone Samba server is an implementation that is not a member of a Windows NT4 domain,
 
99
        a Windows 200X Active Directory domain, or a Samba domain.
 
100
        </para>
 
101
 
 
102
        <para>
 
103
        <indexterm><primary>IDMAP</primary></indexterm>
 
104
        <indexterm><primary>identity</primary></indexterm>
 
105
        <indexterm><primary>local user</primary></indexterm>
 
106
        By definition, this means that users and groups will be created and controlled locally, and
 
107
        the identity of a network user must match a local UNIX/Linux user login. The IDMAP facility
 
108
        is therefore of little to no interest, winbind will not be necessary, and the IDMAP facility
 
109
        will not be relevant or of interest.
 
110
        </para>
 
111
 
 
112
        </sect2>
 
113
 
 
114
        <sect2>
 
115
        <title>Domain Member Server or Domain Member Client</title>
 
116
 
 
117
        <para>
 
118
        <indexterm><primary>PDC</primary></indexterm>
 
119
        <indexterm><primary>BDC</primary></indexterm>
 
120
        <indexterm><primary>NT4</primary></indexterm>
 
121
        <indexterm><primary>SID</primary></indexterm>
 
122
        <indexterm><primary>Active Directory</primary></indexterm>
 
123
        Samba-3 can act as a Windows NT4 PDC or BDC, thereby providing domain control protocols that
 
124
        are compatible with Windows NT4. Samba-3 file and print sharing protocols are compatible with
 
125
        all versions of MS Windows products. Windows NT4, as with MS Active Directory,
 
126
        extensively makes use of Windows SIDs.
 
127
        </para>
 
128
 
 
129
        <para>
 
130
        <indexterm><primary>MS Windows SID</primary></indexterm>
 
131
        <indexterm><primary>UID</primary></indexterm>
 
132
        <indexterm><primary>GID</primary></indexterm>
 
133
        Samba-3 domain member servers and clients must interact correctly with MS Windows SIDs. Incoming
 
134
        Windows SIDs must be translated to local UNIX UIDs and GIDs. Outgoing information from the Samba
 
135
        server must provide to MS Windows clients and servers appropriate SIDs.
 
136
        </para>
 
137
 
 
138
        <para>
 
139
        <indexterm><primary>ADS</primary></indexterm>
 
140
        <indexterm><primary>winbind</primary></indexterm>
 
141
        A Samba member of a Windows networking domain (NT4-style or ADS) can be configured to handle 
 
142
        identity mapping in a variety of ways. The mechanism it uses depends on whether or not
 
143
        the <command>winbindd</command> daemon is used and how the winbind functionality is configured.
 
144
        The configuration options are briefly described here:
 
145
        </para>
 
146
 
 
147
        <variablelist>
 
148
                <varlistentry><term>Winbind is not used; users and groups are local: </term>
 
149
                        <listitem>
 
150
                                <para>
 
151
                                <indexterm><primary>winbindd</primary></indexterm>
 
152
                                <indexterm><primary>smbd</primary></indexterm>
 
153
                                <indexterm><primary>network traffic</primary></indexterm>
 
154
                                <indexterm><primary>LoginID</primary></indexterm>
 
155
                                <indexterm><primary>account name</primary></indexterm>
 
156
                                <indexterm><primary>getpwnam</primary></indexterm>
 
157
                                <indexterm><primary>NSS</primary></indexterm>
 
158
                                <indexterm><primary>local users</primary></indexterm>
 
159
                                <indexterm><primary>local groups</primary></indexterm>
 
160
                                <indexterm><primary>/etc/passwd</primary></indexterm>
 
161
                                <indexterm><primary>/etc/group</primary></indexterm>
 
162
                                Where <command>winbindd</command> is not used Samba (<command>smbd</command>)
 
163
                                uses the underlying UNIX/Linux mechanisms to resolve the identity of incoming
 
164
                                network traffic. This is done using the LoginID (account name) in the
 
165
                                session setup request and passing it to the getpwnam() system function call.
 
166
                                This call is implemented using the name service switch (NSS) mechanism on
 
167
                                modern UNIX/Linux systems. By saying "users and groups are local,"
 
168
                                we are implying that they are stored only on the local system, in the
 
169
                                <filename>/etc/passwd</filename> and <filename>/etc/group</filename> respectively.
 
170
                                </para>
 
171
 
 
172
                                <para>
 
173
                                <indexterm><primary>SessionSetupAndX</primary></indexterm>
 
174
                                <indexterm><primary>/etc/passwd</primary></indexterm>
 
175
                                For example, when the user <literal>BERYLIUM\WambatW</literal> tries to open a
 
176
                                connection to a Samba server the incoming SessionSetupAndX request will make a 
 
177
                                system call to look up the user <literal>WambatW</literal> in the
 
178
                                <filename>/etc/passwd</filename> file.
 
179
                                </para>
 
180
 
 
181
                                <para>
 
182
                                <indexterm><primary>standalone</primary></indexterm>
 
183
                                <indexterm><primary>domain member server</primary></indexterm>
 
184
                                <indexterm><primary>NT4</primary></indexterm>
 
185
                                <indexterm><primary>ADS</primary></indexterm>
 
186
                                <indexterm><primary>PDC</primary></indexterm>
 
187
                                <indexterm><primary>smbpasswd</primary></indexterm>
 
188
                                <indexterm><primary>tdbsam</primary></indexterm>
 
189
                                <indexterm><primary>passdb backend</primary></indexterm>
 
190
                                This configuration may be used with standalone Samba servers, domain member
 
191
                                servers (NT4 or ADS), and for a PDC that uses either an smbpasswd
 
192
                                or a tdbsam-based Samba passdb backend.
 
193
                                </para>
 
194
                        </listitem>
 
195
                </varlistentry>
 
196
        
 
197
                <varlistentry><term>Winbind is not used; users and groups resolved via NSS: </term>
 
198
                        <listitem>
 
199
                                <para>
 
200
                                <indexterm><primary>user accounts</primary></indexterm>
 
201
                                <indexterm><primary>group accounts</primary></indexterm>
 
202
                                <indexterm><primary>local accounts</primary></indexterm>
 
203
                                <indexterm><primary>repository</primary></indexterm>
 
204
                                <indexterm><primary>NIS</primary></indexterm>
 
205
                                <indexterm><primary>LDAP</primary></indexterm>
 
206
                                In this situation user and group accounts are treated as if they are local
 
207
                                accounts. The only way in which this differs from having local accounts is
 
208
                                that the accounts are stored in a repository that can be shared. In practice
 
209
                                this means that they will reside in either an NIS-type database or else in LDAP.
 
210
                                </para>
 
211
 
 
212
                                <para>
 
213
                                <indexterm><primary>standalone</primary></indexterm>
 
214
                                <indexterm><primary>domain member server</primary></indexterm>
 
215
                                <indexterm><primary>NT4</primary></indexterm>
 
216
                                <indexterm><primary>ADS</primary></indexterm>
 
217
                                <indexterm><primary>PDC</primary></indexterm>
 
218
                                <indexterm><primary>smbpasswd</primary></indexterm>
 
219
                                <indexterm><primary>tdbsam</primary></indexterm>
 
220
                                This configuration may be used with standalone Samba servers, domain member
 
221
                                servers (NT4 or ADS), and for a PDC that uses either an smbpasswd
 
222
                                or a tdbsam-based Samba passdb backend.
 
223
                                </para>
 
224
                        </listitem>
 
225
                </varlistentry>
 
226
 
 
227
                <varlistentry><term>Winbind/NSS with the default local IDMAP table: </term>
 
228
                        <listitem>
 
229
                                <para>
 
230
                                <indexterm><primary>NT4 domain</primary></indexterm>
 
231
                                <indexterm><primary>ADS domain</primary></indexterm>
 
232
                                <indexterm><primary>winbind</primary></indexterm>
 
233
                                <indexterm><primary>domain control</primary></indexterm>
 
234
                                There are many sites that require only a simple Samba server or a single Samba
 
235
                                server that is a member of a Windows NT4 domain or an ADS domain. A typical example
 
236
                                is an appliance like file server on which no local accounts are configured and
 
237
                                winbind is used to obtain account credentials from the domain controllers for the
 
238
                                domain. The domain control can be provided by Samba-3, MS Windows NT4, or MS Windows
 
239
                                Active Directory.
 
240
                                </para>
 
241
 
 
242
                                <para>
 
243
                                <indexterm><primary>UID numbers</primary></indexterm>
 
244
                                <indexterm><primary>GID numbers</primary></indexterm>
 
245
                                <indexterm><primary>/etc/nsswitch.conf</primary></indexterm>
 
246
                                <indexterm><primary>winbind</primary></indexterm>
 
247
                                <indexterm><primary>SID</primary></indexterm>
 
248
                                Winbind is a great convenience in this situation. All that is needed is a range of
 
249
                                UID numbers and GID numbers that can be defined in the &smb.conf; file. The
 
250
                                <filename>/etc/nsswitch.conf</filename> file is configured to use <command>winbind</command>,
 
251
                                which does all the difficult work of mapping incoming SIDs to appropriate UIDs and GIDs.
 
252
                                The SIDs are allocated a UID/GID in the order in which winbind receives them.
 
253
                                </para>
 
254
 
 
255
                                <para>
 
256
                                <indexterm><primary>UID</primary></indexterm>
 
257
                                <indexterm><primary>GID</primary></indexterm>
 
258
                                <indexterm><primary>IDMAP</primary></indexterm>
 
259
                                <indexterm><primary>corrupted file</primary></indexterm>
 
260
                                This configuration is not convenient or practical in sites that have more than one
 
261
                                Samba server and that require the same UID or GID for the same user or group across
 
262
                                all servers. One of the hazards of this method is that in the event that the winbind
 
263
                                IDMAP file becomes corrupted or lost, the repaired or rebuilt IDMAP file may allocate
 
264
                                UIDs and GIDs to different users and groups from what was there previously with the
 
265
                                result that MS Windows files that are stored on the Samba server may now not belong to
 
266
                                the rightful owners.
 
267
                                </para>
 
268
                        </listitem>
 
269
                </varlistentry>
 
270
 
 
271
                <varlistentry><term>Winbind/NSS uses RID based IDMAP: </term>
 
272
                        <listitem>
 
273
                                <para>
 
274
                                <indexterm><primary>RID</primary></indexterm>
 
275
                                <indexterm><primary>idmap_rid</primary></indexterm>
 
276
                                <indexterm><primary>ADS</primary></indexterm>
 
277
                                <indexterm><primary>LDAP</primary></indexterm>
 
278
                                The IDMAP_RID facility is new to Samba version 3.0.8. It was added to make life easier
 
279
                                for a number of sites that are committed to use of MS ADS, that do not apply
 
280
                                an ADS schema extension, and that do not have an installed an LDAP directory server just for
 
281
                                the purpose of maintaining an IDMAP table. If you have a single ADS domain (not a forest of
 
282
                                domains, and not multiple domain trees) and you want a simple cookie-cutter solution to the
 
283
                                IDMAP table problem, then IDMAP_RID is an obvious choice.
 
284
                                </para>
 
285
 
 
286
                                <para>
 
287
                                <indexterm><primary>idmap_rid</primary></indexterm>
 
288
                                <indexterm><primary>idmap uid</primary></indexterm>
 
289
                                <indexterm><primary>idmap gid</primary></indexterm>
 
290
                                <indexterm><primary>RID</primary></indexterm>
 
291
                                <indexterm><primary>SID</primary></indexterm>
 
292
                                <indexterm><primary>UID</primary></indexterm>
 
293
                                <indexterm><primary>idmap backend</primary></indexterm>
 
294
                                <indexterm><primary>automatic mapping</primary></indexterm>
 
295
                                This facility requires the allocation of the <parameter>idmap uid</parameter> and the
 
296
                                <parameter>idmap gid</parameter> ranges, and within the <parameter>idmap uid</parameter>
 
297
                                it is possible to allocate a subset of this range for automatic mapping of the relative
 
298
                                identifier (RID) portion of the SID directly to the base of the UID plus the RID value.
 
299
                                For example, if the <parameter>idmap uid</parameter> range is <constant>1000-100000000</constant>
 
300
                                and the <parameter>idmap backend = idmap_rid:DOMAIN_NAME=1000-50000000</parameter>, and
 
301
                                a SID is encountered that has the value <constant>S-1-5-21-34567898-12529001-32973135-1234</constant>,
 
302
                                the resulting UID will be <constant>1000 + 1234 = 2234</constant>.
 
303
                                </para>
 
304
                        </listitem>
 
305
                </varlistentry>
 
306
 
 
307
                <varlistentry><term>Winbind with an NSS/LDAP backend-based IDMAP facility: </term>
 
308
                        <listitem>
 
309
                                <para>
 
310
                                <indexterm><primary>Domain Member</primary></indexterm>
 
311
                                <indexterm><primary>winbind</primary></indexterm>
 
312
                                <indexterm><primary>SID</primary></indexterm>
 
313
                                <indexterm><primary>UID</primary></indexterm>
 
314
                                <indexterm><primary>GID</primary></indexterm>
 
315
                                <indexterm><primary>idmap gid</primary></indexterm>
 
316
                                <indexterm><primary>idmap uid</primary></indexterm>
 
317
                                <indexterm><primary>LDAP</primary></indexterm>
 
318
                                In this configuration <command>winbind</command> resolved SIDs to UIDs and GIDs from
 
319
                                the <parameter>idmap uid</parameter> and <parameter>idmap gid</parameter> ranges specified
 
320
                                in the &smb.conf; file, but instead of using a local winbind IDMAP table, it is stored
 
321
                                in an LDAP directory so that all domain member machines (clients and servers) can share
 
322
                                a common IDMAP table.
 
323
                                </para>
 
324
 
 
325
                                <para>
 
326
                                <indexterm><primary>idmap backend</primary></indexterm>
 
327
                                <indexterm><primary>LDAP server</primary></indexterm>
 
328
                                <indexterm><primary>LDAP redirects</primary></indexterm>
 
329
                                It is important that all LDAP IDMAP clients use only the master LDAP server because the
 
330
                                <parameter>idmap backend</parameter> facility in the &smb.conf; file does not correctly
 
331
                                handle LDAP redirects.
 
332
                                </para>
 
333
                        </listitem>
 
334
                </varlistentry>
 
335
 
 
336
                <varlistentry><term>Winbind with NSS to resolve UNIX/Linux user and group IDs: </term>
 
337
                        <listitem>
 
338
                                <para>
 
339
                                The use of LDAP as the passdb backend is a smart solution for PDC, BDC, and
 
340
                                domain member servers. It is a neat method for assuring that UIDs, GIDs, and the matching
 
341
                                SIDs are consistent across all servers.
 
342
                                </para>
 
343
 
 
344
                                <para>
 
345
                                <indexterm><primary>LDAP</primary></indexterm>
 
346
                                <indexterm><primary>PADL</primary></indexterm>
 
347
                                The use of the LDAP-based passdb backend requires use of the PADL nss_ldap utility or
 
348
                                an equivalent. In this situation winbind is used to handle foreign SIDs, that is, SIDs from
 
349
                                standalone Windows clients (i.e., not a member of our domain) as well as SIDs from 
 
350
                                another domain. The foreign UID/GID is mapped from allocated ranges (idmap uid and idmap gid)
 
351
                                in precisely the same manner as when using winbind with a local IDMAP table.
 
352
                                </para>
 
353
 
 
354
                                <para>
 
355
                                <indexterm><primary>nss_ldap</primary></indexterm>
 
356
                                <indexterm><primary>AD4UNIX</primary></indexterm>
 
357
                                <indexterm><primary>MMC</primary></indexterm>
 
358
                                The nss_ldap tool set can be used to access UIDs and GIDs via LDAP as well as via Active
 
359
                                Directory. In order to use Active Directory, it is necessary to modify the ADS schema by
 
360
                                installing either the AD4UNIX schema extension or using the Microsoft Services for UNIX
 
361
                                version 3.5 or later to extend the ADS schema so it maintains UNIX account credentials.
 
362
                                Where the ADS schema is extended, a Microsoft Management Console (MMC) snap-in is also
 
363
                                installed to permit the UNIX credentials to be set and managed from the ADS User and Computer
 
364
                                Management tool. Each account must be separately UNIX-enabled before the UID and GID data can
 
365
                                be used by Samba.
 
366
                                </para>
 
367
                        </listitem>
 
368
                </varlistentry>
 
369
 
 
370
        </variablelist>
 
371
 
 
372
        </sect2>
 
373
 
 
374
        <sect2>
 
375
        <title>Primary Domain Controller</title>
 
376
 
 
377
        <para>
 
378
        <indexterm><primary>domain security</primary></indexterm>
 
379
        <indexterm><primary>SID</primary></indexterm>
 
380
        <indexterm><primary>RID</primary></indexterm>
 
381
        <indexterm><primary>algorithmic mapping</primary></indexterm>
 
382
        Microsoft Windows domain security systems generate the user and group SID as part
 
383
        of the process of creation of an account. Windows does not have a concept of the UNIX UID or a GID; rather,
 
384
        it has its own type of security descriptor. When Samba is used as a domain controller, it provides a method
 
385
        of producing a unique SID for each user and group. Samba generates a machine and a domain SID to which it
 
386
        adds an RID that is calculated algorithmically from a base value that can be specified
 
387
        in the &smb.conf; file, plus twice (2x) the UID or GID. This method is called <quote>algorithmic mapping</quote>.
 
388
        </para>
 
389
 
 
390
        <para>
 
391
        <indexterm><primary>RID base</primary></indexterm>
 
392
        For example, if a user has a UID of 4321, and the algorithmic RID base has a value of 1000, the RID will
 
393
        be <literal>1000 + (2 x 4321) = 9642</literal>. Thus, if the domain SID is
 
394
        <literal>S-1-5-21-89238497-92787123-12341112</literal>, the resulting SID is
 
395
        <literal>S-1-5-21-89238497-92787123-12341112-9642</literal>.
 
396
        </para>
 
397
 
 
398
        <para>
 
399
        <indexterm><primary>on-the-fly</primary></indexterm>
 
400
        <indexterm><primary>SID</primary></indexterm>
 
401
        <indexterm><primary>passdb backend</primary></indexterm>
 
402
        <indexterm><primary>ldapsam</primary></indexterm>
 
403
        The foregoing type of SID is produced by Samba as an automatic function and is either produced on the fly
 
404
        (as is the case when using a <parameter>passdb backend = [tdbsam | smbpasswd]</parameter>), or may be stored
 
405
        as a permanent part of an account in an LDAP-based ldapsam.
 
406
        </para>
 
407
 
 
408
        <para>
 
409
        <indexterm><primary>SFU 3.5</primary></indexterm>
 
410
        <indexterm><primary>ADS</primary></indexterm>
 
411
        <indexterm><primary>directory schema</primary></indexterm>
 
412
        <indexterm><primary>account attributes</primary></indexterm>
 
413
        <indexterm><primary>UID</primary></indexterm>
 
414
        <indexterm><primary>GID</primary></indexterm>
 
415
        <indexterm><primary>ADS schema</primary></indexterm>
 
416
        <indexterm><primary>account management</primary></indexterm>
 
417
        <indexterm><primary>MMC</primary></indexterm>
 
418
        ADS uses a directory schema that can be extended to accommodate additional
 
419
        account attributes such as UIDs and GIDs. The installation of Microsoft Service for UNIX 3.5 will expand
 
420
        the normal ADS schema to include UNIX account attributes. These must of course be managed separately
 
421
        through a snap-in module to the normal ADS account management MMC interface.
 
422
        </para>
 
423
 
 
424
        <para>
 
425
        <indexterm><primary>PDC</primary></indexterm>
 
426
        <indexterm><primary>passdb backend</primary></indexterm>
 
427
        <indexterm><primary>BDC</primary></indexterm>
 
428
        <indexterm><primary>LDAP backend</primary></indexterm>
 
429
        Security identifiers used within a domain must be managed to avoid conflict and to preserve itegrity.
 
430
        In an NT4 domain context, the PDC manages the distribution of all security credentials to the backup
 
431
        domain controllers (BDCs). At this time the only passdb backend for a Samba domain controller that is suitable
 
432
        for such information is an LDAP backend.
 
433
        </para>
 
434
 
 
435
        </sect2>
 
436
 
 
437
        <sect2>
 
438
        <title>Backup Domain Controller</title>
 
439
 
 
440
        <para>
 
441
        <indexterm><primary>BDC</primary></indexterm>
 
442
        <indexterm><primary>read-only access</primary></indexterm>
 
443
        <indexterm><primary>security credentials</primary></indexterm>
 
444
        <indexterm><primary>LDAP</primary></indexterm>
 
445
        <indexterm><primary>group account</primary></indexterm>
 
446
        <indexterm><primary>write changes</primary></indexterm>
 
447
        <indexterm><primary>directory</primary></indexterm>
 
448
        BDCs have read-only access to security credentials that are stored in LDAP.
 
449
        Changes in user or group account information are passed by the BDC to the PDC. Only the PDC can write
 
450
        changes to the directory.
 
451
        </para>
 
452
 
 
453
        <para>
 
454
        IDMAP information can be written directly to the LDAP server so long as all domain controllers
 
455
        have access to the master (writable) LDAP server. Samba-3 at this time does not handle LDAP redirects
 
456
        in the IDMAP backend. This means that it is is unsafe to use a slave (replicate) LDAP server with
 
457
        the IDMAP facility.
 
458
        </para>
 
459
 
 
460
        </sect2>
 
461
 
 
462
</sect1>
 
463
 
 
464
<sect1>
 
465
<title>Examples of IDMAP Backend Usage</title>
 
466
 
 
467
<para>
 
468
<indexterm><primary>Domain Member Server</primary><see>DMS</see></indexterm>
 
469
<indexterm><primary>Domain Member Client</primary><see>DMC</see></indexterm>
 
470
<indexterm><primary>DMS</primary></indexterm>
 
471
<indexterm><primary>DMC</primary></indexterm>
 
472
<indexterm><primary>winbind</primary></indexterm>
 
473
Anyone who wishes to use <command>winbind</command> will find the following example configurations helpful.
 
474
Remember that in the majority of cases <command>winbind</command> is of primary interest for use with
 
475
domain member servers (DMSs) and domain member clients (DMCs).
 
476
</para>
 
477
 
 
478
        <sect2>
 
479
        <title>Default Winbind TDB</title>
 
480
 
 
481
        <para>
 
482
        Two common configurations are used:
 
483
        </para>
 
484
 
 
485
        <itemizedlist>
 
486
                <listitem><para>
 
487
                Networks that have an NT4 PDC (with or without BDCs) or a Samba PDC (with or without BDCs).
 
488
                </para></listitem>
 
489
 
 
490
                <listitem><para>
 
491
                Networks that use MS Windows 200x ADS.
 
492
                </para></listitem>
 
493
        </itemizedlist>
 
494
 
 
495
        <sect3>
 
496
        <title>NT4-Style Domains (Includes Samba Domains)</title>
 
497
 
 
498
        <para>
 
499
        <link linkend="idmapnt4dms">NT4 Domain Member Server smb.con</link> is a simple example of an NT4 DMS
 
500
        &smb.conf; file that shows only the global section.
 
501
        </para>
 
502
 
 
503
<example id="idmapnt4dms">
 
504
<title>NT4 Domain Member Server smb.conf</title>
 
505
<smbconfblock>
 
506
<smbconfcomment>Global parameters</smbconfcomment>
 
507
<smbconfsection name="[global]"/>
 
508
<smbconfoption name="workgroup">MEGANET2</smbconfoption>
 
509
<smbconfoption name="security">DOMAIN</smbconfoption>
 
510
<smbconfoption name="idmap uid">10000-20000</smbconfoption>
 
511
<smbconfoption name="idmap gid">10000-20000</smbconfoption>
 
512
<smbconfoption name="template primary group">"Domain Users"</smbconfoption>
 
513
<smbconfoption name="template shell">/bin/bash</smbconfoption>
 
514
</smbconfblock>
 
515
</example>
 
516
 
 
517
        <para>
 
518
        <indexterm><primary>winbind</primary></indexterm>
 
519
        <indexterm><primary>/etc/nsswitch.conf</primary></indexterm>
 
520
        The use of <command>winbind</command> requires configuration of NSS. Edit the <filename>/etc/nsswitch.conf</filename>
 
521
        so it includes the following entries:
 
522
<screen>
 
523
...
 
524
passwd: files winbind
 
525
shadow: files winbind
 
526
group:  files winbind
 
527
...
 
528
hosts:  files [dns] wins
 
529
...
 
530
</screen>
 
531
        The use of DNS in the hosts entry should be made only if DNS is used on site.
 
532
        </para>
 
533
 
 
534
        <para>
 
535
        The creation of the DMS requires the following steps:
 
536
        </para>
 
537
 
 
538
        <procedure>
 
539
                <step><para>
 
540
                Create or install an &smb.conf; file with the above configuration.
 
541
                </para></step>
 
542
 
 
543
                <step><para>
 
544
                Execute:
 
545
<screen>
 
546
&rootprompt; net rpc join -UAdministrator%password
 
547
Joined domain MEGANET2.
 
548
</screen>
 
549
        <indexterm><primary>join</primary></indexterm>
 
550
        The success of the join can be confirmed with the following command:
 
551
<screen>
 
552
&rootprompt; net rpc testjoin
 
553
Join to 'MIDEARTH' is OK
 
554
</screen>
 
555
                A failed join would report an error message like the following:
 
556
                <indexterm><primary>failed join</primary></indexterm>
 
557
<screen>
 
558
&rootprompt; net rpc testjoin
 
559
[2004/11/05 16:34:12, 0] utils/net_rpc_join.c:net_rpc_join_ok(66)
 
560
Join to domain 'MEGANET2' is not valid
 
561
</screen>
 
562
                </para></step>
 
563
 
 
564
                <step><para>
 
565
                <indexterm><primary>nmbd</primary></indexterm>
 
566
                <indexterm><primary>winbind</primary></indexterm>
 
567
                <indexterm><primary>smbd</primary></indexterm>
 
568
                Start the <command>nmbd, winbind,</command> and <command>smbd</command> daemons in the order shown.
 
569
                </para></step>
 
570
        </procedure>
 
571
 
 
572
        </sect3>
 
573
 
 
574
        <sect3>
 
575
        <title>ADS Domains</title>
 
576
 
 
577
        <para>
 
578
        <indexterm><primary>domain join</primary></indexterm>
 
579
        <indexterm><primary>ADS domain</primary></indexterm>
 
580
        The procedure for joining an ADS domain is similar to the NT4 domain join, except the &smb.conf; file
 
581
        will have the contents shown in <link linkend="idmapadsdms">ADS Domain Member Server smb.conf</link>
 
582
        </para>
 
583
 
 
584
<example id="idmapadsdms">
 
585
<title>ADS Domain Member Server smb.conf</title>
 
586
<smbconfblock>
 
587
<smbconfcomment>Global parameters</smbconfcomment>
 
588
<smbconfsection name="[global]"/>
 
589
<smbconfoption name="workgroup">BUTTERNET</smbconfoption>
 
590
<smbconfoption name="netbios name">GARGOYLE</smbconfoption>
 
591
<smbconfoption name="realm">BUTTERNET.BIZ</smbconfoption>
 
592
<smbconfoption name="security">ADS</smbconfoption>
 
593
<smbconfoption name="template shell">/bin/bash</smbconfoption>
 
594
<smbconfoption name="idmap uid">500-10000000</smbconfoption>
 
595
<smbconfoption name="idmap gid">500-10000000</smbconfoption>
 
596
<smbconfoption name="winbind use default domain">Yes</smbconfoption>
 
597
<smbconfoption name="winbind nested groups">Yes</smbconfoption>
 
598
<smbconfoption name="printer admin">"BUTTERNET\Domain Admins"</smbconfoption>
 
599
</smbconfblock>
 
600
</example>
 
601
 
 
602
        <para>
 
603
        <indexterm><primary>KRB</primary></indexterm>
 
604
        <indexterm><primary>kerberos</primary></indexterm>
 
605
        <indexterm><primary>/etc/krb5.conf</primary></indexterm>
 
606
        <indexterm><primary>MIT</primary></indexterm>
 
607
        <indexterm><primary>MIT kerberos</primary></indexterm>
 
608
        <indexterm><primary>Heimdal</primary></indexterm>
 
609
        <indexterm><primary>Heimdal kerberos</primary></indexterm>
 
610
        ADS DMS operation requires use of kerberos (KRB). For this to work, the <filename>krb5.conf</filename>
 
611
        must be configured. The exact requirements depends on which version of MIT or Heimdal Kerberos is being
 
612
        used. It is sound advice to use only the latest version, which at this time are MIT Kerberos version
 
613
        1.3.5 and Heimdal 0.61.
 
614
        </para>
 
615
 
 
616
        <para>
 
617
        The creation of the DMS requires the following steps:
 
618
        </para>
 
619
 
 
620
        <procedure>
 
621
                <step><para>
 
622
                Create or install an &smb.conf; file with the above configuration.
 
623
                </para></step>
 
624
 
 
625
                <step><para>
 
626
                Edit the <filename>/etc/nsswitch.conf</filename> file as shown above.
 
627
                </para></step>
 
628
 
 
629
                <step><para>
 
630
                Execute:
 
631
                <indexterm><primary>net</primary><secondary>ads</secondary><tertiary>join</tertiary></indexterm>
 
632
<screen>
 
633
&rootprompt; net ads join -UAdministrator%password
 
634
Joined domain BUTTERNET.
 
635
</screen>
 
636
        The success or failure of the join can be confirmed with the following command:
 
637
<screen>
 
638
&rootprompt; net ads testjoin
 
639
Using short domain name -- BUTTERNET
 
640
Joined 'GARGOYLE' to realm 'BUTTERNET.BIZ'
 
641
</screen>
 
642
        </para>
 
643
 
 
644
        <para>
 
645
        An invalid or failed join can be detected by executing:
 
646
<screen>
 
647
&rootprompt; net ads testjoin
 
648
GARGOYLE$@'s password:
 
649
[2004/11/05 16:53:03, 0] utils/net_ads.c:ads_startup(186)
 
650
  ads_connect: No results returned
 
651
Join to domain is not valid
 
652
</screen>
 
653
                <indexterm><primary>error message</primary></indexterm>
 
654
                <indexterm><primary>failure</primary></indexterm>
 
655
                <indexterm><primary>log level</primary></indexterm>
 
656
                <indexterm><primary>identify</primary></indexterm>
 
657
                The specific error message may differ from the above because it depends on the type of failure that
 
658
                may have occurred. Increase the <parameter>log level</parameter> to 10, repeat the test,
 
659
                and then examine the log files produced to identify the nature of the failure.
 
660
                </para></step>
 
661
 
 
662
                <step><para>
 
663
                Start the <command>nmbd</command>, <command>winbind</command>, and <command>smbd</command> daemons in the order shown.
 
664
                </para></step>
 
665
 
 
666
        </procedure>
 
667
 
 
668
        </sect3>
 
669
        </sect2>
 
670
 
 
671
        <sect2>
 
672
        <title>IDMAP_RID with Winbind</title>
 
673
 
 
674
        <para>
 
675
        <indexterm><primary>idmap_rid</primary></indexterm>
 
676
        <indexterm><primary>SID</primary></indexterm>
 
677
        <indexterm><primary>RID</primary></indexterm>
 
678
        <indexterm><primary>IDMAP</primary></indexterm>
 
679
        The <command>idmap_rid</command> facility is a new tool that, unlike native winbind, creates a
 
680
        predictable mapping of MS Windows SIDs to UNIX UIDs and GIDs. The key benefit of this method
 
681
        of implementing the Samba IDMAP facility is that it eliminates the need to store the IDMAP data
 
682
        in a central place. The downside is that it can be used only within a single ADS domain and
 
683
        is not compatible with trusted domain implementations.
 
684
        </para>
 
685
 
 
686
        <para>
 
687
        <indexterm><primary>SID</primary></indexterm>
 
688
        <indexterm><primary>allow trusted domains</primary></indexterm>
 
689
        <indexterm><primary>idmap uid</primary></indexterm>
 
690
        <indexterm><primary>idmap gid</primary></indexterm>
 
691
        This alternate method of SID to UID/GID  mapping can be achieved using the idmap_rid
 
692
        plug-in. This plug-in uses the RID of the user SID to derive the UID and GID by adding the
 
693
        RID to a base value specified. This utility requires that the parameter
 
694
        <quote>allow trusted domains = No</quote> be specified, as it is not compatible
 
695
        with multiple domain environments. The <parameter>idmap uid</parameter> and 
 
696
        <parameter>idmap gid</parameter> ranges must be specified.
 
697
        </para>
 
698
 
 
699
        <para>
 
700
        <indexterm><primary>idmap_rid</primary></indexterm>
 
701
        <indexterm><primary>realm</primary></indexterm>
 
702
        The idmap_rid facility can be used both for NT4/Samba-style domains and Active Directory.
 
703
        To use this with an NT4 domain, do not include the <parameter>realm</parameter> parameter; additionally, the
 
704
        method used to join the domain uses the <constant>net rpc join</constant> process.
 
705
        </para>
 
706
 
 
707
        <para>
 
708
        An example &smb.conf; file for and ADS domain environment is shown in <link linkend="idmapadsridDMS">ADS
 
709
        Domain Member smb.conf using idmap_rid</link>.
 
710
        </para>
 
711
 
 
712
<example id="idmapadsridDMS">
 
713
<title>ADS Domain Member smb.conf using idmap_rid</title>
 
714
<smbconfblock>
 
715
<smbconfcomment>Global parameters</smbconfcomment>
 
716
<smbconfsection name="[global]"/>
 
717
<smbconfoption name="workgroup">KPAK</smbconfoption>
 
718
<smbconfoption name="netbios name">BIGJOE</smbconfoption>
 
719
<smbconfoption name="realm">CORP.KPAK.COM</smbconfoption>
 
720
<smbconfoption name="server string">Office Server</smbconfoption>
 
721
<smbconfoption name="security">ADS</smbconfoption>
 
722
<smbconfoption name="allow trusted domains">No</smbconfoption>
 
723
<smbconfoption name="idmap backend">idmap_rid:KPAK=500-100000000</smbconfoption>
 
724
<smbconfoption name="idmap uid">500-100000000</smbconfoption>
 
725
<smbconfoption name="idmap gid">500-100000000</smbconfoption>
 
726
<smbconfoption name="template shell">/bin/bash</smbconfoption>
 
727
<smbconfoption name="winbind use default domain">Yes</smbconfoption>
 
728
<smbconfoption name="winbind enum users">No</smbconfoption>
 
729
<smbconfoption name="winbind enum groups">No</smbconfoption>
 
730
<smbconfoption name="winbind nested groups">Yes</smbconfoption>
 
731
<smbconfoption name="printer admin">"Domain Admins"</smbconfoption>
 
732
</smbconfblock>
 
733
</example>
 
734
 
 
735
        <para>
 
736
        <indexterm><primary>large domain</primary></indexterm>
 
737
        <indexterm><primary>Active Directory</primary></indexterm>
 
738
        <indexterm><primary>response</primary></indexterm>
 
739
        <indexterm><primary>getent</primary></indexterm>
 
740
        In a large domain with many users it is imperative to disable enumeration of users and groups.
 
741
        For example, at a site that has 22,000 users in Active Directory the winbind-based user and
 
742
        group resolution is unavailable for nearly 12 minutes following first startup of 
 
743
        <command>winbind</command>. Disabling enumeration resulted in instantaneous response.
 
744
        The disabling of user and group enumeration means that it will not be possible to list users
 
745
        or groups using the <command>getent passwd</command> and <command>getent group</command>
 
746
        commands. It will be possible to perform the lookup for individual users, as shown in the following procedure.
 
747
        </para>
 
748
 
 
749
        <para>
 
750
        <indexterm><primary>NSS</primary></indexterm>
 
751
        <indexterm><primary>/etc/nsswitch.conf</primary></indexterm>
 
752
        The use of this tool requires configuration of NSS as per the native use of winbind. Edit the
 
753
        <filename>/etc/nsswitch.conf</filename> so it has the following parameters:
 
754
<screen>
 
755
...
 
756
passwd: files winbind
 
757
shadow: files winbind
 
758
group:  files winbind
 
759
...
 
760
hosts:  files wins
 
761
...
 
762
</screen>
 
763
        </para>
 
764
 
 
765
        <para>
 
766
        The following procedure can use the idmap_rid facility:
 
767
        </para>
 
768
 
 
769
        <procedure>
 
770
                <step><para>
 
771
                Create or install an &smb.conf; file with the above configuration.
 
772
                </para></step>
 
773
 
 
774
                <step><para>
 
775
                Edit the <filename>/etc/nsswitch.conf</filename> file as shown above.
 
776
                </para></step>
 
777
 
 
778
                <step><para>
 
779
                Execute:
 
780
<screen>
 
781
&rootprompt; net ads join -UAdministrator%password
 
782
Using short domain name -- KPAK
 
783
Joined 'BIGJOE' to realm 'CORP.KPAK.COM'
 
784
</screen>
 
785
                </para>
 
786
 
 
787
                <para>
 
788
                <indexterm><primary>failed join</primary></indexterm>
 
789
                An invalid or failed join can be detected by executing:
 
790
<screen>
 
791
&rootprompt; net ads testjoin
 
792
BIGJOE$@'s password:
 
793
[2004/11/05 16:53:03, 0] utils/net_ads.c:ads_startup(186)
 
794
  ads_connect: No results returned
 
795
Join to domain is not valid
 
796
</screen>
 
797
                The specific error message may differ from the above because it depends on the type of failure that
 
798
                may have occurred. Increase the <parameter>log level</parameter> to 10, repeat the test,
 
799
                and then examine the log files produced to identify the nature of the failure.
 
800
                </para></step>
 
801
 
 
802
                <step><para>
 
803
                Start the <command>nmbd</command>, <command>winbind</command>, and <command>smbd</command> daemons in the order shown.
 
804
                </para></step>
 
805
 
 
806
                <step><para>
 
807
                Validate the operation of this configuration by executing:
 
808
                <indexterm><primary></primary></indexterm>
 
809
<screen>
 
810
&rootprompt; getent passwd administrator
 
811
administrator:x:1000:1013:Administrator:/home/BE/administrator:/bin/bash
 
812
</screen>
 
813
                </para></step>
 
814
        </procedure>
 
815
 
 
816
        </sect2>
 
817
 
 
818
        <sect2>
 
819
        <title>IDMAP Storage in LDAP Using Winbind</title>
 
820
 
 
821
        <para>
 
822
        <indexterm><primary>ADAM</primary></indexterm>
 
823
        <indexterm><primary>ADS</primary></indexterm>
 
824
        The storage of IDMAP information in LDAP can be used with both NT4/Samba-3-style domains and
 
825
        ADS domains. OpenLDAP is a commonly used LDAP server for this purpose, although any
 
826
        standards-complying LDAP server can be used. It is therefore possible to deploy this IDMAP
 
827
        configuration using the Sun iPlanet LDAP server, Novell eDirectory, Microsoft ADS plus ADAM,
 
828
        and so on.
 
829
        </para>
 
830
 
 
831
        <para>
 
832
        An example is for an ADS domain is shown in <link linkend="idmapldapDMS">ADS Domain Member Server using
 
833
        LDAP</link>.
 
834
        </para>
 
835
 
 
836
<example id="idmapldapDMS">
 
837
<title>ADS Domain Member Server using LDAP</title>
 
838
<smbconfblock>
 
839
<smbconfcomment>Global parameters</smbconfcomment>
 
840
<smbconfsection name="[global]"/>
 
841
<smbconfoption name="workgroup">SNOWSHOW</smbconfoption>
 
842
<smbconfoption name="netbios name">GOODELF</smbconfoption>
 
843
<smbconfoption name="realm">SNOWSHOW.COM</smbconfoption>
 
844
<smbconfoption name="server string">Samba Server</smbconfoption>
 
845
<smbconfoption name="security">ADS</smbconfoption>
 
846
<smbconfoption name="log level">1 ads:10 auth:10 sam:10 rpc:10</smbconfoption>
 
847
<smbconfoption name="ldap admin dn">cn=Manager,dc=SNOWSHOW,dc=COM</smbconfoption>
 
848
<smbconfoption name="ldap idmap suffix">ou=Idmap</smbconfoption>
 
849
<smbconfoption name="ldap suffix">dc=SNOWSHOW,dc=COM</smbconfoption>
 
850
<smbconfoption name="idmap backend">ldap:ldap://ldap.snowshow.com</smbconfoption>
 
851
<smbconfoption name="idmap uid">150000-550000</smbconfoption>
 
852
<smbconfoption name="idmap gid">150000-550000</smbconfoption>
 
853
<smbconfoption name="template shell">/bin/bash</smbconfoption>
 
854
<smbconfoption name="winbind use default domain">Yes</smbconfoption>
 
855
</smbconfblock>
 
856
</example>
 
857
 
 
858
        <para>
 
859
        <indexterm><primary>realm</primary></indexterm>
 
860
        In the case of an NT4 or Samba-3-style domain the <parameter>realm</parameter> is not used, and the
 
861
        command used to join the domain is <command>net rpc join</command>. The above example also demonstrates
 
862
        advanced error-reporting techniques that are documented in <link linkend="dbglvl">Reporting Bugs</link>.
 
863
        </para>
 
864
 
 
865
        <para>
 
866
        <indexterm><primary>MIT kerberos</primary></indexterm>
 
867
        <indexterm><primary>Heimdal kerberos</primary></indexterm>
 
868
        <indexterm><primary>/etc/krb5.conf</primary></indexterm>
 
869
        Where MIT kerberos is installed (version 1.3.4 or later), edit the <filename>/etc/krb5.conf</filename> 
 
870
        file so it has the following contents:
 
871
<screen>
 
872
[logging]
 
873
 default = FILE:/var/log/krb5libs.log
 
874
 kdc = FILE:/var/log/krb5kdc.log
 
875
 admin_server = FILE:/var/log/kadmind.log
 
876
 
 
877
[libdefaults]
 
878
 default_realm = SNOWSHOW.COM
 
879
 dns_lookup_realm = false
 
880
 dns_lookup_kdc = true
 
881
 
 
882
[appdefaults]
 
883
 pam = {
 
884
   debug = false
 
885
   ticket_lifetime = 36000
 
886
   renew_lifetime = 36000
 
887
   forwardable = true
 
888
   krb4_convert = false
 
889
 }
 
890
</screen>
 
891
        </para>
 
892
 
 
893
        <para>
 
894
        Where Heimdal kerberos is installed, edit the <filename>/etc/krb5.conf</filename>
 
895
        file so it is either empty (i.e., no contents) or it has the following contents:
 
896
<screen>
 
897
[libdefaults]
 
898
        default_realm = SNOWSHOW.COM
 
899
        clockskew = 300
 
900
 
 
901
[realms]
 
902
        SNOWSHOW.COM = {
 
903
                kdc = ADSDC.SHOWSHOW.COM
 
904
        }
 
905
        
 
906
[domain_realm]
 
907
        .snowshow.com = SNOWSHOW.COM
 
908
</screen>
 
909
        </para>
 
910
 
 
911
        <note><para>
 
912
        Samba cannot use the Heimdal libraries if there is no <filename>/etc/krb5.conf</filename> file.
 
913
        So long as there is an empty file, the Heimdal kerberos libraries will be usable. There is no
 
914
        need to specify any settings because Samba, using the Heimdal libraries, can figure this out automatically.
 
915
        </para></note>
 
916
 
 
917
        <para>
 
918
        Edit the NSS control file <filename>/etc/nsswitch.conf</filename> so it has the following entries:
 
919
<screen>
 
920
...
 
921
passwd: files ldap
 
922
shadow: files ldap
 
923
group:  files ldap
 
924
...
 
925
hosts:  files wins
 
926
...
 
927
</screen>
 
928
        </para>
 
929
 
 
930
        <para>
 
931
        <indexterm><primary>PADL</primary></indexterm>
 
932
        <indexterm><primary>/etc/ldap.conf</primary></indexterm>
 
933
        You will need the <ulink url="http://www.padl.com">PADL</ulink> <command>nss_ldap</command> 
 
934
        tool set for this solution. Configure the <filename>/etc/ldap.conf</filename> file so it has 
 
935
        the information needed. The following is an example of a working file:
 
936
<screen>
 
937
host    192.168.2.1
 
938
base    dc=snowshow,dc=com
 
939
binddn  cn=Manager,dc=snowshow,dc=com
 
940
bindpw  not24get
 
941
 
 
942
pam_password exop
 
943
 
 
944
nss_base_passwd ou=People,dc=snowshow,dc=com?one
 
945
nss_base_shadow ou=People,dc=snowshow,dc=com?one
 
946
nss_base_group  ou=Groups,dc=snowshow,dc=com?one
 
947
ssl     no
 
948
</screen>
 
949
        </para>
 
950
 
 
951
        <para>
 
952
        The following procedure may be followed to effect a working configuration:
 
953
        </para>
 
954
 
 
955
        <procedure>
 
956
                <step><para>
 
957
                Configure the &smb.conf; file as shown above.
 
958
                </para></step>
 
959
 
 
960
                <step><para>
 
961
                Create the <filename>/etc/krb5.conf</filename> file as shown above.
 
962
                </para></step>
 
963
 
 
964
                <step><para>
 
965
                Configure the <filename>/etc/nsswitch.conf</filename> file as shown above.
 
966
                </para></step>
 
967
 
 
968
                <step><para>
 
969
                Download, build, and install the PADL nss_ldap tool set. Configure the 
 
970
                <filename>/etc/ldap.conf</filename> file as shown above.
 
971
                </para></step>
 
972
 
 
973
                <step><para>
 
974
                Configure an LDAP server and initialize the directory with the top-level entries needed by IDMAP,
 
975
                shown in the following LDIF file:
 
976
<screen>
 
977
dn: dc=snowshow,dc=com
 
978
objectClass: dcObject
 
979
objectClass: organization
 
980
dc: snowshow
 
981
o: The Greatest Snow Show in Singapore.
 
982
description: Posix and Samba LDAP Identity Database
 
983
 
 
984
dn: cn=Manager,dc=snowshow,dc=com
 
985
objectClass: organizationalRole
 
986
cn: Manager
 
987
description: Directory Manager
 
988
 
 
989
dn: ou=Idmap,dc=snowshow,dc=com
 
990
objectClass: organizationalUnit
 
991
ou: idmap
 
992
</screen>
 
993
                </para></step>
 
994
 
 
995
                <step><para>
 
996
                Execute the command to join the Samba DMS to the ADS domain as shown here:
 
997
<screen>
 
998
&rootprompt; net ads testjoin
 
999
Using short domain name -- SNOWSHOW
 
1000
Joined 'GOODELF' to realm 'SNOWSHOW.COM'
 
1001
</screen>
 
1002
                </para></step>
 
1003
 
 
1004
                <step><para>
 
1005
                Store the LDAP server access password in the Samba <filename>secrets.tdb</filename> file as follows:
 
1006
<screen>
 
1007
&rootprompt; smbpasswd -w not24get
 
1008
</screen>
 
1009
                </para></step>
 
1010
 
 
1011
                <step><para>
 
1012
                Start the <command>nmbd</command>, <command>winbind</command>, and <command>smbd</command> daemons in the order shown.
 
1013
                </para></step>
 
1014
        </procedure>
 
1015
 
 
1016
        <para>
 
1017
        <indexterm><primary>diagnostic</primary></indexterm>
 
1018
        Follow the diagnositic procedures shown earlier in this chapter to identify success or failure of the join.
 
1019
        In many cases a failure is indicated by a silent return to the command prompt with no indication of the
 
1020
        reason for failure.
 
1021
        </para>
 
1022
 
 
1023
        </sect2>
 
1024
 
 
1025
        <sect2>
 
1026
        <title>IDMAP and NSS Using LDAP from ADS with RFC2307bis Schema Extension</title>
 
1027
 
 
1028
        <para>
 
1029
        <indexterm><primary>rfc2307bis</primary></indexterm>
 
1030
        <indexterm><primary>schema</primary></indexterm>
 
1031
        The use of this method is messy. The information provided in the following is for guidance only
 
1032
        and is very definitely not complete. This method does work; it is used in a number of large sites
 
1033
        and has an acceptable level of performance.
 
1034
        </para>
 
1035
 
 
1036
        <para>
 
1037
        An example &smb.conf; file is shown in <link linkend="idmaprfc2307">ADS Domain Member Server using
 
1038
RFC2307bis Schema Extension Date via NSS</link>.
 
1039
        </para>
 
1040
 
 
1041
<example id="idmaprfc2307">
 
1042
<title>ADS Domain Member Server using RFC2307bis Schema Extension Date via NSS</title>
 
1043
<smbconfblock>
 
1044
<smbconfcomment>Global parameters</smbconfcomment>
 
1045
<smbconfsection name="[global]"/>
 
1046
<smbconfoption name="workgroup">BOBBY</smbconfoption>
 
1047
<smbconfoption name="realm">BOBBY.COM</smbconfoption>
 
1048
<smbconfoption name="security">ADS</smbconfoption>
 
1049
<smbconfoption name="idmap uid">150000-550000</smbconfoption>
 
1050
<smbconfoption name="idmap gid">150000-550000</smbconfoption>
 
1051
<smbconfoption name="template shell">/bin/bash</smbconfoption>
 
1052
<smbconfoption name="winbind cache time">5</smbconfoption>
 
1053
<smbconfoption name="winbind use default domain">Yes</smbconfoption>
 
1054
<smbconfoption name="winbind trusted domains only">Yes</smbconfoption>
 
1055
<smbconfoption name="winbind nested groups">Yes</smbconfoption>
 
1056
</smbconfblock>
 
1057
</example>
 
1058
 
 
1059
        <para>
 
1060
        <indexterm><primary>nss_ldap</primary></indexterm>
 
1061
        The DMS must be joined to the domain using the usual procedure. Additionally, it is necessary
 
1062
        to build and install the PADL nss_ldap tool set. Be sure to build this tool set with the
 
1063
        following:
 
1064
<screen>
 
1065
./configure --enable-rfc2307bis --enable-schema-mapping
 
1066
make install
 
1067
</screen> 
 
1068
        </para>
 
1069
 
 
1070
        <para>
 
1071
        <indexterm><primary>/etc/nsswitch.conf</primary></indexterm>
 
1072
        The following <filename>/etc/nsswitch.conf</filename> file contents are required:
 
1073
<screen>
 
1074
...
 
1075
passwd: files ldap
 
1076
shadow: files ldap
 
1077
group:  files ldap
 
1078
...
 
1079
hosts:  files wins
 
1080
...
 
1081
</screen>
 
1082
        </para>
 
1083
 
 
1084
        <para>
 
1085
        <indexterm><primary>/etc/ldap.conf</primary></indexterm>
 
1086
        <indexterm><primary>nss_ldap</primary></indexterm>
 
1087
        The <filename>/etc/ldap.conf</filename> file must be configured also. Refer to the PADL documentation
 
1088
        and source code for nss_ldap to specific instructions.
 
1089
        </para>
 
1090
 
 
1091
        <para>
 
1092
        The next step involves preparation of the ADS schema. This is briefly discussed in the remaining
 
1093
        part of this chapter.
 
1094
        </para>
 
1095
 
 
1096
                <sect3>
 
1097
                <title>IDMAP, Active Directory, and MS Services for UNIX 3.5</title>
 
1098
 
 
1099
                <para>
 
1100
                <indexterm><primary>SFU</primary></indexterm>
 
1101
                The Microsoft Windows Service for UNIX (SFU) version 3.5 is available for free 
 
1102
                <ulink url="http://www.microsoft.com/windows/sfu/">download</ulink>
 
1103
                from the Microsoft Web site. You will need to download this tool and install it following
 
1104
                Microsoft instructions.
 
1105
                </para>
 
1106
 
 
1107
                </sect3>
 
1108
 
 
1109
                <sect3>
 
1110
                <title>IDMAP, Active Directory and AD4UNIX</title>
 
1111
 
 
1112
                <para>
 
1113
                Instructions for obtaining and installing the AD4UNIX tool set can be found from the
 
1114
                <ulink url="http://www.geekcomix.com/cgi-bin/classnotes/wiki.pl?LDAP01/An_Alternative_Approach">
 
1115
                Geekcomix</ulink> Web site.
 
1116
                </para>
 
1117
 
 
1118
                </sect3>
 
1119
 
 
1120
        </sect2>
 
1121
 
 
1122
</sect1>
 
1123
 
 
1124
</chapter>