~zulcss/samba/server-dailies-3.4

« back to all changes in this revision

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

  • Committer: Chuck Short
  • Date: 2010-09-28 20:38:39 UTC
  • Revision ID: zulcss@ubuntu.com-20100928203839-pgjulytsi9ue63x1
Initial version

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="winbind">
 
4
 
 
5
<chapterinfo>
 
6
        <author>
 
7
                <firstname>Tim</firstname><surname>Potter</surname>
 
8
                <affiliation>
 
9
                        <orgname>Samba Team</orgname>
 
10
                        <address><email>tpot@linuxcare.com.au</email></address>
 
11
                </affiliation>
 
12
        </author>
 
13
        &author.tridge;
 
14
        <author>
 
15
                <firstname>Naag</firstname><surname>Mummaneni</surname>
 
16
                <affiliation>
 
17
                        <address><email>getnag@rediffmail.com</email></address>
 
18
                </affiliation>
 
19
                <contrib>Notes for Solaris</contrib>
 
20
        </author>
 
21
        <author>
 
22
                <firstname>John</firstname><surname>Trostel</surname>
 
23
                <affiliation>
 
24
                        <orgname>SNAP</orgname>
 
25
                        <address><email>jtrostel@snapserver.com</email></address>
 
26
                </affiliation>
 
27
        </author>
 
28
        &author.jelmer;
 
29
        &author.jht;
 
30
        <pubdate>June 15, 2005</pubdate>
 
31
</chapterinfo>
 
32
 
 
33
<title>Winbind: Use of Domain Accounts</title>
 
34
 
 
35
<sect1>
 
36
        <title>Features and Benefits</title>
 
37
 
 
38
        <para>
 
39
<indexterm><primary>holy grail</primary></indexterm>
 
40
<indexterm><primary>heterogeneous computing</primary></indexterm>
 
41
        Integration of UNIX and Microsoft Windows NT through a unified logon has
 
42
        been considered a <quote>holy grail</quote> in heterogeneous computing environments for
 
43
        a long time.
 
44
        </para>
 
45
 
 
46
        <para>
 
47
<indexterm><primary>interoperability</primary></indexterm>
 
48
<indexterm><primary>domain user</primary></indexterm>
 
49
<indexterm><primary>domain group</primary></indexterm>
 
50
<indexterm><primary>group ownership</primary></indexterm>
 
51
        There is one other facility without which UNIX and Microsoft Windows network
 
52
        interoperability would suffer greatly. It is imperative that there be a
 
53
        mechanism for sharing files across UNIX systems and to be able to assign
 
54
        domain user and group ownerships with integrity.
 
55
        </para>
 
56
 
 
57
        <para>
 
58
<indexterm><primary>Pluggable Authentication Modules</primary><see>PAM</see></indexterm>
 
59
<indexterm><primary>winbind</primary></indexterm>
 
60
<indexterm><primary>NSS</primary></indexterm>
 
61
<indexterm><primary>RPC</primary></indexterm>
 
62
        <emphasis>winbind</emphasis> is a component of the Samba suite of programs that
 
63
        solves the unified logon problem. Winbind uses a UNIX implementation of Microsoft
 
64
        RPC calls, Pluggable Authentication Modules (PAMs), and the name service switch (NSS) to
 
65
        allow Windows NT domain users to appear and operate as UNIX users on a UNIX
 
66
        machine. This chapter describes the Winbind system, the functionality
 
67
        it provides, how it is configured, and how it works internally.
 
68
        </para>
 
69
 
 
70
        <para>
 
71
        Winbind provides three separate functions:
 
72
        </para>
 
73
 
 
74
        <itemizedlist>
 
75
                <listitem><para>
 
76
<indexterm><primary>ADS</primary></indexterm>
 
77
<indexterm><primary>NT4 domain</primary></indexterm>
 
78
                Authentication of user credentials (via PAM). This makes it possible to
 
79
                log onto a UNIX/Linux system using user and group accounts from a Windows
 
80
                NT4 (including a Samba domain) or an Active Directory domain.
 
81
                </para></listitem>
 
82
 
 
83
                <listitem><para>
 
84
<indexterm><primary>identity resolution</primary></indexterm>
 
85
<indexterm><primary>NSS</primary></indexterm>
 
86
                Identity resolution (via NSS). This is the default when winbind is not used.
 
87
                </para></listitem>
 
88
 
 
89
                <listitem><para>
 
90
<indexterm><primary>UID</primary></indexterm>
 
91
<indexterm><primary>GID</primary></indexterm>
 
92
<indexterm><primary>SID</primary></indexterm>
 
93
<indexterm><primary>idmap uid</primary></indexterm>
 
94
<indexterm><primary>idmap gid</primary></indexterm>
 
95
<indexterm><primary>idmap backend</primary></indexterm>
 
96
<indexterm><primary></primary>LDAP</indexterm>
 
97
                Winbind maintains a database called winbind_idmap.tdb in which it stores
 
98
                mappings between UNIX UIDs, GIDs, and NT SIDs. This mapping is used only
 
99
                for users and groups that do not have a local UID/GID. It stores the UID/GID
 
100
                allocated from the idmap uid/gid range that it has mapped to the NT SID.
 
101
                If <parameter>idmap backend</parameter> has been specified as <constant>ldap:ldap://hostname[:389]</constant>,
 
102
                then instead of using a local mapping, Winbind will obtain this information
 
103
                from the LDAP database.
 
104
                </para></listitem>
 
105
        </itemizedlist>
 
106
 
 
107
        <note><para>
 
108
        <indexterm><primary>winbindd</primary></indexterm>
 
109
        <indexterm><primary>starting samba</primary><secondary>winbindd</secondary></indexterm>
 
110
<indexterm><primary>/etc/passwd</primary></indexterm>
 
111
<indexterm><primary>/etc/group</primary></indexterm>
 
112
<indexterm><primary>smbd</primary></indexterm>
 
113
<indexterm><primary>NSS</primary></indexterm>
 
114
        If <command>winbindd</command> is not running, smbd (which calls <command>winbindd</command>) will fall back to
 
115
        using purely local information from <filename>/etc/passwd</filename> and <filename>/etc/group</filename> and no dynamic
 
116
        mapping will be used. On an operating system that has been enabled with the NSS,
 
117
        the resolution of user and group information will be accomplished via NSS.
 
118
        </para></note>
 
119
 
 
120
 
 
121
        <figure id="winbind_idmap">
 
122
        <title>Winbind Idmap</title>
 
123
        <imagefile scale="45">idmap_winbind_no_loop</imagefile>
 
124
        </figure>
 
125
 
 
126
</sect1>
 
127
 
 
128
 
 
129
<sect1>
 
130
        <title>Introduction</title>
 
131
 
 
132
        <para>It is well known that UNIX and Microsoft Windows NT have
 
133
        different models for representing user and group information and
 
134
        use different technologies for implementing them. This fact has
 
135
        made it difficult to integrate the two systems in a satisfactory
 
136
        manner.</para>
 
137
 
 
138
        <para>
 
139
<indexterm><primary>synchronization problems</primary></indexterm>
 
140
<indexterm><primary>passwords</primary></indexterm>
 
141
        One common solution in use today has been to create
 
142
        identically named user accounts on both the UNIX and Windows systems
 
143
        and use the Samba suite of programs to provide file and print services
 
144
        between the two. This solution is far from perfect, however, because
 
145
        adding and deleting users on both sets of machines becomes a chore,
 
146
        and two sets of passwords are required &smbmdash; both of which
 
147
        can lead to synchronization problems between the UNIX and Windows
 
148
        systems and confusion for users.</para>
 
149
 
 
150
        <para>We divide the unified logon problem for UNIX machines into
 
151
        three smaller problems:</para>
 
152
 
 
153
        <itemizedlist>
 
154
                <listitem><para>Obtaining Windows NT user and group information.
 
155
                </para></listitem>
 
156
 
 
157
                <listitem><para>Authenticating Windows NT users.
 
158
                </para></listitem>
 
159
 
 
160
                <listitem><para>Password changing for Windows NT users.
 
161
                </para></listitem>
 
162
        </itemizedlist>
 
163
 
 
164
 
 
165
        <para>
 
166
<indexterm><primary>unified logon</primary></indexterm>
 
167
<indexterm><primary>duplication of information</primary></indexterm>
 
168
        Ideally, a prospective solution to the unified logon problem
 
169
        would satisfy all the above components without duplication of
 
170
        information on the UNIX machines and without creating additional
 
171
        tasks for the system administrator when maintaining users and
 
172
        groups on either system. The Winbind system provides a simple
 
173
        and elegant solution to all three components of the unified logon
 
174
        problem.</para>
 
175
</sect1>
 
176
 
 
177
 
 
178
<sect1>
 
179
        <title>What Winbind Provides</title>
 
180
 
 
181
        <para>
 
182
<indexterm><primary>Windows account management</primary></indexterm>
 
183
<indexterm><primary>UNIX users</primary></indexterm>
 
184
<indexterm><primary>UNIX groups</primary></indexterm>
 
185
<indexterm><primary>NT domain</primary></indexterm>
 
186
        Winbind unifies UNIX and Windows NT account management by
 
187
        allowing a UNIX box to become a full member of an NT domain. Once
 
188
        this is done, the UNIX box will see NT users and groups as if
 
189
        they were <quote>native</quote> UNIX users and groups, allowing the NT domain
 
190
        to be used in much the same manner that NIS+ is used within
 
191
        UNIX-only environments.</para>
 
192
 
 
193
        <para>
 
194
<indexterm><primary>Winbind hooks</primary></indexterm>
 
195
<indexterm><primary>domain controller</primary></indexterm>
 
196
<indexterm><primary>NSS</primary></indexterm>
 
197
<indexterm><primary>redirection</primary></indexterm>
 
198
        The end result is that whenever a
 
199
        program on the UNIX machine asks the operating system to look up
 
200
        a user or group name, the query will be resolved by asking the
 
201
        NT domain controller for the specified domain to do the lookup.
 
202
        Because Winbind hooks into the operating system at a low level
 
203
        (via the NSS name resolution modules in the C library), this
 
204
        redirection to the NT domain controller is completely
 
205
        transparent.</para>
 
206
 
 
207
        <para>
 
208
<indexterm><primary>user and group</primary></indexterm>
 
209
<indexterm><primary>domain user</primary></indexterm>
 
210
        Users on the UNIX machine can then use NT user and group
 
211
        names as they would <quote>native</quote> UNIX names. They can chown files
 
212
        so they are owned by NT domain users or even login to the
 
213
        UNIX machine and run a UNIX X-Window session as a domain user.</para>
 
214
 
 
215
        <para>
 
216
<indexterm><primary>domain controller</primary></indexterm>
 
217
        The only obvious indication that Winbind is being used is
 
218
        that user and group names take the form <constant>DOMAIN\user</constant> and
 
219
        <constant>DOMAIN\group</constant>. This is necessary because it allows Winbind to determine
 
220
        that redirection to a domain controller is wanted for a particular
 
221
        lookup and which trusted domain is being referenced.</para>
 
222
 
 
223
        <para>
 
224
<indexterm><primary>PAM-enabled</primary></indexterm>
 
225
<indexterm><primary>domain controller</primary></indexterm>
 
226
        Additionally, Winbind provides an authentication service that hooks into the PAM system
 
227
        to provide authentication via an NT domain to any PAM-enabled
 
228
        applications. This capability solves the problem of synchronizing
 
229
        passwords between systems, since all passwords are stored in a single
 
230
        location (on the domain controller).</para>
 
231
 
 
232
        <sect2>
 
233
                <title>Target Uses</title>
 
234
 
 
235
                <para>
 
236
<indexterm><primary>infrastructure</primary></indexterm>
 
237
                Winbind is targeted at organizations that have an
 
238
                existing NT-based domain infrastructure into which they wish
 
239
                to put UNIX workstations or servers. Winbind will allow these
 
240
                organizations to deploy UNIX workstations without having to
 
241
                maintain a separate account infrastructure. This greatly
 
242
                simplifies the administrative overhead of deploying UNIX
 
243
                workstations into an NT-based organization.</para>
 
244
 
 
245
                <para>
 
246
<indexterm><primary>Appliances</primary></indexterm>
 
247
<indexterm><primary>Winbind</primary></indexterm>
 
248
                Another interesting way in which we expect Winbind to
 
249
                be used is as a central part of UNIX-based appliances. Appliances
 
250
                that provide file and print services to Microsoft-based networks
 
251
                will be able to use Winbind to provide seamless integration of
 
252
                the appliance into the domain.</para>
 
253
        </sect2>
 
254
 
 
255
        <sect2>
 
256
        <title>Handling of Foreign SIDs</title>
 
257
 
 
258
        <para>
 
259
<indexterm><primary>foreign SID</primary></indexterm>
 
260
        The term <emphasis>foreign SID</emphasis> is often met with the reaction that it
 
261
        is not relevant to a particular environment. The following documents an interchange
 
262
        that took place on the Samba mailing list. It is a good example of the confusion
 
263
        often expressed regarding the use of winbind.
 
264
        </para>
 
265
 
 
266
        <para>
 
267
<indexterm><primary>local domain</primary></indexterm>
 
268
        Fact: Winbind is needed to handle users who use workstations that are NOT part
 
269
        of the local domain.
 
270
        </para>
 
271
 
 
272
        <para>
 
273
<indexterm><primary>PDC</primary></indexterm>
 
274
        Response: <quote>Why? I've used Samba with workstations that are not part of my domains
 
275
        lots of times without using winbind. I thought winbind was for using Samba as a member server
 
276
        in a domain controlled by another Samba/Windows PDC.</quote>
 
277
        </para>
 
278
 
 
279
        <para>
 
280
<indexterm><primary>UID</primary></indexterm>
 
281
<indexterm><primary>GID</primary></indexterm>
 
282
<indexterm><primary>foreign user</primary></indexterm>
 
283
        If the Samba server will be accessed from a domain other than the local Samba domain, or
 
284
        if there will be access from machines that are not local domain members, winbind will
 
285
        permit the allocation of UIDs and GIDs from the assigned pool that will keep the identity
 
286
        of the foreign user separate from users that are members of the Samba domain.
 
287
        </para>
 
288
 
 
289
        <para>
 
290
<indexterm><primary>PDC</primary></indexterm>
 
291
<indexterm><primary>domain member</primary></indexterm>
 
292
<indexterm><primary>domain non-member</primary></indexterm>
 
293
<indexterm><primary>SID</primary></indexterm>
 
294
        This means that winbind is eminently useful in cases where a single
 
295
        Samba PDC on a local network is combined with both domain member and domain non-member workstations.
 
296
        If winbind is not used, the user george on a Windows workstation that is not a domain
 
297
        member will be able to access the files of a user called george in the account database
 
298
        of the Samba server that is acting as a PDC. When winbind is used, the default condition
 
299
        is that the local user george will be treated as the account DOMAIN\george and the
 
300
        foreign (non-member of the domain) account will be treated as MACHINE\george because
 
301
        each has a different SID.
 
302
        </para>
 
303
 
 
304
        </sect2>
 
305
</sect1>
 
306
 
 
307
 
 
308
 
 
309
<sect1>
 
310
        <title>How Winbind Works</title>
 
311
 
 
312
        <para>
 
313
<indexterm><primary>winbindd</primary></indexterm>
 
314
<indexterm><primary>UNIX domain socket</primary></indexterm>
 
315
<indexterm><primary>NSS</primary></indexterm>
 
316
<indexterm><primary>PAM</primary></indexterm>
 
317
        The Winbind system is designed around a client/server
 
318
        architecture. A long-running <command>winbindd</command> daemon
 
319
        listens on a UNIX domain socket waiting for requests
 
320
        to arrive. These requests are generated by the NSS and PAM
 
321
        clients and are processed sequentially.</para>
 
322
 
 
323
        <para>The technologies used to implement Winbind are described
 
324
        in detail below.</para>
 
325
 
 
326
        <sect2>
 
327
                <title>Microsoft Remote Procedure Calls</title>
 
328
 
 
329
                <para>
 
330
<indexterm><primary>Microsoft Remote Procedure Call</primary><see>MSRPC</see></indexterm>
 
331
<indexterm><primary>PDC</primary></indexterm>
 
332
<indexterm><primary>remote management</primary></indexterm>
 
333
<indexterm><primary>user authentication</primary></indexterm>
 
334
<indexterm><primary>print spooling</primary></indexterm>
 
335
                Over the last few years, efforts have been underway by various Samba Team members to implement various aspects of
 
336
                the Microsoft Remote Procedure Call (MSRPC) system. This system is used for most network-related operations
 
337
                between Windows NT machines, including remote management, user authentication, and print spooling. Although
 
338
                initially this work was done to aid the implementation of Primary Domain Controller (PDC) functionality in
 
339
                Samba, it has also yielded a body of code that can be used for other purposes.
 
340
                </para>
 
341
 
 
342
                <para>
 
343
<indexterm><primary>MSRPC</primary></indexterm>
 
344
<indexterm><primary>enumerate domain users</primary></indexterm>
 
345
<indexterm><primary>enumerate domain groups</primary></indexterm>
 
346
                Winbind uses various MSRPC calls to enumerate domain users and groups and to obtain detailed information about
 
347
                individual users or groups. Other MSRPC calls can be used to authenticate NT domain users and to change user
 
348
                passwords. By directly querying a Windows PDC for user and group information, Winbind maps the NT account
 
349
                information onto UNIX user and group names.
 
350
                </para>
 
351
        </sect2>
 
352
 
 
353
        <sect2>
 
354
                <title>Microsoft Active Directory Services</title>
 
355
 
 
356
                <para>
 
357
<indexterm><primary>LDAP</primary></indexterm>
 
358
<indexterm><primary>Kerberos</primary></indexterm>
 
359
<indexterm><primary>Winbind</primary></indexterm>
 
360
<indexterm><primary>native mode</primary></indexterm>
 
361
                Since late 2001, Samba has gained the ability to interact with Microsoft Windows 2000 using its <quote>native
 
362
                mode</quote> protocols rather than the NT4 RPC services.  Using LDAP and Kerberos, a domain member running
 
363
                Winbind can enumerate users and groups in exactly the same way as a Windows 200x client would, and in so doing
 
364
                provide a much more efficient and effective Winbind implementation.
 
365
                </para>
 
366
        </sect2>
 
367
 
 
368
        <sect2>
 
369
                <title>Name Service Switch</title>
 
370
 
 
371
                <para>
 
372
<indexterm><primary>NSS</primary></indexterm>
 
373
<indexterm><primary>networked workstation</primary></indexterm>
 
374
<indexterm><primary>NIS</primary></indexterm>
 
375
<indexterm><primary>DNS</primary></indexterm>
 
376
                The NSS is a feature that is present in many UNIX operating systems. It allows system
 
377
                information such as hostnames, mail aliases, and user information
 
378
                to be resolved from different sources. For example, a standalone
 
379
                UNIX workstation may resolve system information from a series of
 
380
                flat files stored on the local file system. A networked workstation
 
381
                may first attempt to resolve system information from local files,
 
382
                and then consult an NIS database for user information or a DNS server
 
383
                for hostname information.</para>
 
384
 
 
385
                <para>
 
386
<indexterm><primary>NSS</primary></indexterm>
 
387
<indexterm><primary>MSRPC</primary></indexterm>
 
388
<indexterm><primary>trusted domain</primary></indexterm>
 
389
<indexterm><primary>local users</primary></indexterm>
 
390
<indexterm><primary>local groups</primary></indexterm>
 
391
                The NSS application programming interface allows Winbind to present itself as a source of system
 
392
                information when resolving UNIX usernames and groups. Winbind uses this interface and information obtained
 
393
                from a Windows NT server using MSRPC calls to provide a new source of account enumeration. Using standard UNIX
 
394
                library calls, you can enumerate the users and groups on a UNIX machine running Winbind and see all users and
 
395
                groups in an NT domain plus any trusted domain as though they were local users and groups.
 
396
                </para>
 
397
 
 
398
                <para>
 
399
<indexterm><primary>NSS</primary></indexterm>
 
400
<indexterm><primary>/etc/nsswitch.conf</primary></indexterm>
 
401
<indexterm><primary>passwd</primary></indexterm>
 
402
                The primary control file for NSS is <filename>/etc/nsswitch.conf</filename>.  When a UNIX application
 
403
                makes a request to do a lookup, the C library looks in <filename>/etc/nsswitch.conf</filename> for a line that
 
404
                matches the service type being requested; for example, the <quote>passwd</quote> service type is used when
 
405
                user or group names are looked up. This config line specifies which implementations of that service should be
 
406
                tried and in what order. If the passwd config line is:
 
407
<screen>
 
408
passwd: files example
 
409
</screen>
 
410
<indexterm><primary>/lib/libnss_files.so</primary></indexterm>
 
411
<indexterm><primary>/lib/libnss_example.so</primary></indexterm>
 
412
<indexterm><primary>resolver functions</primary></indexterm>
 
413
                then the C library will first load a module called <filename>/lib/libnss_files.so</filename> followed
 
414
                by the module <filename>/lib/libnss_example.so</filename>. The C library will dynamically load each of these
 
415
                modules in turn and call resolver functions within the modules to try to resolve the request. Once the request
 
416
                is resolved, the C library returns the result to the application.
 
417
                </para>
 
418
 
 
419
                <para>
 
420
<indexterm><primary>NSS</primary></indexterm>
 
421
<indexterm><primary>libnss_winbind.so</primary></indexterm>
 
422
<indexterm><primary>/etc/nsswitch.conf</primary></indexterm>
 
423
                This NSS interface provides an easy way for Winbind to hook into the operating system. All that needs
 
424
                to be done is to put <filename>libnss_winbind.so</filename> in <filename>/lib/</filename> then add
 
425
                <quote>winbind</quote> into <filename>/etc/nsswitch.conf</filename> at the appropriate place. The C library
 
426
                will then call Winbind to resolve user and group names.
 
427
                </para>
 
428
        </sect2>
 
429
 
 
430
        <sect2>
 
431
                <title>Pluggable Authentication Modules</title>
 
432
 
 
433
                <para>
 
434
<indexterm><primary>PAM</primary></indexterm>
 
435
<indexterm><primary>authentication methods</primary></indexterm>
 
436
<indexterm><primary>authorization</primary></indexterm>
 
437
<indexterm><primary>NIS database</primary></indexterm>
 
438
                PAMs provide a system for abstracting authentication and authorization technologies. With a PAM
 
439
                module, it is possible to specify different authentication methods for different system applications without
 
440
                having to recompile these applications. PAM is also useful for implementing a particular policy for
 
441
                authorization. For example, a system administrator may only allow console logins from users stored in the
 
442
                local password file but only allow users resolved from an NIS database to log in over the network.
 
443
                </para>
 
444
 
 
445
                <para>
 
446
<indexterm><primary>PAM</primary></indexterm>
 
447
<indexterm><primary>Winbind</primary></indexterm>
 
448
<indexterm><primary>authentication management</primary></indexterm>
 
449
<indexterm><primary>password management</primary></indexterm>
 
450
<indexterm><primary>PDC</primary></indexterm>
 
451
                Winbind uses the authentication management and password management PAM interface to integrate Windows
 
452
                NT users into a UNIX system. This allows Windows NT users to log in to a UNIX machine and be authenticated
 
453
                against a suitable PDC.  These users can also change their passwords and have this change take effect directly
 
454
                on the PDC.
 
455
                </para>
 
456
 
 
457
                <para>
 
458
<indexterm><primary>PAM</primary></indexterm>
 
459
<indexterm><primary>/etc/pam.d/</primary></indexterm>
 
460
<indexterm><primary>pam_winbind.so</primary></indexterm>
 
461
<indexterm><primary>/lib/security/</primary></indexterm>
 
462
                PAM is configured by providing control files in the directory <filename>/etc/pam.d/</filename> for
 
463
                each of the services that require authentication. When an authentication request is made by an application,
 
464
                the PAM code in the C library looks up this control file to determine what modules to load to do the
 
465
                authentication check and in what order. This interface makes adding a new authentication service for Winbind
 
466
                very easy: simply copy the <filename>pam_winbind.so</filename> module to <filename>/lib/security/</filename>,
 
467
                and the PAM control files for relevant services are updated to allow authentication via Winbind. See the PAM
 
468
                documentation in <link linkend="pam">PAM-Based Distributed Authentication</link>, for more information.
 
469
                </para>
 
470
        </sect2>
 
471
 
 
472
        <sect2>
 
473
                <title>User and Group ID Allocation</title>
 
474
 
 
475
                <para>
 
476
<indexterm><primary>RID</primary></indexterm>
 
477
<indexterm><primary>Winbind</primary></indexterm>
 
478
<indexterm><primary>UNIX ID</primary></indexterm>
 
479
                When a user or group is created under Windows NT/200x, it is allocated a numerical relative identifier
 
480
                (RID). This is slightly different from UNIX, which has a range of numbers that are used to identify users and
 
481
                the same range used to identify groups. It is Winbind's job to convert RIDs to UNIX ID numbers and vice versa.
 
482
                When Winbind is configured, it is given part of the UNIX user ID space and a part of the UNIX group ID space
 
483
                in which to store Windows NT users and groups. If a Windows NT user is resolved for the first time, it is
 
484
                allocated the next UNIX ID from the range. The same process applies for Windows NT groups. Over time, Winbind
 
485
                will have mapped all Windows NT users and groups to UNIX user IDs and group IDs.
 
486
                </para>
 
487
 
 
488
                <para>
 
489
<indexterm><primary>ID mapping database</primary></indexterm>
 
490
<indexterm><primary>tdb</primary></indexterm>
 
491
<indexterm><primary>UNIX ID</primary></indexterm>
 
492
<indexterm><primary>RID</primary></indexterm>
 
493
                The results of this mapping are stored persistently in an ID mapping database held in a tdb database.
 
494
                This ensures that RIDs are mapped to UNIX IDs in a consistent way.
 
495
                </para>
 
496
        </sect2>
 
497
 
 
498
        <sect2>
 
499
                <title>Result Caching</title>
 
500
 
 
501
                <para>
 
502
<indexterm><primary>SAM</primary></indexterm>
 
503
<indexterm><primary>caching scheme</primary></indexterm>
 
504
<indexterm><primary>Winbind</primary></indexterm>
 
505
<indexterm><primary>ADS</primary></indexterm>
 
506
<indexterm><primary>PDC</primary></indexterm>
 
507
                An active directory system can generate a lot of user and group name lookups. To reduce the network
 
508
                cost of these lookups, Winbind uses a caching scheme based on the SAM sequence number supplied by NT domain
 
509
                controllers. User or group information returned by a PDC is cached by Winbind along with a sequence number
 
510
                also returned by the PDC. This sequence number is incremented by Windows NT whenever any user or group
 
511
                information is modified. If a cached entry has expired, the sequence number is requested from the PDC and
 
512
                compared against the sequence number of the cached entry.  If the sequence numbers do not match, then the
 
513
                cached information is discarded and up-to-date information is requested directly from the PDC.
 
514
                </para>
 
515
        </sect2>
 
516
</sect1>
 
517
 
 
518
 
 
519
<sect1>
 
520
        <title>Installation and Configuration</title>
 
521
 
 
522
<sect2>
 
523
<title>Introduction</title>
 
524
 
 
525
<para>
 
526
<indexterm><primary>Winbind</primary></indexterm>
 
527
<indexterm><primary>PDC</primary></indexterm>
 
528
<indexterm><primary>authentication control</primary></indexterm>
 
529
This section describes the procedures used to get Winbind up and running. Winbind is capable of providing
 
530
access and authentication control for Windows Domain users through an NT or Windows 200x PDC for regular
 
531
services, such as telnet and ftp, as well for Samba services.
 
532
</para>
 
533
 
 
534
<itemizedlist>
 
535
<listitem>
 
536
        <para>
 
537
        <emphasis>Why should I do this?</emphasis>
 
538
        </para>
 
539
 
 
540
        <para>
 
541
<indexterm><primary>Samba administrator</primary></indexterm>
 
542
<indexterm><primary>authentication mechanisms</primary></indexterm>
 
543
<indexterm><primary>domain members</primary></indexterm>
 
544
<indexterm><primary>accounts</primary></indexterm>
 
545
This allows the Samba administrator to rely on the authentication mechanisms on the Windows NT/200x PDC
 
546
for the authentication of domain members. Windows NT/200x users no longer need to have separate accounts on
 
547
the Samba server.
 
548
        </para>
 
549
</listitem>
 
550
 
 
551
<listitem>
 
552
        <para>
 
553
        <emphasis>Who should be reading this document?</emphasis>
 
554
        </para>
 
555
 
 
556
        <para>
 
557
<indexterm><primary>PDC</primary></indexterm>
 
558
<indexterm><primary>Windows NT/200x</primary></indexterm>
 
559
This document is designed for system administrators. If you are implementing Samba on a file server and wish
 
560
to (fairly easily) integrate existing Windows NT/200x users from your PDC onto the Samba server, this document
 
561
is for you.
 
562
        </para>
 
563
</listitem>
 
564
</itemizedlist>
 
565
</sect2>
 
566
 
 
567
 
 
568
<sect2>
 
569
<title>Requirements</title>
 
570
 
 
571
<para>
 
572
<indexterm><primary>PAM</primary></indexterm>
 
573
<indexterm><primary>back up</primary></indexterm>
 
574
<indexterm><primary>boot disk`</primary></indexterm>
 
575
If you have a Samba configuration file that you are currently using, <emphasis>BACK IT UP!</emphasis>
 
576
If your system already uses PAM, <emphasis>back up the <filename>/etc/pam.d</filename> directory
 
577
contents!</emphasis> If you haven't already made a boot disk, <emphasis>MAKE ONE NOW!</emphasis>
 
578
</para>
 
579
 
 
580
<para>
 
581
<indexterm><primary>PAM configuration</primary></indexterm>
 
582
<indexterm><primary>/etc/pam.d</primary></indexterm>
 
583
<indexterm><primary>single-user mode</primary></indexterm>
 
584
Messing with the PAM configuration files can make it nearly impossible to log in to your machine. That's
 
585
why you want to be able to boot back into your machine in single-user mode and restore your
 
586
<filename>/etc/pam.d</filename> to the original state it was in if you get frustrated with the
 
587
way things are going.
 
588
</para>
 
589
 
 
590
<para>
 
591
<indexterm><primary>winbindd</primary></indexterm>
 
592
<indexterm><primary>daemon</primary></indexterm>
 
593
The latest version of Samba-3 includes a functioning winbindd daemon. Please refer to the <ulink
 
594
url="http://samba.org/">main Samba Web page</ulink>, or better yet, your closest Samba mirror site for
 
595
instructions on downloading the source code.
 
596
</para>
 
597
 
 
598
<para>
 
599
<indexterm><primary>domain users</primary></indexterm>
 
600
<indexterm><primary>shares and files</primary></indexterm>
 
601
<indexterm><primary>PAM</primary></indexterm>
 
602
<indexterm><primary>development libraries</primary></indexterm>
 
603
To allow domain users the ability to access Samba shares and files, as well as potentially other services
 
604
provided by your Samba machine, PAM must be set up properly on your
 
605
machine. In order to compile the Winbind modules, you should have at least the PAM development libraries installed
 
606
on your system. Please refer to the PAM Web site <ulink url="http://www.kernel.org/pub/linux/libs/pam/"/>.
 
607
</para>
 
608
</sect2>
 
609
 
 
610
<sect2>
 
611
<title>Testing Things Out</title>
 
612
 
 
613
<para>
 
614
<indexterm><primary>smbd</primary></indexterm>
 
615
<indexterm><primary>nmbd</primary></indexterm>
 
616
<indexterm><primary>winbindd</primary></indexterm>
 
617
<indexterm><primary>/etc/pam.d</primary></indexterm>
 
618
<indexterm><primary>PAM</primary></indexterm>
 
619
Before starting, it is probably best to kill off all the Samba-related daemons running on your server.
 
620
Kill off all &smbd;, &nmbd;, and &winbindd; processes that may be running. To use PAM,
 
621
make sure that you have the standard PAM package that supplies the <filename>/etc/pam.d</filename>
 
622
directory structure, including the PAM modules that are used by PAM-aware services, several PAM libraries,
 
623
and the <filename>/usr/doc</filename> and <filename>/usr/man</filename> entries for PAM. Winbind is built
 
624
better in Samba if the pam-devel package is also installed. This package includes the header files
 
625
needed to compile PAM-aware applications.
 
626
</para>
 
627
 
 
628
<sect3>
 
629
<title>Configure <filename>nsswitch.conf</filename> and the Winbind Libraries on Linux and Solaris</title>
 
630
 
 
631
<para>
 
632
<indexterm><primary>PAM</primary></indexterm>
 
633
<indexterm><primary>pam-devel</primary></indexterm>
 
634
<indexterm><primary>Winbind</primary></indexterm>
 
635
<indexterm><primary>/etc/nsswitch.conf</primary></indexterm>
 
636
PAM is a standard component of most current generation UNIX/Linux systems. Unfortunately, few systems install
 
637
the <filename>pam-devel</filename> libraries that are needed to build PAM-enabled Samba. Additionally, Samba-3
 
638
may auto-install the Winbind files into their correct locations on your system, so before you get too far down
 
639
the track, be sure to check if the following configuration is really
 
640
necessary. You may only need to configure
 
641
<filename>/etc/nsswitch.conf</filename>.
 
642
</para>
 
643
 
 
644
<para>
 
645
The libraries needed to run the &winbindd; daemon through nsswitch need to be copied to their proper locations:
 
646
</para>
 
647
 
 
648
<para>
 
649
<indexterm><primary>libnss_winbind.so</primary></indexterm>
 
650
<screen>
 
651
&rootprompt;<userinput>cp ../samba/source/nsswitch/libnss_winbind.so /lib</userinput>
 
652
</screen>
 
653
</para>
 
654
 
 
655
<para>
 
656
I also found it necessary to make the following symbolic link:
 
657
</para>
 
658
 
 
659
<para>
 
660
&rootprompt; <userinput>ln -s /lib/libnss_winbind.so /lib/libnss_winbind.so.2</userinput>
 
661
</para>
 
662
 
 
663
<para>And, in the case of Sun Solaris:
 
664
<indexterm><primary>nss_winbind.so.1</primary></indexterm>
 
665
<screen>
 
666
&rootprompt;<userinput>ln -s /usr/lib/libnss_winbind.so /usr/lib/libnss_winbind.so.1</userinput>
 
667
&rootprompt;<userinput>ln -s /usr/lib/libnss_winbind.so /usr/lib/nss_winbind.so.1</userinput>
 
668
&rootprompt;<userinput>ln -s /usr/lib/libnss_winbind.so /usr/lib/nss_winbind.so.2</userinput>
 
669
</screen>
 
670
</para>
 
671
 
 
672
<para>
 
673
<indexterm><primary>/etc/nsswitch.conf</primary></indexterm>
 
674
As root, edit <filename>/etc/nsswitch.conf</filename> to allow user and group entries to be visible from the
 
675
&winbindd; daemon. My <filename>/etc/nsswitch.conf</filename> file looked like this after editing:
 
676
<programlisting>
 
677
passwd:     files winbind
 
678
shadow:     files
 
679
group:      files winbind
 
680
</programlisting></para>
 
681
 
 
682
<para>
 
683
<indexterm><primary>winbindd</primary></indexterm>
 
684
<indexterm><primary>ldconfig</primary></indexterm>
 
685
<indexterm><primary>libnss_winbind</primary></indexterm>
 
686
<indexterm><primary>grep</primary></indexterm>
 
687
<indexterm><primary>dynamic link loader</primary></indexterm>
 
688
The libraries needed by the <command>winbindd</command> daemon will be automatically
 
689
entered into the <command>ldconfig</command> cache the next time
 
690
your system reboots, but it is faster (and you do not need to reboot) if you do it manually:
 
691
<screen>
 
692
&rootprompt;<userinput>/sbin/ldconfig -v | grep winbind</userinput>
 
693
</screen>
 
694
This makes <filename>libnss_winbind</filename> available to winbindd and reports the current
 
695
search path that is used by the dynamic link loader. The use of the <command>grep</command>
 
696
filters the output of the <command>ldconfig</command> command so that we may see proof that
 
697
this library is indeed recognized by the dynamic link loader.
 
698
</para>
 
699
 
 
700
<para>
 
701
<indexterm><primary>dynamic link loader</primary></indexterm>
 
702
<indexterm><primary>crle</primary></indexterm>
 
703
<indexterm><primary>/usr/local/lib</primary></indexterm>
 
704
<indexterm><primary>link loader configuration</primary></indexterm>
 
705
<indexterm><primary>object module dependencies</primary></indexterm>
 
706
The Sun Solaris dynamic link loader management tool is called <command>crle</command>. The
 
707
use of this tool is necessary to instruct the dynamic link loader to search directories that
 
708
contain library files that were not supplied as part of the original operating system platform.
 
709
The following example shows how to use this tool to add the directory <filename>/usr/local/lib</filename>
 
710
to the dynamic link loader's search path:
 
711
<screen>
 
712
&rootprompt; crle -u -l /usr/lib:/usr/local/lib
 
713
</screen>
 
714
When executed without arguments, <command>crle</command> reports the current dynamic
 
715
link loader configuration. This is demonstrated here:
 
716
<screen>
 
717
&rootprompt; crle
 
718
 
 
719
Configuration file [version 4]: /var/ld/ld.config
 
720
  Default Library Path (ELF):   /lib:/usr/lib:/usr/local/lib
 
721
  Trusted Directories (ELF):    /lib/secure:/usr/lib/secure  (system default)
 
722
 
 
723
Command line:
 
724
  crle -c /var/ld/ld.config -l /lib:/usr/lib:/usr/local/lib
 
725
</screen>
 
726
From this it is apparent that the <filename>/usr/local/lib</filename> directory is included
 
727
in the search dynamic link libraries in order to satisfy object module dependencies.
 
728
</para>
 
729
 
 
730
</sect3>
 
731
 
 
732
<sect3>
 
733
<title>NSS Winbind on AIX</title>
 
734
 
 
735
<para>(This section is only for those running AIX.)</para>
 
736
 
 
737
<para>
 
738
<indexterm><primary>AIX</primary></indexterm>
 
739
<indexterm><primary>Winbind</primary></indexterm>
 
740
<indexterm><primary>/usr/lib/security</primary></indexterm>
 
741
<indexterm><primary>authentication module API</primary></indexterm>
 
742
<indexterm><primary>/usr/lib/security/methods.cfg</primary></indexterm>
 
743
<indexterm><primary>PAM module</primary></indexterm>
 
744
The Winbind AIX identification module gets built as <filename>libnss_winbind.so</filename> in the
 
745
nsswitch directory of the Samba source. This file can be copied to <filename>/usr/lib/security</filename>,
 
746
and the AIX naming convention would indicate that it should be named WINBIND. A stanza like the following:
 
747
<programlisting>
 
748
WINBIND:
 
749
        program = /usr/lib/security/WINBIND
 
750
        options = authonly
 
751
</programlisting>
 
752
can then be added to <filename>/usr/lib/security/methods.cfg</filename>. This module only supports
 
753
identification, but there have been reports of success using the standard Winbind PAM module for
 
754
authentication. Use caution configuring loadable authentication modules, since misconfiguration can make
 
755
it impossible to log on to the system.  Information regarding the AIX authentication module API can
 
756
be found in the <quote>Kernel Extensions and Device Support Programming Concepts for AIX</quote> document that
 
757
describes the <ulink url="http://publibn.boulder.ibm.com/doc_link/en_US/a_doc_lib/aixprggd/kernextc/sec_load_mod.htm">
 
758
Loadable Authentication Module Programming Interface</ulink> for AIX. Further information on administering the modules
 
759
can be found in the <ulink url="http://publibn.boulder.ibm.com/doc_link/en_US/a_doc_lib/aixbman/baseadmn/iandaadmin.htm">System
 
760
Management Guide: Operating System and Devices.</ulink>
 
761
</para>
 
762
</sect3>
 
763
 
 
764
<sect3>
 
765
<title>Configure smb.conf</title>
 
766
 
 
767
<para>
 
768
<indexterm><primary>winbind</primary></indexterm>
 
769
<indexterm><primary>man page</primary></indexterm>
 
770
<indexterm><primary>winbindd</primary></indexterm>
 
771
Several parameters are needed in the &smb.conf; file to control the behavior of &winbindd;. These
 
772
are described in more detail in the <citerefentry><refentrytitle>winbindd</refentrytitle>
 
773
<manvolnum>8</manvolnum></citerefentry> man page. My &smb.conf; file, as shown in <link
 
774
linkend="winbindcfg">the smb.conf for Winbind Setup</link>, was modified to include the necessary entries in the [global] section.
 
775
</para>
 
776
 
 
777
<example id="winbindcfg">
 
778
<title>smb.conf for Winbind Setup</title>
 
779
<smbconfblock>
 
780
<smbconfsection name="[global]"/>
 
781
<smbconfcomment> separate domain and username with '\', like DOMAIN\username</smbconfcomment>
 
782
<smbconfoption name="winbind separator">\</smbconfoption>
 
783
<smbconfcomment> use uids from 10000 to 20000 for domain users</smbconfcomment>
 
784
<smbconfoption name="idmap uid">10000-20000</smbconfoption>
 
785
<smbconfcomment> use gids from 10000 to 20000 for domain groups</smbconfcomment>
 
786
<smbconfoption name="idmap gid">10000-20000</smbconfoption>
 
787
<smbconfcomment> allow enumeration of winbind users and groups</smbconfcomment>
 
788
<smbconfoption name="winbind enum users">yes</smbconfoption>
 
789
<smbconfoption name="winbind enum groups">yes</smbconfoption>
 
790
<smbconfcomment> give winbind users a real shell (only needed if they have telnet access)</smbconfcomment>
 
791
<smbconfoption name="template homedir">/home/winnt/%D/%U</smbconfoption>
 
792
<smbconfoption name="template shell">/bin/bash</smbconfoption>
 
793
</smbconfblock>
 
794
</example>
 
795
 
 
796
</sect3>
 
797
 
 
798
 
 
799
<sect3>
 
800
<title>Join the Samba Server to the PDC Domain</title>
 
801
 
 
802
<para>
 
803
<indexterm><primary>domain security</primary></indexterm>
 
804
<indexterm><primary>PDC</primary></indexterm>
 
805
<indexterm><primary>BDC</primary></indexterm>
 
806
All machines that will participate in domain security should be members of
 
807
the domain. This applies also to the PDC and all BDCs.
 
808
</para>
 
809
 
 
810
<para>
 
811
<indexterm><primary>joining domain</primary></indexterm>
 
812
<indexterm><primary>domain join</primary></indexterm>
 
813
<indexterm><primary>net</primary><secondary>rpc</secondary><tertiary>join</tertiary></indexterm>
 
814
<indexterm><primary>smbd</primary></indexterm>
 
815
<indexterm><primary>PDC</primary></indexterm>
 
816
<indexterm><primary>domain controller</primary></indexterm>
 
817
<indexterm><primary>MS DCE RPC</primary></indexterm>
 
818
<indexterm><primary>DCE RPC</primary></indexterm>
 
819
<indexterm><primary>RPC</primary></indexterm>
 
820
The process of joining a domain requires the use of the <command>net rpc join</command>
 
821
command. This process communicates with the domain controller it will register with
 
822
(usually the PDC) via MS DCE RPC. This means, of course, that the <command>smbd</command>
 
823
process must be running on the target domain controller. It is therefore necessary to temporarily
 
824
start Samba on a PDC so that it can join its own domain.
 
825
</para>
 
826
 
 
827
<para>
 
828
<indexterm><primary>PDC</primary></indexterm>
 
829
<indexterm><primary>administrative privileges</primary></indexterm>
 
830
<indexterm><primary>Administrator</primary></indexterm>
 
831
Enter the following command to make the Samba server join the domain, where <replaceable>PDC</replaceable> is
 
832
the name of your PDC and <replaceable>Administrator</replaceable> is a domain user who has administrative
 
833
privileges in the domain.
 
834
</para>
 
835
 
 
836
<note><para>
 
837
<indexterm><primary>domain controller</primary></indexterm>
 
838
<indexterm><primary>PDC</primary></indexterm>
 
839
<indexterm><primary>tcp ports</primary></indexterm>
 
840
<indexterm><primary>udp ports</primary></indexterm>
 
841
Before attempting to join a machine to the domain, verify that Samba is running
 
842
on the target domain controller (usually PDC) and that it is capable of being reached via ports
 
843
137/udp, 135/tcp, 139/tcp, and 445/tcp (if Samba or Windows Server 2Kx).
 
844
</para></note>
 
845
 
 
846
<para>
 
847
<indexterm><primary>net</primary><secondary>rpc</secondary><tertiary>join</tertiary></indexterm>
 
848
The use of the <command>net rpc join</command> facility is shown here:
 
849
<screen>
 
850
&rootprompt;<userinput>/usr/local/samba/bin/net rpc join -S PDC -U Administrator</userinput>
 
851
</screen>
 
852
The proper response to the command should be <quote>Joined the domain
 
853
<replaceable>DOMAIN</replaceable></quote> where <replaceable>DOMAIN</replaceable>
 
854
is your domain name.
 
855
</para>
 
856
 
 
857
</sect3>
 
858
 
 
859
<sect3>
 
860
<title>Starting and Testing the <command>winbindd</command> Daemon</title>
 
861
 
 
862
<para>
 
863
<indexterm><primary>startup script</primary></indexterm>
 
864
<indexterm><primary>winbindd</primary></indexterm>
 
865
<indexterm><primary>Winbind services</primary></indexterm>
 
866
Eventually, you will want to modify your Samba startup script to automatically invoke the winbindd daemon when
 
867
the other parts of Samba start, but it is possible to test out just the Winbind portion first. To start up
 
868
Winbind services, enter the following command as root:
 
869
<screen>
 
870
&rootprompt;<userinput>/usr/local/samba/sbin/winbindd</userinput>
 
871
</screen>
 
872
Use the appropriate path to the location of the <command>winbindd</command> executable file.
 
873
</para>
 
874
 
 
875
<note><para>
 
876
<indexterm><primary>Winbind</primary></indexterm>
 
877
<indexterm><primary>/usr/local/samba</primary></indexterm>
 
878
The command to start up Winbind services assumes that Samba has been installed in the
 
879
<filename>/usr/local/samba</filename> directory tree. You may need to search for the location of Samba files
 
880
if this is not the location of <command>winbindd</command> on your system.
 
881
</para></note>
 
882
 
 
883
<para>
 
884
<indexterm><primary>paranoid</primary></indexterm>
 
885
<indexterm><primary>daemon running</primary></indexterm>
 
886
I'm always paranoid and like to make sure the daemon is really running.
 
887
<screen>
 
888
&rootprompt;<userinput>ps -ae | grep winbindd</userinput>
 
889
</screen>
 
890
</para>
 
891
 
 
892
<para>
 
893
<indexterm><primary>winbindd</primary></indexterm>
 
894
This command should produce output like the following if the daemon is running.
 
895
<screen>
 
896
3025 ?        00:00:00 winbindd
 
897
</screen>
 
898
</para>
 
899
 
 
900
<para>
 
901
<indexterm><primary>PDC</primary></indexterm>
 
902
<indexterm><primary>wbinfo</primary></indexterm>
 
903
Now, for the real test, try to get some information about the users on your PDC:
 
904
<screen>
 
905
&rootprompt;<userinput>/usr/local/samba/bin/wbinfo -u</userinput>
 
906
</screen>
 
907
This should echo back a list of users on your Windows users on your PDC. For example, I get the following
 
908
response:
 
909
<screen>
 
910
CEO\Administrator
 
911
CEO\burdell
 
912
CEO\Guest
 
913
CEO\jt-ad
 
914
CEO\krbtgt
 
915
CEO\TsInternetUser
 
916
</screen>
 
917
Obviously, I have named my domain <quote>CEO</quote> and my <smbconfoption name="winbind separator"/> is
 
918
<quote>\</quote>.
 
919
</para>
 
920
 
 
921
<para>
 
922
<indexterm><primary>wbinfo</primary></indexterm>
 
923
<indexterm><primary>PDC</primary></indexterm>
 
924
You can do the same sort of thing to get group information from the PDC:
 
925
<screen>
 
926
&rootprompt;<userinput>/usr/local/samba/bin/wbinfo -g</userinput>
 
927
CEO\Domain Admins
 
928
CEO\Domain Users
 
929
CEO\Domain Guests
 
930
CEO\Domain Computers
 
931
CEO\Domain Controllers
 
932
CEO\Cert Publishers
 
933
CEO\Schema Admins
 
934
CEO\Enterprise Admins
 
935
CEO\Group Policy Creator Owners
 
936
</screen></para>
 
937
 
 
938
<para>
 
939
<indexterm><primary>getent</primary></indexterm>
 
940
<indexterm><primary>PDC</primary></indexterm>
 
941
<indexterm><primary>/etc/passwd</primary></indexterm>
 
942
<indexterm><primary>UID</primary></indexterm>
 
943
<indexterm><primary>GID</primary></indexterm>
 
944
<indexterm><primary>home directories</primary></indexterm>
 
945
<indexterm><primary>default shells</primary></indexterm>
 
946
The function <command>getent</command> can now be used to get unified lists of both local and PDC users and
 
947
groups. Try the following command:
 
948
<screen>
 
949
&rootprompt;<userinput>getent passwd</userinput>
 
950
</screen>
 
951
You should get a list that looks like your <filename>/etc/passwd</filename>
 
952
list followed by the domain users with their new UIDs, GIDs, home
 
953
directories, and default shells.
 
954
</para>
 
955
 
 
956
<para>
 
957
The same thing can be done for groups with the command:
 
958
<screen>
 
959
&rootprompt;<userinput>getent group</userinput>
 
960
</screen>
 
961
</para>
 
962
 
 
963
</sect3>
 
964
 
 
965
 
 
966
<sect3>
 
967
<title>Fix the init.d Startup Scripts</title>
 
968
 
 
969
<sect4>
 
970
<title>Linux</title>
 
971
 
 
972
<para>
 
973
<indexterm><primary>winbindd daemon</primary></indexterm>
 
974
<indexterm><primary>smbd</primary></indexterm>
 
975
<indexterm><primary>nmbd</primary></indexterm>
 
976
<indexterm><primary>/etc/init.d/smb</primary></indexterm>
 
977
<indexterm><primary>/etc/init.d/samba</primary></indexterm>
 
978
<indexterm><primary>/usr/local/samba/bin</primary></indexterm>
 
979
<indexterm><primary></primary></indexterm>
 
980
<indexterm><primary></primary></indexterm>
 
981
<indexterm><primary></primary></indexterm>
 
982
The &winbindd; daemon needs to start up after the &smbd; and &nmbd; daemons are running.  To accomplish this
 
983
task, you need to modify the startup scripts of your system.  They are located at
 
984
<filename>/etc/init.d/smb</filename> in Red Hat Linux and in <filename>/etc/init.d/samba</filename> in Debian
 
985
Linux. Edit your script to add commands to invoke this daemon in the proper sequence. My startup script starts
 
986
up &smbd;, &nmbd;, and &winbindd; from the <filename>/usr/local/samba/bin</filename> directory directly. The
 
987
<command>start</command> function in the script looks like this:
 
988
<programlisting>
 
989
start() {
 
990
        KIND="SMB"
 
991
        echo -n $"Starting $KIND services: "
 
992
        daemon /usr/local/samba/bin/smbd $SMBDOPTIONS
 
993
        RETVAL=$?
 
994
        echo
 
995
        KIND="NMB"
 
996
        echo -n $"Starting $KIND services: "
 
997
        daemon /usr/local/samba/bin/nmbd $NMBDOPTIONS
 
998
        RETVAL2=$?
 
999
        echo
 
1000
        KIND="Winbind"
 
1001
        echo -n $"Starting $KIND services: "
 
1002
        daemon /usr/local/samba/sbin/winbindd
 
1003
        RETVAL3=$?
 
1004
        echo
 
1005
        [ $RETVAL -eq 0 -a $RETVAL2 -eq 0 -a $RETVAL3 -eq 0 ] &amp;&amp; \
 
1006
                touch /var/lock/subsys/smb || RETVAL=1
 
1007
        return $RETVAL
 
1008
}
 
1009
</programlisting></para>
 
1010
 
 
1011
<para>If you would like to run winbindd in dual daemon mode, replace the line:
 
1012
<programlisting>
 
1013
        daemon /usr/local/samba/sbin/winbindd
 
1014
</programlisting>
 
1015
 
 
1016
in the example above with:
 
1017
 
 
1018
<programlisting>
 
1019
        daemon /usr/local/samba/sbin/winbindd -D
 
1020
</programlisting>.
 
1021
</para>
 
1022
 
 
1023
<para>
 
1024
The <command>stop</command> function has a corresponding entry to shut down the services and looks like this:
 
1025
</para>
 
1026
 
 
1027
<para><programlisting>
 
1028
stop() {
 
1029
        KIND="SMB"
 
1030
        echo -n $"Shutting down $KIND services: "
 
1031
        killproc smbd
 
1032
        RETVAL=$?
 
1033
        echo
 
1034
        KIND="NMB"
 
1035
        echo -n $"Shutting down $KIND services: "
 
1036
        killproc nmbd
 
1037
        RETVAL2=$?
 
1038
        echo
 
1039
        KIND="Winbind"
 
1040
        echo -n $"Shutting down $KIND services: "
 
1041
        killproc winbindd
 
1042
        RETVAL3=$?
 
1043
        [ $RETVAL -eq 0 -a $RETVAL2 -eq 0 -a $RETVAL3 -eq 0 ] &amp;&amp; \
 
1044
                 rm -f /var/lock/subsys/smb
 
1045
        echo ""
 
1046
        return $RETVAL
 
1047
}
 
1048
</programlisting></para>
 
1049
</sect4>
 
1050
 
 
1051
<sect4>
 
1052
<title>Solaris</title>
 
1053
 
 
1054
<para>
 
1055
Winbind does not work on Solaris 9; see <link linkend="winbind-solaris9">Winbind on Solaris 9 section</link>
 
1056
for details.
 
1057
</para>
 
1058
 
 
1059
<para>
 
1060
<indexterm><primary>Solaris 9</primary></indexterm>
 
1061
<indexterm><primary>/etc/init.d/samba.server</primary></indexterm>
 
1062
<indexterm><primary>/usr/local/samba/bin</primary></indexterm>
 
1063
<indexterm><primary>smbd</primary></indexterm>
 
1064
<indexterm><primary>nmbd</primary></indexterm>
 
1065
<indexterm><primary>winbindd</primary></indexterm>
 
1066
On Solaris, you need to modify the <filename>/etc/init.d/samba.server</filename> startup script. It
 
1067
usually only starts smbd and nmbd but should now start winbindd, too. If you have Samba installed in
 
1068
<filename>/usr/local/samba/bin</filename>, the file could contains something like this:
 
1069
</para>
 
1070
 
 
1071
<para>
 
1072
        <programlisting>
 
1073
        ##
 
1074
        ## samba.server
 
1075
        ##
 
1076
 
 
1077
        if [ ! -d /usr/bin ]
 
1078
        then                    # /usr not mounted
 
1079
                exit
 
1080
        fi
 
1081
 
 
1082
        killproc() {            # kill the named process(es)
 
1083
                pid=`/usr/bin/ps -e |
 
1084
                     /usr/bin/grep -w $1 |
 
1085
                     /usr/bin/sed -e 's/^  *//' -e 's/ .*//'`
 
1086
                [ "$pid" != "" ] &amp;&amp; kill $pid
 
1087
        }
 
1088
 
 
1089
        # Start/stop processes required for Samba server
 
1090
 
 
1091
        case "$1" in
 
1092
 
 
1093
        'start')
 
1094
        #
 
1095
        # Edit these lines to suit your installation (paths, workgroup, host)
 
1096
        #
 
1097
        echo Starting SMBD
 
1098
           /usr/local/samba/bin/smbd -D -s \
 
1099
                /usr/local/samba/smb.conf
 
1100
 
 
1101
        echo Starting NMBD
 
1102
           /usr/local/samba/bin/nmbd -D -l \
 
1103
                /usr/local/samba/var/log -s /usr/local/samba/smb.conf
 
1104
 
 
1105
        echo Starting Winbind Daemon
 
1106
           /usr/local/samba/sbin/winbindd
 
1107
           ;;
 
1108
 
 
1109
        'stop')
 
1110
           killproc nmbd
 
1111
           killproc smbd
 
1112
           killproc winbindd
 
1113
           ;;
 
1114
 
 
1115
        *)
 
1116
           echo "Usage: /etc/init.d/samba.server { start | stop }"
 
1117
           ;;
 
1118
        esac
 
1119
</programlisting></para>
 
1120
 
 
1121
<para>
 
1122
Again, if you would like to run Samba in dual daemon mode, replace:
 
1123
<programlisting>
 
1124
/usr/local/samba/sbin/winbindd
 
1125
</programlisting>
 
1126
in the script above with:
 
1127
<programlisting>
 
1128
/usr/local/samba/sbin/winbindd -D
 
1129
</programlisting>
 
1130
</para>
 
1131
 
 
1132
</sect4>
 
1133
 
 
1134
<sect4>
 
1135
<title>Restarting</title>
 
1136
<para>
 
1137
<indexterm><primary>daemons</primary></indexterm>
 
1138
<indexterm><primary>local user</primary></indexterm>
 
1139
If you restart the &smbd;, &nmbd;, and &winbindd; daemons at this point, you
 
1140
should be able to connect to the Samba server as a domain member just as
 
1141
if you were a local user.
 
1142
</para>
 
1143
</sect4>
 
1144
</sect3>
 
1145
 
 
1146
<sect3>
 
1147
<title>Configure Winbind and PAM</title>
 
1148
 
 
1149
<para>
 
1150
<indexterm><primary>winbindd</primary></indexterm>
 
1151
<indexterm><primary>authentication</primary></indexterm>
 
1152
<indexterm><primary>PAM</primary></indexterm>
 
1153
<indexterm><primary>/etc/pam.d</primary></indexterm>
 
1154
If you have made it this far, you know that <command>winbindd</command> and Samba are working together. If you
 
1155
want to use Winbind to provide authentication for other services, keep reading. The PAM configuration files
 
1156
need to be altered in this step. (Did you remember to make backups of your original
 
1157
<filename>/etc/pam.d</filename> files? If not, do it now.)
 
1158
</para>
 
1159
 
 
1160
<para>
 
1161
<indexterm><primary>NSS</primary></indexterm>
 
1162
<indexterm><primary>../source/nsswitch</primary></indexterm>
 
1163
<indexterm><primary>pam_winbind.so</primary></indexterm>
 
1164
<indexterm><primary>/lib/security</primary></indexterm>
 
1165
<indexterm><primary>Solaris</primary></indexterm>
 
1166
<indexterm><primary>/usr/lib/security</primary></indexterm>
 
1167
You will need a PAM module to use winbindd with these other services. This module will be compiled in the
 
1168
<filename>../source/nsswitch</filename> directory by invoking the command:
 
1169
<screen>
 
1170
&rootprompt;<userinput>make nsswitch/pam_winbind.so</userinput>
 
1171
</screen>
 
1172
from the <filename>../source</filename> directory. The <filename>pam_winbind.so</filename> file should be
 
1173
copied to the location of your other PAM security modules. On my Red Hat system, this was the
 
1174
<filename>/lib/security</filename> directory. On Solaris, the PAM security modules reside in
 
1175
<filename>/usr/lib/security</filename>.
 
1176
<screen>
 
1177
&rootprompt;<userinput>cp ../samba/source/nsswitch/pam_winbind.so /lib/security</userinput>
 
1178
</screen>
 
1179
</para>
 
1180
 
 
1181
<sect4>
 
1182
<title>Linux/FreeBSD-Specific PAM Configuration</title>
 
1183
 
 
1184
<para>
 
1185
<indexterm><primary>/etc/pam.d/samba</primary></indexterm>
 
1186
The <filename>/etc/pam.d/samba</filename> file does not need to be changed. I just left this file as it was:
 
1187
<programlisting>
 
1188
auth    required  /lib/security/pam_stack.so service=system-auth
 
1189
account required  /lib/security/pam_stack.so service=system-auth
 
1190
</programlisting></para>
 
1191
 
 
1192
<para>
 
1193
<indexterm><primary>Winbind</primary></indexterm>
 
1194
<indexterm><primary>authentication service</primary></indexterm>
 
1195
<indexterm><primary>login</primary></indexterm>
 
1196
<indexterm><primary>console</primary></indexterm>
 
1197
<indexterm><primary>telnet logins</primary></indexterm>
 
1198
<indexterm><primary>ftp service</primary></indexterm>
 
1199
<indexterm><primary>/etc/xinetd.d</primary></indexterm>
 
1200
<indexterm><primary>/etc/inetd.conf</primary></indexterm>
 
1201
<indexterm><primary>/etc/xinetd.d/telnet</primary></indexterm>
 
1202
The other services that I modified to allow the use of Winbind as an authentication service were the normal
 
1203
login on the console (or a terminal session), telnet logins, and ftp service. In order to enable these
 
1204
services, you may first need to change the entries in <filename>/etc/xinetd.d</filename> (or
 
1205
<filename>/etc/inetd.conf</filename>).  Red Hat Linux 7.1 and later uses the new xinetd.d structure, in this
 
1206
case you need to change the lines in <filename>/etc/xinetd.d/telnet</filename> and
 
1207
<filename>/etc/xinetd.d/wu-ftp</filename> from:
 
1208
<programlisting>
 
1209
        enable = no
 
1210
</programlisting>
 
1211
to
 
1212
<programlisting>
 
1213
        enable = yes
 
1214
</programlisting></para>
 
1215
 
 
1216
<para>
 
1217
<indexterm><primary>ftp services</primary></indexterm>
 
1218
<indexterm><primary>home directory template</primary></indexterm>
 
1219
<indexterm><primary>domain users</primary></indexterm>
 
1220
For ftp services to work properly, you will also need to either have individual directories for the domain
 
1221
users already present on the server or change the home directory template to a general directory for all
 
1222
domain users. These can be easily set using the &smb.conf; global entry <smbconfoption name="template
 
1223
homedir"/>.
 
1224
</para>
 
1225
 
 
1226
<note><para>
 
1227
<indexterm><primary>pam_mkhomedir</primary></indexterm>
 
1228
The directory in <smbconfoption name="template homedir"/> is not created automatically! Use pam_mkhomedir or
 
1229
pre-create the directories of users to make sure users can log in on UNIX with their own home directory.
 
1230
</para></note>
 
1231
 
 
1232
<para>
 
1233
<indexterm><primary>/etc/pam.d/ftp</primary></indexterm>
 
1234
<indexterm><primary>Winbind</primary></indexterm>
 
1235
<indexterm><primary>ftp access</primary></indexterm>
 
1236
The <filename>/etc/pam.d/ftp</filename> file can be changed to allow Winbind ftp access in a manner similar to
 
1237
the samba file. My <filename>/etc/pam.d/ftp</filename> file was changed to look like this:
 
1238
<programlisting>
 
1239
auth       required     /lib/security/pam_listfile.so item=user sense=deny \
 
1240
         file=/etc/ftpusers onerr=succeed
 
1241
auth       sufficient   /lib/security/pam_winbind.so
 
1242
auth       required     /lib/security/pam_stack.so service=system-auth
 
1243
auth       required     /lib/security/pam_shells.so
 
1244
account    sufficient   /lib/security/pam_winbind.so
 
1245
account    required     /lib/security/pam_stack.so service=system-auth
 
1246
session    required     /lib/security/pam_stack.so service=system-auth
 
1247
</programlisting></para>
 
1248
 
 
1249
<para>
 
1250
<indexterm><primary>/etc/pam.d/login</primary></indexterm>
 
1251
The <filename>/etc/pam.d/login</filename> file can be changed in nearly the same way. It now looks like this:
 
1252
<programlisting>
 
1253
auth       required     /lib/security/pam_securetty.so
 
1254
auth       sufficient   /lib/security/pam_winbind.so
 
1255
auth       sufficient   /lib/security/pam_unix.so use_first_pass
 
1256
auth       required     /lib/security/pam_stack.so service=system-auth
 
1257
auth       required     /lib/security/pam_nologin.so
 
1258
account    sufficient   /lib/security/pam_winbind.so
 
1259
account    required     /lib/security/pam_stack.so service=system-auth
 
1260
password   required     /lib/security/pam_stack.so service=system-auth
 
1261
session    required     /lib/security/pam_stack.so service=system-auth
 
1262
session    optional     /lib/security/pam_console.so
 
1263
</programlisting>
 
1264
<indexterm><primary>pam_winbind.so</primary></indexterm>
 
1265
<indexterm><primary>pam_securetty.so</primary></indexterm>
 
1266
<indexterm><primary>pam_unix.so</primary></indexterm>
 
1267
In this case, I added the <programlisting>auth sufficient /lib/security/pam_winbind.so</programlisting> lines
 
1268
as before, but also added the <programlisting>required pam_securetty.so</programlisting> above it to disallow
 
1269
root logins over the network. I also added a <programlisting>sufficient /lib/security/pam_unix.so
 
1270
use_first_pass</programlisting> line after the <command>winbind.so</command> line to get rid of annoying
 
1271
double prompts for passwords.
 
1272
</para>
 
1273
 
 
1274
</sect4>
 
1275
 
 
1276
<sect4>
 
1277
<title>Solaris-Specific Configuration</title>
 
1278
 
 
1279
<para>
 
1280
<indexterm><primary>/etc/pam.conf</primary></indexterm>
 
1281
<indexterm><primary></primary></indexterm>
 
1282
The <filename>/etc/pam.conf</filename> needs to be changed. I changed this file so my Domain
 
1283
users can log on both locally as well as with telnet. The following are the changes
 
1284
that I made. You can customize the <filename>pam.conf</filename> file as per your requirements, but
 
1285
be sure of those changes because in the worst case it will leave your system
 
1286
nearly impossible to boot.
 
1287
<programlisting>
 
1288
#
 
1289
#ident "@(#)pam.conf 1.14 99/09/16 SMI"
 
1290
#
 
1291
# Copyright (c) 1996-1999, Sun Microsystems, Inc.
 
1292
# All Rights Reserved.
 
1293
#
 
1294
# PAM configuration
 
1295
#
 
1296
# Authentication management
 
1297
#
 
1298
login   auth required   /usr/lib/security/pam_winbind.so
 
1299
login auth required  /usr/lib/security/$ISA/pam_unix.so.1 try_first_pass
 
1300
login auth required  /usr/lib/security/$ISA/pam_dial_auth.so.1 try_first_pass
 
1301
#
 
1302
rlogin  auth sufficient /usr/lib/security/pam_winbind.so
 
1303
rlogin  auth sufficient /usr/lib/security/$ISA/pam_rhosts_auth.so.1
 
1304
rlogin auth required  /usr/lib/security/$ISA/pam_unix.so.1 try_first_pass
 
1305
#
 
1306
dtlogin auth sufficient /usr/lib/security/pam_winbind.so
 
1307
dtlogin auth required  /usr/lib/security/$ISA/pam_unix.so.1 try_first_pass
 
1308
#
 
1309
rsh auth required /usr/lib/security/$ISA/pam_rhosts_auth.so.1
 
1310
other   auth sufficient /usr/lib/security/pam_winbind.so
 
1311
other auth required /usr/lib/security/$ISA/pam_unix.so.1 try_first_pass
 
1312
#
 
1313
# Account management
 
1314
#
 
1315
login   account sufficient      /usr/lib/security/pam_winbind.so
 
1316
login account requisite /usr/lib/security/$ISA/pam_roles.so.1
 
1317
login account required /usr/lib/security/$ISA/pam_unix.so.1
 
1318
#
 
1319
dtlogin account sufficient      /usr/lib/security/pam_winbind.so
 
1320
dtlogin account requisite /usr/lib/security/$ISA/pam_roles.so.1
 
1321
dtlogin account required /usr/lib/security/$ISA/pam_unix.so.1
 
1322
#
 
1323
other   account sufficient      /usr/lib/security/pam_winbind.so
 
1324
other account requisite /usr/lib/security/$ISA/pam_roles.so.1
 
1325
other account required /usr/lib/security/$ISA/pam_unix.so.1
 
1326
#
 
1327
# Session management
 
1328
#
 
1329
other session required /usr/lib/security/$ISA/pam_unix.so.1
 
1330
#
 
1331
# Password management
 
1332
#
 
1333
#other   password sufficient     /usr/lib/security/pam_winbind.so
 
1334
other password required /usr/lib/security/$ISA/pam_unix.so.1
 
1335
dtsession auth required /usr/lib/security/$ISA/pam_unix.so.1
 
1336
#
 
1337
# Support for Kerberos V5 authentication (uncomment to use Kerberos)
 
1338
#
 
1339
#rlogin auth optional /usr/lib/security/$ISA/pam_krb5.so.1 try_first_pass
 
1340
#login auth optional /usr/lib/security/$ISA/pam_krb5.so.1 try_first_pass
 
1341
#dtlogin auth optional /usr/lib/security/$ISA/pam_krb5.so.1 try_first_pass
 
1342
#other auth optional /usr/lib/security/$ISA/pam_krb5.so.1 try_first_pass
 
1343
#dtlogin account optional /usr/lib/security/$ISA/pam_krb5.so.1
 
1344
#other account optional /usr/lib/security/$ISA/pam_krb5.so.1
 
1345
#other session optional /usr/lib/security/$ISA/pam_krb5.so.1
 
1346
#other password optional /usr/lib/security/$ISA/pam_krb5.so.1 try_first_pass
 
1347
</programlisting></para>
 
1348
 
 
1349
<para>
 
1350
<indexterm><primary>winbind.so</primary></indexterm>
 
1351
I also added a <parameter>try_first_pass</parameter> line after the <filename>winbind.so</filename>
 
1352
line to get rid of annoying double prompts for passwords.
 
1353
</para>
 
1354
 
 
1355
<para>
 
1356
Now restart your Samba and try connecting through your application that you
 
1357
configured in the pam.conf.
 
1358
</para>
 
1359
 
 
1360
</sect4>
 
1361
 
 
1362
</sect3>
 
1363
 
 
1364
</sect2>
 
1365
 
 
1366
</sect1>
 
1367
 
 
1368
<sect1>
 
1369
<title>Conclusion</title>
 
1370
 
 
1371
<para>
 
1372
<indexterm><primary>Winbind</primary></indexterm>
 
1373
<indexterm><primary>NSS</primary></indexterm>
 
1374
<indexterm><primary>PAM</primary></indexterm>
 
1375
<indexterm><primary>RPC calls</primary></indexterm>
 
1376
<indexterm><primary>domain users</primary></indexterm>
 
1377
The Winbind system, through the use of the NSS, PAMs, and appropriate Microsoft RPC calls, have allowed us to
 
1378
provide seamless integration of Microsoft Windows NT domain users on a UNIX system. The result is a great
 
1379
reduction in the administrative cost of running a mixed UNIX and NT network.
 
1380
</para>
 
1381
 
 
1382
</sect1>
 
1383
 
 
1384
<sect1>
 
1385
<title>Common Errors</title>
 
1386
 
 
1387
        <para>
 
1388
        Winbind has a number of limitations in its current released version that we hope to overcome in future releases:
 
1389
        </para>
 
1390
 
 
1391
        <itemizedlist>
 
1392
                <listitem><para>
 
1393
                Winbind is currently only available for the Linux, Solaris, AIX, and IRIX operating systems, although
 
1394
                ports to other operating systems are certainly possible. For such ports to be feasible, we require the C
 
1395
                library of the target operating system to support the NSS and PAM systems. This is becoming more common as NSS
 
1396
                and PAM gain support among UNIX vendors.
 
1397
                </para></listitem>
 
1398
 
 
1399
                <listitem><para>
 
1400
                The mappings of Windows NT RIDs to UNIX IDs is not made algorithmically and depends on the order in
 
1401
                which unmapped users or groups are seen by Winbind. It may be difficult to recover the mappings of RID to UNIX
 
1402
                ID if the file containing this information is corrupted or destroyed.
 
1403
                </para></listitem>
 
1404
 
 
1405
                <listitem><para>
 
1406
                Currently the Winbind PAM module does not take into account possible workstation and logon time
 
1407
                restrictions that may be set for Windows NT users; this is instead up to the PDC to enforce.
 
1408
                </para></listitem>
 
1409
        </itemizedlist>
 
1410
 
 
1411
        <sect2>
 
1412
        <title>NSCD Problem Warning</title>
 
1413
 
 
1414
        <warning><para>
 
1415
        Do not under any circumstances run <command>nscd</command> on any system
 
1416
        on which <command>winbindd</command> is running.
 
1417
        </para></warning>
 
1418
 
 
1419
        <para>
 
1420
        If <command>nscd</command> is running on the UNIX/Linux system, then
 
1421
        even though NSSWITCH is correctly configured, it will not be possible to resolve
 
1422
        domain users and groups for file and directory controls.
 
1423
        </para>
 
1424
 
 
1425
        </sect2>
 
1426
 
 
1427
        <sect2>
 
1428
        <title>Winbind Is Not Resolving Users and Groups</title>
 
1429
 
 
1430
        <para><quote>
 
1431
        My &smb.conf; file is correctly configured. I have specified <smbconfoption name="idmap uid">12000</smbconfoption>,
 
1432
        and <smbconfoption name="idmap gid">3000-3500</smbconfoption> and <command>winbind</command> is running.
 
1433
        When I do the following, it all works fine.
 
1434
        </quote></para>
 
1435
 
 
1436
<para><screen>
 
1437
&rootprompt;<userinput>wbinfo -u</userinput>
 
1438
MIDEARTH\maryo
 
1439
MIDEARTH\jackb
 
1440
MIDEARTH\ameds
 
1441
...
 
1442
MIDEARTH\root
 
1443
 
 
1444
&rootprompt;<userinput>wbinfo -g</userinput>
 
1445
MIDEARTH\Domain Users
 
1446
MIDEARTH\Domain Admins
 
1447
MIDEARTH\Domain Guests
 
1448
...
 
1449
MIDEARTH\Accounts
 
1450
 
 
1451
&rootprompt;<userinput>getent passwd</userinput>
 
1452
root:x:0:0:root:/root:/bin/bash
 
1453
bin:x:1:1:bin:/bin:/bin/bash
 
1454
...
 
1455
maryo:x:15000:15003:Mary Orville:/home/MIDEARTH/maryo:/bin/false
 
1456
</screen></para>
 
1457
 
 
1458
<para><quote>
 
1459
But the following command just fails:
 
1460
</quote>
 
1461
<screen>
 
1462
&rootprompt;<userinput>chown maryo a_file</userinput>
 
1463
chown: `maryo': invalid user
 
1464
</screen>
 
1465
<quote>
 
1466
This is driving me nuts! What can be wrong?
 
1467
</quote></para>
 
1468
 
 
1469
<para>
 
1470
Same problem as the one above.
 
1471
Your system is likely running <command>nscd</command>, the name service
 
1472
caching daemon. Shut it down, do not restart it! You will find your problem resolved.
 
1473
Alternately, fix the operation of nscd to resolve the problem.
 
1474
</para>
 
1475
 
 
1476
</sect2>
 
1477
</sect1>
 
1478
 
 
1479
</chapter>