~zulcss/samba/server-dailies-3.4

« back to all changes in this revision

Viewing changes to docs/htmldocs/using_samba/ch04.html

  • 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
<html>
 
2
<body bgcolor="#ffffff">
 
3
 
 
4
<img src="samba2_xs.gif" border="0" alt=" " height="100" width="76"
 
5
hspace="10" align="left" />
 
6
 
 
7
<h1 class="head0">Chapter 4. Windows NT Domains</h1>
 
8
 
 
9
 
 
10
 
 
11
<p><a name="INDEX-1"/>In previous
 
12
chapters, we've focused on workgroup networking to
 
13
keep things simple and introduce you to networking with Samba in the
 
14
most painless manner we could find. However, workgroup computing has
 
15
its drawbacks, and for many computing environments, the greater
 
16
security and single logon of the Windows NT domain make it worthwhile
 
17
to spend the extra effort to implement a domain.</p>
 
18
 
 
19
<p>In addition to the domain features of
 
20
<a name="INDEX-2"/>that we discussed in <a href="ch01.html">Chapter 1</a>, having a domain makes it possible to use
 
21
<em class="firstterm">logon scripts</em><a name="INDEX-3"/> and <em class="firstterm">roaming profiles
 
22
</em><a name="INDEX-4"/>(also called<em class="firstterm"> roving
 
23
profiles</em><a name="INDEX-5"/>). A logon
 
24
script is a text file of commands that are run during startup, and a
 
25
profile is a collection of information regarding the desktop
 
26
environment, including the contents of the Start menu, icons that
 
27
appear on the desktop, and other characteristics about the GUI
 
28
environment that users are allowed to customize. A roaming profile
 
29
can follow its owner from computer to computer, allowing her to have
 
30
the same familiar interface appear wherever she logs on.</p>
 
31
 
 
32
<p>A Windows NT domain offers centralized control over the network.
 
33
<em class="firstterm">Policies</em><a name="INDEX-6"/> can be set up by an administrator to
 
34
define aspects of the users' environment and limit
 
35
the amount of control they have over the network and their computers.
 
36
It is also possible for administrators to perform remote
 
37
administration of the domain controllers from any Windows NT/2000/XP
 
38
workstation.</p>
 
39
 
 
40
<p>Samba 2.2 has the ability to act as a primary domain controller,
 
41
supporting domain logons from Windows 95/98/Me/NT/2000/XP computers
 
42
and allowing Windows NT/2000/XP<a name="FNPTR-1"/><a href="#FOOTNOTE-1">[1]</a> systems to join the domain as domain
 
43
member servers. Samba can also join a domain as a member server,
 
44
allowing the primary domain controller to be a Windows NT/2000 system
 
45
or another Samba server.</p>
 
46
 
 
47
<a name="samba2-CHP-4-NOTE-100"/><blockquote class="note"><h4 class="objtitle">TIP</h4>
 
48
<p>Samba 2.2 does not support <a name="INDEX-7"/><a name="INDEX-8"/><a name="INDEX-9"/>LDAP and <a name="INDEX-10"/>Kerberos authentication of Active
 
49
Directory, so it cannot act as a Windows 2000 Active Directory domain
 
50
controller. However, Samba can be added to an Active Directory domain
 
51
as a member server, with the Windows 2000 domain controllers running
 
52
in either mixed or native mode. The Windows 2000 server (even if it
 
53
is running in native mode) supports the Samba server by acting as a
 
54
<a name="INDEX-11"/><a name="INDEX-12"/>PDC emulator, using the Windows NT
 
55
style of authentication rather than the Kerberos style.</p>
 
56
</blockquote>
 
57
 
 
58
<p>If you're adding a Samba server to a network that
 
59
has already been set up, you won't have to decide
 
60
whether to use a workgroup or a domain; you will simply have to be
 
61
compatible with what's already in place. If you do
 
62
have a choice, we suggest you evaluate both workgroup and domain
 
63
computing carefully before rolling out a big installation. You will
 
64
have a lot of work to do if you later need to convert one to the
 
65
other. One last thought on this matter is that Microsoft is
 
66
developing Windows in the direction of increased use of domains and
 
67
is intending that eventually Windows networks be composed solely of
 
68
Active Directory domains. If you implement a Windows NT domain now,
 
69
you'll be in a better position to transition to
 
70
Active Directory later, after Samba has better support for it.</p>
 
71
 
 
72
<p>In this chapter, we cover various topics directly related to using
 
73
Samba in a Windows NT domain, including:</p>
 
74
 
 
75
<ul><li>
 
76
<p>Configuring and using Samba as the primary domain controller</p>
 
77
</li><li>
 
78
<p>Setting up Windows 95/98/Me systems to log on to the domain</p>
 
79
</li><li>
 
80
<p>Implementing user-level security on Windows 95/98/Me</p>
 
81
</li><li>
 
82
<p>Adding Windows NT/2000/XP systems to the domain</p>
 
83
</li><li>
 
84
<p>Configuring logon scripts, roaming profiles, and system policies</p>
 
85
</li><li>
 
86
<p>Adding a Samba server to a domain as a member server</p>
 
87
</li></ul>
 
88
 
 
89
 
 
90
 
 
91
 
 
92
<div class="sect1"><a name="samba2-CHP-4-SECT-1"/>
 
93
 
 
94
<h2 class="head1">Samba as the Primary Domain Controller</h2>
 
95
 
 
96
<p><a name="INDEX-13"/>Samba 2.2
 
97
is able to handle the most desired functions of a primary domain
 
98
controller in a Windows NT domain, handling domain logons and
 
99
authentication for accessing shared resources, as well as supporting
 
100
logon scripts, roaming profiles, and system policies.</p>
 
101
 
 
102
<a name="samba2-CHP-4-NOTE-101"/><blockquote class="note"><h4 class="objtitle">TIP</h4>
 
103
<p>You will need to use at least Samba 2.2 to ensure that PDC
 
104
functionality for Windows NT/2000/XP clients is present. Prior to
 
105
Samba 2.2, only limited user authentication for NT clients was
 
106
present.</p>
 
107
</blockquote>
 
108
 
 
109
<p>In this section, we will show you how to configure Samba as a PDC for
 
110
use with Windows 95/98/Me and Windows NT/2000/XP clients. The two
 
111
groups of Windows versions interact differently within domains, and
 
112
in some cases are supported in slightly different ways. If you know
 
113
you are going to be using only Windows 95/98/Me or Windows
 
114
NT/2000/XP, you can set up Samba to support only that group. However,
 
115
there isn't any harm in supporting both at the same
 
116
time.</p>
 
117
 
 
118
<a name="samba2-CHP-4-NOTE-102"/><blockquote class="note"><h4 class="objtitle">TIP</h4>
 
119
<p>If you would like more information on how to set up
 
120
<a name="INDEX-14"/>domains, see the file
 
121
<em class="filename">Samba-PDC-HOWTO.html</em><a name="INDEX-15"/>
 
122
in the <em class="filename">docs/htmldocs</em> directory of the Samba
 
123
source distribution.</p>
 
124
</blockquote>
 
125
 
 
126
<p>Samba must be the only domain controller for the domain. Make sure
 
127
that a PDC isn't already active, and that there are
 
128
no backup domain controllers. Samba 2.2 is not able to communicate
 
129
with backup domain controllers, and having domain controllers in your
 
130
domain with unsynchronized data would result in a very dysfunctional
 
131
network.</p>
 
132
 
 
133
<a name="samba2-CHP-4-NOTE-103"/><blockquote class="note"><h4 class="objtitle">TIP</h4>
 
134
<p>Although Samba 2.2 cannot function as, or work with, a Windows NT
 
135
<a name="INDEX-16"/><a name="INDEX-17"/>BDC, it is possible to set up
 
136
another Samba server to act as a backup for a Samba PDC. For further
 
137
information, see the file
 
138
<em class="filename">Samba-BDC-HOWTO.html</em><a name="INDEX-18"/>
 
139
in the <em class="filename">docs/htmldocs</em> directory of the Samba
 
140
source distribution.</p>
 
141
</blockquote>
 
142
 
 
143
<p>Configuring Samba to be a PDC is a matter of modifying the
 
144
<em class="filename">smb.conf</em> file, creating some directories, and
 
145
restarting the server.</p>
 
146
 
 
147
 
 
148
<div class="sect2"><a name="samba2-CHP-4-SECT-1.1"/>
 
149
 
 
150
<h3 class="head2">Modifying smb.conf</h3>
 
151
 
 
152
<p>First you will need to start with an
 
153
<em class="filename">smb.conf</em><a name="INDEX-19"/><a name="INDEX-20"/> file that correctly configures Samba for
 
154
workgroup computing, such as the one we created in <a href="ch02.html">Chapter 2</a>, and insert the following lines into the
 
155
<tt class="literal">[global]</tt> section:</p>
 
156
 
 
157
<blockquote><pre class="code">[global]
 
158
    ; use the name of your Samba server instead of toltec
 
159
    ; and your own workgroup instead of METRAN
 
160
    netbios name = toltec
 
161
    workgroup = METRAN
 
162
    encrypt passwords = yes
 
163
        
 
164
    domain master = yes
 
165
    local master = yes
 
166
    preferred master = yes
 
167
    os level = 65
 
168
 
 
169
    security = user
 
170
    domain logons = yes
 
171
    
 
172
    ; logon path tells Samba where to put Windows NT/2000/XP roaming profiles
 
173
    logon path = \\%L\profiles\%u\%m
 
174
    logon script = logon.bat
 
175
 
 
176
    logon drive = H:
 
177
    ; logon home is used to specify home directory and
 
178
    ; Windows 95/98/Me roaming profile location
 
179
    logon home = \\%L\%u\.win_profile\%m
 
180
    
 
181
    time server = yes
 
182
 
 
183
    ; instead of jay, use the names of all users in the Windows NT/2000/XP
 
184
    ; Administrators group who log on to the domain
 
185
    domain admin group = root jay
 
186
 
 
187
    ; the below works on Red Hat Linux - other OSs might need a different command
 
188
    add user script = /usr/sbin/useradd -d /dev/null -g 100 -s /bin/false -M %u</pre></blockquote>
 
189
 
 
190
<p>And after the <tt class="literal">[global]</tt> section, add these three
 
191
new shares:</p>
 
192
 
 
193
<blockquote><pre class="code">[netlogon]
 
194
    path = /usr/local/samba/lib/netlogon
 
195
    writable = no
 
196
    browsable = no
 
197
 
 
198
[profiles]
 
199
    ; you might wish to use a different directory for your
 
200
    ; Windows NT/2000/XP roaming profiles
 
201
    path = /home/samba-ntprof
 
202
    browsable = no
 
203
    writable = yes
 
204
    create mask = 0600
 
205
    directory mask = 0700
 
206
 
 
207
[homes]
 
208
    read only = no
 
209
    browsable = no
 
210
    guest ok = no
 
211
    map archive = yes</pre></blockquote>
 
212
 
 
213
<p>Now for the explanation. If you are comparing this example to the
 
214
configuration file presented in <a href="ch02.html">Chapter 2</a>, you
 
215
will notice that the first three parameter settings are similar. We
 
216
start out in the <tt class="literal">[global]</tt> section by setting the
 
217
NetBIOS name of the Samba server. We are using the default, which is
 
218
the DNS hostname, but are being explicit because the NetBIOS name is
 
219
used in UNCs that appear later in <em class="filename">smb.conf</em>. The
 
220
next two lines, setting the workgroup name and choosing to use
 
221
encrypted passwords, are identical to our
 
222
<em class="filename">smb.conf</em> file from <a href="ch02.html">Chapter 2</a>.
 
223
However, things are now a little different: even though it still
 
224
reads &quot;workgroup&quot;, we are actually
 
225
setting the name of the domain. For a workgroup, using encrypted
 
226
passwords is optional; when using a domain, they are required.</p>
 
227
 
 
228
<p>The next four lines set up our Samba PDC to handle browsing services.
 
229
The line <tt class="literal">domain</tt> <tt class="literal">master</tt>
 
230
<tt class="literal">=</tt> <tt class="literal">yes</tt> causes Samba to be the
 
231
domain master browser, which handles browsing services for the domain
 
232
across multiple subnets if necessary. Although it looks very similar,
 
233
<tt class="literal">local</tt> <tt class="literal">master</tt>
 
234
<tt class="literal">=</tt> <tt class="literal">yes</tt> does not cause Samba to
 
235
be the master browser on the subnet, but merely tells it to
 
236
participate in browser elections and allow itself to win. (These two
 
237
lines are yet more default settings that we include to be clear.) The
 
238
next two lines ensure that Samba wins the elections. Setting the
 
239
<tt class="literal">preferred</tt> <tt class="literal">master</tt> parameter
 
240
makes Samba force an election when it starts up. The
 
241
<tt class="literal">os</tt> <tt class="literal">level</tt> parameter is set
 
242
higher than that of any other system, which results in Samba winning
 
243
that election. (At the time of this writing, an <tt class="literal">os</tt>
 
244
level of 65 was sufficient to win over all versions of
 
245
Windows&mdash;but make sure no other Samba server is set higher!) We
 
246
make sure Samba is both the <a name="INDEX-21"/><a name="INDEX-22"/>domain and local master browser
 
247
because Windows NT/2000 PDCs always reserve the domain master browser
 
248
role for themselves and because Windows clients require things to be
 
249
that way to find the primary domain controller. It is possible to
 
250
allow another computer on the network to win the role of local master
 
251
browser, but having the same server act as both domain and local
 
252
masters is simpler and more efficient.</p>
 
253
 
 
254
<p>The next two lines in the <tt class="literal">[global]</tt> section set up
 
255
Samba to handle the actual domain logons. We set
 
256
<tt class="literal">security</tt> <tt class="literal">=</tt>
 
257
<tt class="literal">user</tt> so that Samba will require a username and
 
258
password. This is actually the same as in the workgroup setup we
 
259
covered in <a href="ch01.html">Chapter 1</a> and <a href="ch02.html">Chapter 2</a> because it is the default. The only
 
260
reason we're including it explicitly is to avoid
 
261
confusion: another valid setting is <tt class="literal">security</tt>
 
262
<tt class="literal">=</tt> <tt class="literal">domain</tt>, but that is for
 
263
having another (Windows or Samba) domain controller handle the logons
 
264
and should never be found in the <em class="filename">smb.conf</em> of a
 
265
Samba PDC. The next line, <tt class="literal">domain</tt>
 
266
<tt class="literal">logons</tt> <tt class="literal">=</tt>
 
267
<tt class="literal">yes</tt>, is what tells Samba we want this server to
 
268
handle domain logons.</p>
 
269
 
 
270
<p>Defining a logon path is necessary for supporting
 
271
<a name="INDEX-23"/><a name="INDEX-24"/>roaming profiles for
 
272
Windows NT/2000/XP clients. The UNC
 
273
<tt class="literal">\\%L\profiles\%u</tt> refers to a share held on the
 
274
Samba server where the profiles are kept. The variables
 
275
<tt class="literal">%L</tt> and <tt class="literal">%u</tt> are replaced by Samba
 
276
with the name of the server and the username of the logged on user,
 
277
respectively. The section in <em class="filename">smb.conf</em> defining
 
278
the <tt class="literal">[profiles]</tt> share contains the definition of
 
279
exactly where the profiles are kept on the server.
 
280
We'll get back to this topic a bit later in this
 
281
chapter.</p>
 
282
 
 
283
<p>The <tt class="literal">logon</tt> <tt class="literal">script</tt>
 
284
<tt class="literal">=</tt> <tt class="literal">logon.bat</tt> line specifies the
 
285
name of an MS-DOS batch file that will be executed when the client
 
286
logs on to the domain. The path specified here is relative to the
 
287
<tt class="literal">[netlogon]</tt> share that is defined later in the
 
288
<em class="filename">smb.conf</em> file.</p>
 
289
 
 
290
<p>The settings of <tt class="literal">logon</tt> <tt class="literal">drive</tt> and
 
291
<tt class="literal">logon</tt> <tt class="literal">home</tt> have a couple of
 
292
purposes. Setting <tt class="literal">logon</tt> <tt class="literal">drive</tt>
 
293
<tt class="literal">=</tt> <tt class="literal">H</tt>: allows the home directory
 
294
of the user to be connected to drive letter H on the client. The
 
295
<tt class="literal">logon</tt> <tt class="literal">home</tt> parameter is set to
 
296
the location of the home directory on the server, and again,
 
297
<tt class="literal">%u</tt> is replaced at runtime by the logged on
 
298
user's username. The home directory is used to store
 
299
roaming profiles for Windows 95/98/Me clients. These parameters tie
 
300
into the <tt class="literal">[homes]</tt> share that we are adding, as we
 
301
will explain a bit later.</p>
 
302
 
 
303
<p>Setting <tt class="literal">time</tt> <tt class="literal">server</tt>
 
304
<tt class="literal">=</tt> <tt class="literal">yes</tt> causes Samba to advertise
 
305
itself as a <a name="INDEX-25"/>time service for the network. This is
 
306
optional.</p>
 
307
 
 
308
<p>The <tt class="literal">domain</tt> <tt class="literal">admin</tt>
 
309
<tt class="literal">group</tt> parameter exists as a short-term measure in
 
310
Samba 2.2 to give Samba a list of users who have administrative
 
311
privileges in the domain. The list should contain any Samba users who
 
312
log on from Windows NT/2000/XP systems and are members of the
 
313
Administrators or Domain Admins groups, if roaming profiles are to
 
314
work correctly.</p>
 
315
 
 
316
<p>The last parameter to add to the <tt class="literal">[global]</tt> section
 
317
is <tt class="literal">add</tt> <tt class="literal">user</tt>
 
318
<tt class="literal">script</tt>, and you will need it only if one or more
 
319
of your clients is a Windows NT/2000/XP system. We will tell you more
 
320
about this in <a href="ch04.html#samba2-CHP-4-SECT-2">Section 4.2</a> later in this chapter.</p>
 
321
 
 
322
<p>The rest of the additions to <em class="filename">smb.conf</em> are the
 
323
definitions for three <a name="INDEX-26"/><a name="INDEX-27"/>shares. The
 
324
<tt class="literal">[netlogon]</tt><a name="INDEX-28"/> share is necessary for Samba to
 
325
handle domain logons because Windows clients need to connect to it
 
326
during the logon process and will fail if the share does not exist.
 
327
Other than that, the only function of <tt class="literal">[netlogon]</tt>
 
328
is to be a repository for logon scripts and system-policy files,
 
329
which we shall cover in detail later in this chapter. The path to a
 
330
directory on the Samba server is given, and because the clients only
 
331
read logon scripts and system-policy files from the share, the
 
332
<tt class="literal">writable</tt> <tt class="literal">=</tt>
 
333
<tt class="literal">no</tt> definition is used to make the share read-only.
 
334
Users do not need to see the share, so we set
 
335
<tt class="literal">browsable</tt> <tt class="literal">=</tt>
 
336
<tt class="literal">no</tt> to make the share invisible.</p>
 
337
 
 
338
<p>The <tt class="literal">[profiles]</tt><a name="INDEX-29"/> share is needed for use with
 
339
Windows NT/2000/XP roaming profiles. The path points to a directory
 
340
on the Samba server where the profiles are kept, and in this case,
 
341
the clients must be able to read and write the profile data. The
 
342
<tt class="literal">create</tt> <tt class="literal">mask</tt> (read and write
 
343
permitted for the owner only) and <tt class="literal">directory</tt>
 
344
<tt class="literal">mask</tt> (read, write, and search permitted for the
 
345
owner only) are set up such that a user's profile
 
346
data can be read and written only by the user and not accessed or
 
347
modified by anyone else.</p>
 
348
 
 
349
<p>The <tt class="literal">[homes]</tt><a name="INDEX-30"/> share is necessary for our
 
350
definitions of <tt class="literal">logon</tt> <tt class="literal">drive</tt> and
 
351
<tt class="literal">logon</tt> <tt class="literal">home</tt> to work. Samba uses
 
352
the <tt class="literal">[homes]</tt> share to add the home directory of the
 
353
user (found in <em class="filename">/etc/passwd</em> ) as a share. Instead
 
354
of appearing as &quot;homes&quot;, the share
 
355
will be accessible on the client through a folder having the same
 
356
name as the user's username. We will cover this
 
357
topic in more detail in <a href="ch09.html">Chapter 9</a>.</p>
 
358
 
 
359
<p>At this point, you might want to run
 
360
<em class="filename">testparm</em><a name="INDEX-31"/> to check your
 
361
<em class="filename">smb.conf</em> file. <a name="INDEX-32"/><a name="INDEX-33"/></p>
 
362
 
 
363
 
 
364
</div>
 
365
 
 
366
 
 
367
<div class="sect2"><a name="samba2-CHP-4-SECT-1.2"/>
 
368
 
 
369
<h3 class="head2">Creating Directories on the Samba Server</h3>
 
370
 
 
371
<p><a name="INDEX-34"/><a name="INDEX-35"/>The
 
372
<tt class="literal">[netlogon]</tt> and <tt class="literal">[profiles]</tt>
 
373
shares defined in our new <em class="filename">smb.conf</em> file
 
374
reference directories on the Samba server, and it is necessary to
 
375
create those directories with the proper permissions:</p>
 
376
 
 
377
<blockquote><pre class="code"># <tt class="userinput"><b>mkdir /usr/local/samba/lib/netlogon</b></tt>
 
378
# <tt class="userinput"><b>chmod 775 /usr/local/samba/lib/netlogon</b></tt>
 
379
# <tt class="userinput"><b>mkdir /home/samba-ntprof</b></tt>
 
380
# <tt class="userinput"><b>chmod 777 /home/samba-ntprof</b></tt></pre></blockquote>
 
381
 
 
382
<p>The directory names we use are just examples. You are free to choose
 
383
your own.</p>
 
384
 
 
385
 
 
386
</div>
 
387
 
 
388
 
 
389
<div class="sect2"><a name="samba2-CHP-4-SECT-1.3"/>
 
390
 
 
391
<h3 class="head2">Restarting the Samba Server</h3>
 
392
 
 
393
<p><a name="INDEX-36"/>At this
 
394
point, the only thing left to do is restart the Samba server, and the
 
395
changes will be put into effect:</p>
 
396
 
 
397
<blockquote><pre class="code"># <tt class="userinput"><b>/etc/rc.d/init.d/smb restart</b></tt></pre></blockquote>
 
398
 
 
399
<p>(or use whatever method works on your system, as discussed in <a href="ch02.html">Chapter 2</a>.) The server is now ready to accept domain
 
400
logons. <a name="INDEX-37"/></p>
 
401
 
 
402
 
 
403
</div>
 
404
 
 
405
 
 
406
</div>
 
407
 
 
408
 
 
409
 
 
410
<div class="sect1"><a name="samba2-CHP-4-SECT-2"/>
 
411
 
 
412
<h2 class="head1">Adding Computer Accounts</h2>
 
413
 
 
414
<p>To interact in a domain, a Windows NT/2000/XP system must be a member
 
415
of the domain. <a name="INDEX-38"/>Domain membership is implemented
 
416
using <em class="firstterm">computer
 
417
accounts,</em><a name="INDEX-39"/><a name="INDEX-40"/> which are similar to user
 
418
accounts and allow a domain controller to keep information with which
 
419
to authenticate computers on the network. That is, the domain
 
420
controller must be able to tell if requests that arrive from a
 
421
computer are coming from a computer that it
 
422
&quot;knows&quot; as being part of the
 
423
domain. Each Windows NT/2000/XP system in the domain has a computer
 
424
account in the domain controllers' database, which
 
425
on a Windows NT/2000 hosted domain is the <a name="INDEX-41"/>SAM
 
426
database. Although Samba uses a different method (involving the
 
427
<em class="filename">smbpasswd</em><a name="INDEX-42"/> file), it also treats computer accounts
 
428
similarly to user accounts.</p>
 
429
 
 
430
<p>To create a computer account, an administrator configures a Windows
 
431
NT/2000/XP system to be part of the domain. For Samba 2.2, the
 
432
&quot;<a name="INDEX-43"/><a name="INDEX-44"/>domain
 
433
administrator&quot; is the <a name="INDEX-45"/><a name="INDEX-46"/>root account on the Samba
 
434
server, and you will need to run the command:</p>
 
435
 
 
436
<blockquote><pre class="code"># <tt class="userinput"><b>smbpasswd -a root</b></tt></pre></blockquote>
 
437
 
 
438
<p>to add the root user to Samba's password database.
 
439
In this case, do not provide <em class="filename">smbpasswd</em> with the
 
440
same password as the actual root account on the server. Create a
 
441
different password to be used solely for creating computer accounts.
 
442
This will reduce the possibility of compromising the root password.</p>
 
443
 
 
444
<p>When the computer account is created, two things must happen on the
 
445
Samba server. An entry is added to the <em class="filename">smbpasswd</em>
 
446
file, with a &quot;username&quot; that is the
 
447
NetBIOS name of the computer with a dollar sign
 
448
(<tt class="literal">$</tt>) appended to it. This part is handled by the
 
449
<em class="emphasis">smbpasswd</em> command, and you do not need to
 
450
perform any additional action to implement it.</p>
 
451
 
 
452
<p>With Samba 2.2, an entry is also required in the
 
453
<em class="filename">/etc/passwd</em> file<a name="FNPTR-2"/><a href="#FOOTNOTE-2">[2]</a> to give the computer account a
 
454
user ID (UID) on the Samba server.</p> 
 
455
 
 
456
<p>This account will never be used to
 
457
log in to the Unix system, so it should not be given a valid home
 
458
directory or login shell. To make this part work, you must set the
 
459
<tt class="literal">add</tt> <tt class="literal">user</tt>
 
460
<tt class="literal">script</tt> parameter in your Samba configuration file,
 
461
using a command that adds the entry in the proper manner. On our Red
 
462
Hat Linux system, we set <tt class="literal">add</tt>
 
463
<tt class="literal">user</tt> <tt class="literal">script</tt> to:</p>
 
464
 
 
465
<blockquote><pre class="code">/usr/sbin/useradd -d /dev/null -g 100 -s /bin/false -M %u</pre></blockquote>
 
466
 
 
467
<p>This command adds an entry in <em class="filename">/etc/passwd</em>
 
468
similar to the following:</p>
 
469
 
 
470
<blockquote><pre class="code">aztec$:x:505:100::/dev/null:/bin/false</pre></blockquote>
 
471
 
 
472
<p>Again, notice that the username ends in a dollar sign. The user
 
473
account shown has a &quot;home
 
474
directory&quot; of <em class="filename">/dev/null</em>, a
 
475
group ID (GID) of 100, and a &quot;login
 
476
shell&quot; of <em class="filename">/bin/false</em>. The
 
477
<em class="emphasis">-M</em> flag in our <em class="emphasis">useradd</em>
 
478
command prevents it from creating the home directory. Samba replaces
 
479
the <tt class="literal">%u</tt> variable in the
 
480
<em class="emphasis">useradd</em> command with the NetBIOS name of the
 
481
computer, including the trailing dollar sign. The basic idea here is
 
482
to create an entry with a valid username and UID. These are the only
 
483
parts that Samba uses. It is important that the UID be unique, not
 
484
also used for other accounts&mdash;especially ones that are
 
485
associated with Samba users.</p>
 
486
 
 
487
<p>If you are using some other variety of Unix, you will need to replace
 
488
our <em class="emphasis">useradd</em> command with a command that performs
 
489
the same function on your system. If a command such as
 
490
<em class="emphasis">useradd</em> does not come with your system, you can
 
491
write a shell script yourself that performs the same function. In any
 
492
case, the command should add a password hash that does not correspond
 
493
to any valid password. For example, in the<em class="filename">
 
494
/etc/shadow</em> file of our Linux server, we find the
 
495
following two lines:</p>
 
496
 
 
497
<blockquote><pre class="code">jay:%1%zQ7j7ok8$D/IubyRAY5ovM3bTrpUCn1:11566:0:99999:7:::
 
498
zapotec$:!!:11625:0:99999:7:::</pre></blockquote>
 
499
 
 
500
<p>The first line is for <tt class="literal">jay</tt>'s user
 
501
account. The second field is the password hash&mdash;the long string
 
502
between the first and second colons. The second line is for the
 
503
computer account of <tt class="literal">zapotec</tt>, a domain member
 
504
server. Its &quot;username&quot; ends with a
 
505
dollar sign (<tt class="literal">$</tt>), and the second field in this case
 
506
has been set to &quot;!!&quot;, which is an
 
507
arbitrary string not produced from any password. Therefore, there is
 
508
no valid password for this account on the Linux host. Just about any
 
509
ASCII string can be used instead of
 
510
&quot;!!&quot;. For example, you could use
 
511
&quot;DISABLED&quot; instead.</p>
 
512
 
 
513
<a name="samba2-CHP-4-NOTE-104"/><blockquote class="note"><h4 class="objtitle">TIP</h4>
 
514
<p>It is possible to <a name="INDEX-47"/><a name="INDEX-48"/><a name="INDEX-49"/><a name="INDEX-50"/>create the entries for
 
515
<em class="filename">/etc/passwd</em> and <em class="filename">smbpasswd</em>
 
516
manually; however, we suggest this method be used very carefully, and
 
517
only for initial testing, or as a last resort. The reason for this is
 
518
to maintain security. After the computer account has been created on
 
519
the server, the next Windows NT/2000/XP system on the network with a
 
520
matching NetBIOS name to log on to the domain will be associated with
 
521
this account. This allows crackers a window of opportunity to take
 
522
over computer accounts for their own purposes.</p>
 
523
</blockquote>
 
524
 
 
525
 
 
526
</div>
 
527
 
 
528
 
 
529
 
 
530
<div class="sect1"><a name="samba2-CHP-4-SECT-3"/>
 
531
 
 
532
<h2 class="head1">Configuring Windows Clients for Domain Logons</h2>
 
533
 
 
534
<p><a name="INDEX-51"/>The client-side configuration for Windows
 
535
clients is really simple. All you have to do is switch from workgroup
 
536
to domain networking by enabling domain logons, and in the case of
 
537
Windows NT/2000/XP, also provide the root password you gave
 
538
<em class="filename">smbpasswd</em> for creating computer accounts. This
 
539
results in the Windows NT/2000/XP system becoming a member of the
 
540
domain.</p>
 
541
 
 
542
 
 
543
<div class="sect2"><a name="samba2-CHP-4-SECT-3.1"/>
 
544
 
 
545
<h3 class="head2">Windows 95/98/Me</h3>
 
546
 
 
547
<p><a name="INDEX-52"/><a name="INDEX-53"/>To
 
548
enable domain logons with Windows 95/98/Me, open the Control Panel
 
549
and double-click the Network icon. Then click Client for Microsoft
 
550
Networks, and click the Properties button. At this point, you should
 
551
see a dialog box similar to <a href="ch04.html#samba2-CHP-4-FIG-1">Figure 4-1</a>. Select the
 
552
Logon to Windows Domain checkbox at the top of the dialog box, and
 
553
enter the name of the domain as you have defined it with the
 
554
<tt class="literal">workgroup</tt> parameter in the Samba configuration
 
555
file. Then click OK, and reboot the machine when asked.</p>
 
556
 
 
557
<div class="figure"><a name="samba2-CHP-4-FIG-1"/><img src="figs/sam2_0401.gif"/></div><h4 class="head4">Figure 4-1. Configuring a Windows 95/98 client for domain logons</h4>
 
558
<a name="samba2-CHP-4-NOTE-105"/><blockquote class="note"><h4 class="objtitle">WARNING</h4>
 
559
<p>If <a name="INDEX-54"/>Windows complains that you are already
 
560
logged into the domain, you probably have an active connection to a
 
561
share in the workgroup (such as a mapped network drive). Simply
 
562
disconnect the resource temporarily by right-clicking its icon and
 
563
choosing the Disconnect pop-up menu item.</p>
 
564
</blockquote>
 
565
 
 
566
<p>When Windows reboots, you should see the standard logon dialog with
 
567
an addition: a field for a domain. The domain name should already be
 
568
filled in, so simply enter your password and click the OK button. At
 
569
this point, Windows should consult the primary domain controller
 
570
(Samba) to see if the password is correct. (You can check the log
 
571
files if you want to see this in action.) If it worked,
 
572
congratulations! You have properly configured Samba to act as a
 
573
domain controller for Windows 95/98/Me machines, and your client is
 
574
successfully connected.</p>
 
575
 
 
576
 
 
577
</div>
 
578
 
 
579
 
 
580
<div class="sect2"><a name="samba2-CHP-4-SECT-3.2"/>
 
581
 
 
582
<h3 class="head2">User-Level Security for Windows 95/98/Me</h3>
 
583
 
 
584
<p><a name="INDEX-55"/><a name="INDEX-56"/><a name="INDEX-57"/>Now that you have a primary domain
 
585
controller to authenticate users, you can implement much better
 
586
security for shares that reside on Windows 95/98/Me
 
587
systems.<a name="FNPTR-3"/><a href="#FOOTNOTE-3">[3]</a> To enable this functionality, open the
 
588
Control Panel, double-click the Network icon, and click the Access
 
589
Control tab in the dialog box. The window should now look like <a href="ch04.html#samba2-CHP-4-FIG-2">Figure 4-2</a>.</p>
 
590
 
 
591
<div class="figure"><a name="samba2-CHP-4-FIG-2"/><img src="figs/sam2_0402.gif"/></div><h4 class="head4">Figure 4-2. Setting user-level access control</h4>
 
592
 
 
593
<p>Click the User-level access control radio button, and type in the
 
594
name of your domain in the text area. Click the OK button. If you get
 
595
the dialog box shown in <a href="ch04.html#samba2-CHP-4-FIG-3">Figure 4-3</a>, it means that
 
596
shares are already on the system.</p>
 
597
 
 
598
<div class="figure"><a name="samba2-CHP-4-FIG-3"/><img src="figs/sam2_0403.gif"/></div><h4 class="head4">Figure 4-3. Error dialog while changing to user-level access control</h4>
 
599
 
 
600
<p>In that case, you might want to cancel the operation and make a
 
601
record of each of the computer's shares, making it
 
602
easier to re-create them, and then redo this part. (To get a list of
 
603
shares, open an MS-DOS prompt window and run the
 
604
<tt class="literal">net</tt> <tt class="literal">view</tt>
 
605
<tt class="literal">\\</tt><em class="replaceable">computer_name</em>
 
606
command.) Otherwise, you will get a message asking you to reboot to
 
607
put the change in configuration into effect.</p>
 
608
 
 
609
<p>After rebooting, you can create shares with user-level access
 
610
control. To do this, right-click the folder you wish to share, and
 
611
select Sharing.... This will bring up the Shared Properties dialog
 
612
box, shown in <a href="ch04.html#samba2-CHP-4-FIG-4">Figure 4-4</a>.</p>
 
613
 
 
614
<div class="figure"><a name="samba2-CHP-4-FIG-4"/><img src="figs/sam2_0404.gif"/></div><h4 class="head4">Figure 4-4. The Shared Properties dialog</h4>
 
615
 
 
616
<p>Click the Shared As: radio button, and give the share a name and
 
617
comment. Then click the Add... button, and you will see the Add Users
 
618
dialog box, shown in <a href="ch04.html#samba2-CHP-4-FIG-5">Figure 4-5</a>.</p>
 
619
 
 
620
<div class="figure"><a name="samba2-CHP-4-FIG-5"/><img src="figs/sam2_0405.gif"/></div><h4 class="head4">Figure 4-5. The Add Users dialog</h4>
 
621
 
 
622
<p>What has happened is that Windows has contacted the primary domain
 
623
controller (in this case, Samba) and requested a list of domain users
 
624
and groups. You can now select a user or group and add it to one or
 
625
more of the three lists on the righthand side of the window&mdash;for
 
626
Read Only, Full Access, or Custom Control&mdash;by clicking the
 
627
buttons in the middle of the window. When you are done, click the OK
 
628
button. If you added any users or groups to the Custom Control list,
 
629
you will be presented with the Change Access Rights dialog box, shown
 
630
in <a href="ch04.html#samba2-CHP-4-FIG-6">Figure 4-6</a>, in which you can specify the rights
 
631
you wish to allow. Then click the OK button to close the dialog box.</p>
 
632
 
 
633
<div class="figure"><a name="samba2-CHP-4-FIG-6"/><img src="figs/sam2_0406.gif"/></div><h4 class="head4">Figure 4-6. The Change Access Rights dialog</h4>
 
634
 
 
635
<p>You are now returned to the Shared Properties dialog box, where you
 
636
will see the Name: and Access Rights: columns filled in with the
 
637
permissions that you just created. Click the OK button to finalize
 
638
the process. Remember, you will have to perform these actions on any
 
639
folders that you had previously shared using share-level security.
 
640
<a name="INDEX-58"/><a name="INDEX-59"/></p>
 
641
 
 
642
 
 
643
</div>
 
644
 
 
645
 
 
646
<div class="sect2"><a name="samba2-CHP-4-SECT-3.3"/>
 
647
 
 
648
<h3 class="head2">Windows NT 4.0</h3>
 
649
 
 
650
<p><a name="INDEX-60"/><a name="INDEX-61"/>To
 
651
configure Windows NT for domain logons, log in to the computer as
 
652
Administrator or another user in the Administrators group, open the
 
653
Control Panel, and double-click the Network icon. If it
 
654
isn't already selected, click on the Network
 
655
Identification tab.</p>
 
656
 
 
657
<p>Click the Change... button, and you should see the dialog box shown
 
658
in <a href="ch04.html#samba2-CHP-4-FIG-7">Figure 4-7</a>. In this dialog box, you can choose
 
659
to have the Windows NT client become a member of the domain by
 
660
clicking the checkbox marked Domain: in the Member of box. Then type
 
661
in the name of the domain to which you wish the client to log on; it
 
662
should be the same as the one you specified using the
 
663
<tt class="literal">workgroup</tt> parameter in the Samba configuration
 
664
file. Click the checkbox marked Create a Computer Account in the
 
665
Domain, and fill in &quot;root&quot; for the
 
666
text area labeled User Name:. In the Password: text area, fill in the
 
667
root password you gave <em class="emphasis">smbpasswd</em> for creating
 
668
computer accounts.</p>
 
669
 
 
670
<div class="figure"><a name="samba2-CHP-4-FIG-7"/><img src="figs/sam2_0407.gif"/></div><h4 class="head4">Figure 4-7. Configuring a Windows NT client for domain logons</h4>
 
671
<a name="samba2-CHP-4-NOTE-106"/><blockquote class="note"><h4 class="objtitle">WARNING</h4>
 
672
<p>If Windows complains that you are already logged in, you probably
 
673
have an active connection to a share in the workgroup (such as a
 
674
mapped network drive). Disconnect the resource temporarily by
 
675
right-clicking its icon and choosing the Disconnect pop-up menu item.</p>
 
676
</blockquote>
 
677
 
 
678
<p>After you press the OK button, Windows should present you with a
 
679
small dialog box welcoming you to the domain. Click the Close button
 
680
in the Network dialog box, and reboot the computer as requested. When
 
681
the system comes up again, the machine will automatically present you
 
682
with a logon screen similar to the one for Windows 95/98/Me clients,
 
683
except that the domain text area has a drop-down menu so that you can
 
684
opt to log on to either the local system or the domain. Make sure
 
685
your domain is selected, and log on to the domain using any
 
686
Samba-enabled user account on the Samba server.</p>
 
687
<a name="samba2-CHP-4-NOTE-107"/><blockquote class="note"><h4 class="objtitle">WARNING</h4>
 
688
<p>Be sure to select the correct domain in the Windows NT logon dialog
 
689
box. Once it is selected, it might take a moment for Windows NT to
 
690
build the list of available domains.</p>
 
691
</blockquote>
 
692
 
 
693
<p>After you enter the password, Windows NT should consult the primary
 
694
domain controller (Samba) to see if the password is correct. Again,
 
695
you can check the log files if you want to see this in action. If it
 
696
worked, you have successfully configured Samba to act as a domain
 
697
controller for Windows NT machines. <a name="INDEX-62"/><a name="INDEX-63"/></p>
 
698
 
 
699
 
 
700
</div>
 
701
 
 
702
 
 
703
<div class="sect2"><a name="samba2-CHP-4-SECT-3.4"/>
 
704
 
 
705
<h3 class="head2">Windows 2000</h3>
 
706
 
 
707
<p><a name="INDEX-64"/><a name="INDEX-65"/>To
 
708
configure Windows 2000 for domain logons, log in to the computer as
 
709
Administrator or another user in the Administrators group, open the
 
710
Control Panel, and double-click the System icon to open the System
 
711
Properties dialog box. Click the Network Identification tab, and then
 
712
click the Properties button. You should now see the Identification
 
713
Changes dialog box shown in <a href="ch04.html#samba2-CHP-4-FIG-8">Figure 4-8</a>.</p>
 
714
 
 
715
<div class="figure"><a name="samba2-CHP-4-FIG-8"/><img src="figs/sam2_0408.gif"/></div><h4 class="head4">Figure 4-8. The Identification Changes dialog</h4>
 
716
 
 
717
<p>Click the radio button labeled
 
718
&quot;Domain:&quot; and fill in the name of
 
719
your domain in the text-entry area. Then click the OK button. This
 
720
will bring up the Domain Username and Password dialog box. Enter
 
721
&quot;root&quot; for the username. For the
 
722
password, use the password that you gave to
 
723
<em class="emphasis">smbpasswd</em> for the root account.</p>
 
724
<a name="samba2-CHP-4-NOTE-108"/><blockquote class="note"><h4 class="objtitle">WARNING</h4>
 
725
<p>If Windows complains that you are already logged in, you probably
 
726
have an active connection to a share in the workgroup (such as a
 
727
mapped network drive). Disconnect the resource temporarily by
 
728
right-clicking its icon and choosing the Disconnect pop-up menu item.</p>
 
729
</blockquote>
 
730
 
 
731
<p>After you press the OK button, Windows should present you with a
 
732
small dialog box welcoming you to the domain. When you click the OK
 
733
button in this dialog box, you will be told that you need to reboot
 
734
the computer. Click the OK button in the System Properties dialog
 
735
box, and reboot the computer as requested. When the system comes up
 
736
again, the machine will automatically present you with a Log On to
 
737
Windows dialog box similar to the one shown in <a href="ch04.html#samba2-CHP-4-FIG-9">Figure 4-9</a>.</p>
 
738
 
 
739
<div class="figure"><a name="samba2-CHP-4-FIG-9"/><img src="figs/sam2_0409.gif"/></div><h4 class="head4">Figure 4-9. The Windows 2000 logon window</h4>
 
740
 
 
741
<p>If you do not see the Log on to: drop-down menu, click the Options
 
742
&lt;&lt; button and it will appear. Select your domain, rather than
 
743
the local computer, from the menu.</p>
 
744
<a name="samba2-CHP-4-NOTE-109"/><blockquote class="note"><h4 class="objtitle">WARNING</h4>
 
745
<p>Be sure to select the correct domain in the logon dialog box. Once it
 
746
is selected, it might take a moment for Windows to build the list of
 
747
available domains.</p>
 
748
</blockquote>
 
749
 
 
750
<p>Enter the username and password of any Samba-enabled user in the User
 
751
name: and Password: fields, and either press the Enter key or click
 
752
the OK button. If it worked, your Windows session will start up with
 
753
no error dialogs. <a name="INDEX-66"/><a name="INDEX-67"/></p>
 
754
 
 
755
 
 
756
</div>
 
757
 
 
758
 
 
759
<div class="sect2"><a name="samba2-CHP-4-SECT-3.5"/>
 
760
 
 
761
<h3 class="head2">Windows XP Home</h3>
 
762
 
 
763
<p><a name="INDEX-68"/>You have our
 
764
condolences if you are trying to use the Home edition of Windows XP
 
765
in a domain environment! Microsoft has omitted support for Windows NT
 
766
domains from Windows XP Home, resulting in a product that is
 
767
ill-suited for use in a domain-based network.</p>
 
768
 
 
769
<p>On the client side, Windows XP Home users cannot log on to a Windows
 
770
NT domain. Although it is still possible to access domain resources,
 
771
a username and password must be supplied each time the user connects
 
772
to a resource, rather than the &quot;single
 
773
signon&quot; of a domain logon. Domain features such as
 
774
logon scripts and roaming profiles are not supported.</p>
 
775
 
 
776
<p>As a server, Windows XP Home cannot join a Windows NT domain as a
 
777
domain member server. It can serve files and printers, but only using
 
778
share-mode (&quot;workgroup&quot;) security.
 
779
It can't even use user-mode security, as Windows
 
780
95/98/Me can.</p>
 
781
 
 
782
<p>Considering these limitations, we do not recommend Windows XP Home
 
783
for any kind of local area network computing.</p>
 
784
 
 
785
 
 
786
</div>
 
787
 
 
788
 
 
789
<div class="sect2"><a name="samba2-CHP-4-SECT-3.6"/>
 
790
 
 
791
<h3 class="head2">Windows XP Professional</h3>
 
792
 
 
793
<p><a name="INDEX-69"/><a name="INDEX-70"/>To configure Windows XP
 
794
Professional for domain logons, log in to the computer as
 
795
Administrator or another user in the Administrators group, open the
 
796
Control Panel in Classic View, and double-click the System icon to
 
797
open the System Properties dialog box. Click the Computer Name tab
 
798
and then click the Change... button. You should now see the Computer
 
799
Name Changes dialog box shown in <a href="ch04.html#samba2-CHP-4-FIG-10">Figure 4-10</a>.</p>
 
800
 
 
801
<div class="figure"><a name="samba2-CHP-4-FIG-10"/><img src="figs/sam2_0410.gif"/></div><h4 class="head4">Figure 4-10. The Computer Name Changes dialog</h4>
 
802
 
 
803
<p>Click the radio button labeled
 
804
&quot;Domain:&quot;, and fill in the name of
 
805
your domain in the text-entry area. Then click the OK button. This
 
806
will bring up the Domain Username and Password dialog box. Enter
 
807
&quot;root&quot; for the username. For the
 
808
password, use the password that you gave to
 
809
<em class="emphasis">smbpasswd</em> for the root account.</p>
 
810
<a name="samba2-CHP-4-NOTE-110"/><blockquote class="note"><h4 class="objtitle">WARNING</h4>
 
811
<p>If Windows complains that you are already logged in, you probably
 
812
have an active connection to a share in the workgroup (such as a
 
813
mapped network drive). Disconnect the resource temporarily by
 
814
right-clicking its icon and choosing the Disconnect pop-up menu item.</p>
 
815
</blockquote>
 
816
 
 
817
<p>After you press the OK button, Windows should present you with a
 
818
small dialog box welcoming you to the domain. When you click the OK
 
819
button in this dialog box, you will be told that you need to reboot
 
820
the computer to put the changes into effect. Click the OK buttons in
 
821
the dialog boxes to close them, and reboot the computer as requested.
 
822
When the system comes up again, the machine will automatically
 
823
present you with a Log On to Windows dialog box similar to the one
 
824
shown in <a href="ch04.html#samba2-CHP-4-FIG-11">Figure 4-11</a>.</p>
 
825
 
 
826
<div class="figure"><a name="samba2-CHP-4-FIG-11"/><img src="figs/sam2_0411.gif"/></div><h4 class="head4">Figure 4-11. The Windows XP logon window</h4>
 
827
 
 
828
<p>If you get a dialog box at this point that tells you the domain
 
829
controller cannot be found, the solution is to change a registry
 
830
setting as follows.</p>
 
831
 
 
832
<p>Open the Start Menu and click the Run... menu item. In the text area
 
833
in the dialog box that opens, type in
 
834
&quot;regedit&quot; and click the OK button
 
835
to start the Registry Editor. You will be editing the registry, so
 
836
follow the rest of the directions very carefully. Click the
 
837
&quot;<tt class="literal">+</tt>&quot; button next
 
838
to the HKEY_LOCAL_MACHINE folder, and in the contents that open up,
 
839
click the &quot;<tt class="literal">+</tt>&quot;
 
840
button next to the SYSTEM folder. Continue in the same manner to open
 
841
CurrentControlSet, then Services, then Netlogon. (You will have to
 
842
scroll down many times to find Netlogon in the list of services.)
 
843
Then click the Parameters folder, and you will see items appear in
 
844
the right side of the window. Double-click
 
845
&quot;requiresignorseal&quot;, and a dialog
 
846
box will open. In the Value data: text area, change the
 
847
&quot;1&quot; to a
 
848
&quot;0&quot; (zero), and click the OK
 
849
button, which modifies the registry both in memory and on disk. Now
 
850
close the Registry Editor and log off and back on again.</p>
 
851
 
 
852
<p>If you do not see the Log on to: drop-down menu, click the Options
 
853
&lt;&lt; button and it will appear. Select your domain from the menu,
 
854
rather than the local computer.</p>
 
855
<a name="samba2-CHP-4-NOTE-111"/><blockquote class="note"><h4 class="objtitle">WARNING</h4>
 
856
<p>Be sure to select the correct domain in the logon dialog box. Once it
 
857
is selected, it might take a moment for Windows to build the list of
 
858
available domains.</p>
 
859
</blockquote>
 
860
 
 
861
<p>Enter the username and password of any Samba-enabled user in the User
 
862
name: and Password: fields, and either press the Enter key or click
 
863
the OK button. If it worked, your Windows session will start up with
 
864
no error dialogs. <a name="INDEX-71"/> <a name="INDEX-72"/><a name="INDEX-73"/></p>
 
865
 
 
866
 
 
867
</div>
 
868
 
 
869
 
 
870
</div>
 
871
 
 
872
 
 
873
 
 
874
<div class="sect1"><a name="samba2-CHP-4-SECT-4"/>
 
875
 
 
876
<h2 class="head1">Logon Scripts</h2>
 
877
 
 
878
<p><a name="INDEX-74"/>After a Windows client connects with a
 
879
domain controller (either to authenticate a user, in the case of
 
880
Windows 95/98/Me, or to log on to the domain, in the case of Windows
 
881
NT/2000/XP), the client downloads an MS-DOS batch file to run. The
 
882
domain controller supplies the file assuming one has been made
 
883
available for it. This batch file is the logon script and is useful
 
884
in setting up an initial environment for the user.</p>
 
885
 
 
886
<p>In a Unix environment, the ability to run such a script might lead to
 
887
a very complex initialization and deep customization. However, the
 
888
Windows environment is mainly oriented to the GUI, and the
 
889
command-line functions are more limited. Most commonly, the logon
 
890
script is used to run a <em class="emphasis">net</em> command, such as
 
891
<em class="emphasis">net use</em><a name="INDEX-75"/>, to connect a network drive letter,
 
892
like this:</p>
 
893
 
 
894
<blockquote><pre class="code">net use T: \\toltec\test</pre></blockquote>
 
895
 
 
896
<p>This command will make our <tt class="literal">[test]</tt> share (from
 
897
<a href="ch02.html">Chapter 2</a>) show up as the T: drive in My Computer.
 
898
This will happen automatically, and T: will be available to the user
 
899
at the beginning of her session, instead of requiring her to run the
 
900
<em class="emphasis">net use</em> command or connect the T: drive using
 
901
the Map Network Drive function of Windows Explorer.</p>
 
902
 
 
903
<p>Another useful command is:</p>
 
904
 
 
905
<blockquote><pre class="code">net use H: /home</pre></blockquote>
 
906
 
 
907
<p>which <a name="INDEX-76"/><a name="INDEX-77"/>connects the
 
908
user's home directory to a drive letter (which can
 
909
be H:, as shown here, or some other letter, as defined by
 
910
<tt class="literal">logon</tt> <tt class="literal">drive</tt>). For this to work,
 
911
you must have a <tt class="literal">[homes]</tt> share defined in your
 
912
<em class="filename">smb.conf</em> file.</p>
 
913
 
 
914
<p>If you are using <a name="INDEX-78"/><a name="INDEX-79"/>roaming profiles, you should definitely
 
915
have:</p>
 
916
 
 
917
<a name="INDEX-80"/><blockquote><pre class="code">net time \\<em class="replaceable">toltec</em> /set /yes</pre></blockquote>
 
918
 
 
919
<p>in your logon script. (As usual, replace
 
920
&quot;toltec&quot; with the name of your
 
921
Samba PDC.) This will make sure the clocks of the Windows clients are
 
922
synchronized with the PDC, which is important for roaming profiles to
 
923
work correctly.</p>
 
924
 
 
925
 
 
926
<div class="sect2"><a name="samba2-CHP-4-SECT-4.1"/>
 
927
 
 
928
<h3 class="head2">Creating a Logon Script</h3>
 
929
 
 
930
<p><a name="INDEX-81"/>In our
 
931
<em class="filename">smb.conf</em> file, we have the line:</p>
 
932
 
 
933
<a name="INDEX-82"/><blockquote><pre class="code">logon script = logon.bat</pre></blockquote>
 
934
 
 
935
<p>This defines the location and name of the logon script batch file on
 
936
the Samba server. The path is relative to the
 
937
<tt class="literal">[netlogon]</tt><a name="INDEX-83"/> share, defined later in the
 
938
file like this:</p>
 
939
 
 
940
<blockquote><pre class="code">[netlogon]
 
941
    path = /usr/local/samba/lib/netlogon
 
942
    writable = no
 
943
    browsable = no</pre></blockquote>
 
944
 
 
945
<p>With this example, the logon script is
 
946
<em class="filename">/user/local/samba/lib/netlogon/logon.bat</em>. We
 
947
include the directives <tt class="literal">writable</tt>
 
948
<tt class="literal">=</tt> <tt class="literal">no</tt>, to make sure network
 
949
clients cannot change anything in the <tt class="literal">[netlogon]</tt>
 
950
share, and also <tt class="literal">browsable</tt> <tt class="literal">=</tt>
 
951
<tt class="literal">no</tt>, which keeps them from even seeing the share
 
952
when they browse the contents of the server. Nothing in
 
953
<tt class="literal">[netlogon]</tt> should ever be modified by
 
954
nonadministrative users. Also, the permissions on the directory for
 
955
<tt class="literal">[netlogon]</tt> should be set appropriately (no write
 
956
permissions for &quot;other&quot; users), as
 
957
we showed you earlier in this chapter.</p>
 
958
 
 
959
<p>Notice also that the extension of our logon script is
 
960
<em class="filename">.bat</em><a name="INDEX-84"/>. Be careful about this&mdash;an extension
 
961
of <em class="filename">.cmd</em><a name="INDEX-85"/> will work for Windows NT/2000/XP clients,
 
962
but will result in errors for Windows 95/98/Me clients, which do not
 
963
recognize <em class="filename">.cmd</em> as an extension for batch files.</p>
 
964
 
 
965
<p>Because the logon script will be executed on a Windows system, it
 
966
must be in MS-DOS text-file format, with the end of line composed of
 
967
a carriage return followed by a linefeed. The Unix convention is a
 
968
newline, which is simply a linefeed character, so if you use a Unix
 
969
text editor to create your logon script, you must somehow make it use
 
970
the appropriate characters. With
 
971
<em class="emphasis">vim</em><a name="INDEX-86"/><a name="INDEX-87"/> (a clone of the <em class="emphasis">vi</em>
 
972
editor that is distributed with Red Hat Linux), the method is to
 
973
create a new file and use the command:</p>
 
974
 
 
975
<blockquote><pre class="code">:se ff=dos</pre></blockquote>
 
976
 
 
977
<p>to set the file format to MS-DOS style before typing in any text.
 
978
With <em class="emphasis">emacs</em><a name="INDEX-88"/>, the same can be done using the command:</p>
 
979
 
 
980
<blockquote><pre class="code">^X <em class="replaceable">Enter</em> f dos <em class="replaceable">Enter</em></pre></blockquote>
 
981
 
 
982
<p>where <tt class="literal">^X</tt> is a Control-X character and
 
983
<tt class="literal">Enter</tt> is a press of the Enter key. Another method
 
984
is to create a Unix-format file in any text editor and then convert
 
985
it to MS-DOS format using the
 
986
<em class="emphasis">unix2dos</em><a name="INDEX-89"/> program:</p>
 
987
 
 
988
<blockquote><pre class="code">$ <tt class="userinput"><b>unix2dos unix_file &gt;logon.bat</b></tt></pre></blockquote>
 
989
 
 
990
<p>If your system does not have <em class="emphasis">unix2dos</em>,
 
991
don't worry. You can implement it yourself with the
 
992
following two-line Perl script:</p>
 
993
 
 
994
<blockquote><pre class="code">#!/usr/bin/perl
 
995
open FILE, $ARGV[0];
 
996
while (&lt;FILE&gt;) { s/$/\r/; print }</pre></blockquote>
 
997
 
 
998
<p>Or, you can use Notepad on a Windows system to write your script and
 
999
then drag the logon script over to a folder on the Samba server. In
 
1000
any case, you can <a name="INDEX-90"/>check the format of your script using
 
1001
the <em class="emphasis">od</em><a name="INDEX-91"/> command, like this:</p>
 
1002
 
 
1003
<blockquote><pre class="code">$ <tt class="userinput"><b>od -c logon.bat</b></tt></pre></blockquote>
 
1004
 
 
1005
<p>You should see output resembling this:</p>
 
1006
 
 
1007
<blockquote><pre class="code">0000000   n  e  t     u  s  e      T   :    \  \  t  o  l
 
1008
0000020   t  e  c  \  t  e  s  t  \r  \n
 
1009
0000032</pre></blockquote>
 
1010
 
 
1011
<p>The important detail here is that at the end of each line is a
 
1012
<tt class="literal">\r</tt> <tt class="literal">\n</tt>, which is a carriage
 
1013
return followed by a linefeed.</p>
 
1014
 
 
1015
<p>Our example logon script, containing a single <em class="emphasis">net
 
1016
use</em> command, was created and set up in a way that allows
 
1017
it to be run successfully on any Windows client, regardless of which
 
1018
Windows version is installed on the client and which user is
 
1019
authenticating or logging on to the domain. But what if we need to
 
1020
have different users, computers, or Windows versions running
 
1021
different logon scripts?</p>
 
1022
 
 
1023
<p>One method is to use variables inside the <a name="INDEX-92"/>logon script that cause commands to be
 
1024
conditionally executed. For details on how to do this, you can
 
1025
consult a reference on batch-file programming for MS-DOS and Windows
 
1026
NT command language. One such reference is <em class="citetitle">Windows NT
 
1027
System Administration</em>, published by
 
1028
O'Reilly.</p>
 
1029
 
 
1030
<p>Windows batch-command language is very limited in functionality.
 
1031
Fortunately, Samba also supports a means by which customization can
 
1032
be handled. The
 
1033
<em class="filename">smb.conf</em><a name="INDEX-93"/><a name="INDEX-94"/> file contains variables that can be
 
1034
used to insert (at runtime) the name of the server
 
1035
(<tt class="literal">%L</tt><a name="INDEX-95"/>), the username of the person who is
 
1036
accessing the server's resources
 
1037
(<tt class="literal">%u</tt><a name="INDEX-96"/>), or the computer name of the client
 
1038
system (<tt class="literal">%m</tt><a name="INDEX-97"/>). To give an example, if we set up the
 
1039
path to the logon script as:</p>
 
1040
 
 
1041
<blockquote><pre class="code">logon script = %u/logon.bat</pre></blockquote>
 
1042
 
 
1043
<p>we would then put a directory for each user in the
 
1044
<tt class="literal">[netlogon]</tt> share, with each directory named the
 
1045
same as the user's username, and in each directory
 
1046
we would put a customized <em class="filename">logon.bat</em> file. Then
 
1047
each user would have his own custom logon script. We will give you a
 
1048
better example of how to do this kind of thing in the next section,
 
1049
<a href="ch04.html#samba2-CHP-4-SECT-5">Section 4.5</a>.</p>
 
1050
 
 
1051
<a name="samba2-CHP-4-NOTE-112"/><blockquote class="note"><h4 class="objtitle">TIP</h4>
 
1052
<p>For more information on Samba configuration file variables, such as
 
1053
the <tt class="literal">%L</tt>, <tt class="literal">%u</tt>, and
 
1054
<tt class="literal">%m</tt> variables we just used, see <a href="ch06.html">Chapter 6</a> and <a href="appb.html">Appendix B</a>.</p>
 
1055
</blockquote>
 
1056
 
 
1057
<p>When modifying and testing your logon script, don't
 
1058
just log off of your Windows session and log back on to make your
 
1059
script run. Instead, restart (reboot) your system before logging back
 
1060
on. Because Windows often keeps the <tt class="literal">[netlogon]</tt>
 
1061
share open across logon sessions, the reboot ensures that Windows and
 
1062
Samba have completely released and reconnected the
 
1063
<tt class="literal">[netlogon]</tt> share, and the new version of the logon
 
1064
script is being run while logging on.</p>
 
1065
 
 
1066
<p>More information regarding <a name="INDEX-98"/>logon scripts can be found in the
 
1067
O'Reilly book, <em class="emphasis">Managing Windows NT
 
1068
Logons</em>. <a name="INDEX-99"/> <a name="INDEX-100"/><a name="INDEX-101"/></p>
 
1069
 
 
1070
 
 
1071
</div>
 
1072
 
 
1073
 
 
1074
</div>
 
1075
 
 
1076
 
 
1077
 
 
1078
<div class="sect1"><a name="samba2-CHP-4-SECT-5"/>
 
1079
 
 
1080
<h2 class="head1">Roaming Profiles</h2>
 
1081
 
 
1082
<p><a name="INDEX-102"/>One benefit of the centralized
 
1083
authentication of Windows NT domains is that a user
 
1084
<a name="INDEX-103"/>can log on from more than just one
 
1085
computer. To help users feel more &quot;at
 
1086
home&quot; when logged on at a computer other than their
 
1087
usual one, Microsoft has added the ability for
 
1088
users' personal settings to
 
1089
&quot;roam&quot; from one computer to
 
1090
another.</p>
 
1091
 
 
1092
<p>All Windows versions can be configured individually for each user of
 
1093
the computer. Windows NT/2000/XP supports the ability to handle
 
1094
multiple user accounts, and Windows 95/98/Me can be configured for
 
1095
use by multiple users, keeping the configuration settings for each
 
1096
user separate. Each user can configure the
 
1097
computer's settings to her liking, and the system
 
1098
saves these settings as the user's
 
1099
<em class="firstterm">profile</em>, such that upon logging on to the
 
1100
system, the user is presented with her familiar desktop.</p>
 
1101
 
 
1102
<p>Some of the settings, such as folder options or the image used for
 
1103
the desktop background, are held in the registry. Others, including
 
1104
the documents and folders appearing on the desktop and the contents
 
1105
of the Start menu, are stored as folders and files in the filesystem.</p>
 
1106
 
 
1107
<p>When the profile is stored on the local system, it is called a
 
1108
<em class="firstterm">local profile</em><a name="INDEX-104"/>. On Windows NT, local profiles are
 
1109
stored in <em class="filename">C:\winnt\profiles</em>. On Windows 2000/XP,
 
1110
they can be found in <em class="filename">C:\Documents and Settings.
 
1111
</em>On Windows 95/98/Me, when configured for a single user
 
1112
(the default case), the local profile is scattered in places such as
 
1113
the registry and directories such as
 
1114
<em class="filename">C:\Windows\Desktop</em> and
 
1115
<em class="filename">C:\Windows\Start Menu</em>. When Windows 95/98/Me is
 
1116
configured for multiple users, the local profile of the preexisting
 
1117
user is moved to a folder in <em class="filename">C:\Windows\Profiles</em>
 
1118
that has the same name as the user, and any users that are
 
1119
subsequently added to the computer have their local profiles created
 
1120
in that directory as well. You can browse through the local profiles
 
1121
to see their structure&mdash;each has a <a name="INDEX-105"/><a name="INDEX-106"/><a name="INDEX-107"/><a name="INDEX-108"/><a name="INDEX-109"/>registry file
 
1122
(<em class="filename">USER.DAT</em><a name="INDEX-110"/><a name="INDEX-111"/> for Windows 95/98/Me and
 
1123
<em class="filename">NTUSER.DAT</em><a name="INDEX-112"/><a name="INDEX-113"/> for Windows NT/2000/XP) and some folders
 
1124
that contain shortcuts and documents.</p>
 
1125
 
 
1126
<p>A roaming profile is a user profile that is stored on a server and
 
1127
&quot;follows&quot; its owner around the
 
1128
network so that when the user logs on to the domain from another
 
1129
computer, his profile is downloaded from the server and his familiar
 
1130
desktop appears on that computer as well.</p>
 
1131
<a name="samba2-CHP-4-NOTE-113"/><blockquote class="note"><h4 class="objtitle">WARNING</h4>
 
1132
<p><a name="INDEX-114"/>Samba can
 
1133
support roaming profiles, and it is a fairly simple matter to
 
1134
configure it for them. However, this is one feature that we recommend
 
1135
you <em class="emphasis">do not</em> use, at least until you are sure you
 
1136
understand roaming profiles well and are very confident that you can
 
1137
implement them with no harm incurred. If you want to (or are required
 
1138
to) implement roaming profiles for your Windows clients, we suggest
 
1139
you first set up a small domain with a Samba server and a few Windows
 
1140
clients exclusively for the purposes of research and testing.
 
1141
<em class="emphasis">Under no circumstances should you attempt to implement
 
1142
roaming profiles in a careless or frivolous manner</em>.</p>
 
1143
</blockquote>
 
1144
 
 
1145
 
 
1146
<div class="sect2"><a name="samba2-CHP-4-SECT-5.1"/>
 
1147
 
 
1148
<h3 class="head2">How Roaming Profiles work</h3>
 
1149
 
 
1150
<p><a name="INDEX-115"/>We will start out by explaining to you
 
1151
how roaming profiles work when set up correctly. You will need a
 
1152
clear understanding of them to tell the difference between when they
 
1153
are working as they are designed and when they are not. In addition,
 
1154
roaming profiles can be a source of confusion for your users in many
 
1155
ways, and you should know how to detect when a problem with a client
 
1156
is related to roaming profile function or dysfunction.</p>
 
1157
 
 
1158
<a name="samba2-CHP-4-NOTE-114"/><blockquote class="note"><h4 class="objtitle">TIP</h4>
 
1159
<p><a name="INDEX-116"/>A definitive source of
 
1160
documentation on Windows NT roaming profiles is the Microsoft white
 
1161
paper <em class="citetitle">Implementing Policies and Profiles for Windows NT
 
1162
4.0</em><a name="INDEX-117"/>, which can be found at
 
1163
<a href="http://www.microsoft.com/ntserver/techresources/management/prof_policies.asp">http://www.microsoft.com/ntserver/techresources/management/prof_policies.asp</a>.</p>
 
1164
</blockquote>
 
1165
 
 
1166
<p>During the domain logon process, the roaming profile is copied from
 
1167
the domain controller and used as a local profile during the
 
1168
user's logon session. When the user logs off the
 
1169
domain, the local profile is copied back to the domain controller and
 
1170
stored as the new roaming profile. When the local profile is changed,
 
1171
the server does not receive an update until the user logs off the
 
1172
domain or shuts down or reboots the client. The client does not send
 
1173
an update to the server during the logon session, and a client does
 
1174
not receive an update of a setting changed on another client during a
 
1175
logon session. When the user does log off, changes in the
 
1176
configuration settings in the local profile are sent to the server,
 
1177
and the updates of the roaming profile are available for the next
 
1178
logon session.</p>
 
1179
 
 
1180
<p>This simple behavior can lead to unexpected results when users are
 
1181
<a name="INDEX-118"/>logged on to the domain
 
1182
on more than one client at a time. If a user makes a change to the
 
1183
configuration settings on one client and then logs off, the settings
 
1184
can result in the roaming profile being modified accordingly. But the
 
1185
next client that logs off might cause those changes to be
 
1186
overwritten, and if so, the settings from the first client will be
 
1187
lost. The behavior of different Windows versions varies with regard
 
1188
to this, and we've seen a wide variety of
 
1189
behaviors&mdash;not always in alignment with
 
1190
Microsoft's documentation or even working the same
 
1191
way on separate occasions. Sometimes Windows will refuse to overwrite
 
1192
a profile, perhaps giving an &quot;access
 
1193
denied&quot; error, and at other times it will seem to
 
1194
work while producing odd side effects. A common source of confusion
 
1195
is what happens if a file is added to or deleted from the desktop,
 
1196
which is by default configured to be part of the profile. A deleted
 
1197
file might later reappear, and it is even possible for a file to
 
1198
irrecoverably disappear without warning (on Windows 95/98). Or maybe
 
1199
a file that is added to the desktop on one client never gets added to
 
1200
the roaming profile and fails to propagate to other clients. This
 
1201
behavior is somewhat improved on Windows 2000/XP, which attempts to
 
1202
merge items into the profile that are added on concurrently logged-on
 
1203
clients.</p>
 
1204
 
 
1205
<p>One factor that comes into play is that Windows compares the
 
1206
<a name="INDEX-119"/>timestamps of the local and roaming
 
1207
profiles and can refuse to overwrite a roaming profile if it is newer
 
1208
than the local profile on the client, or vice versa. For this reason,
 
1209
it is important to keep the clocks of the Windows clients and the
 
1210
Samba PDC synchronized. We have already shown you how to do this,
 
1211
using the <em class="emphasis">net time
 
1212
\\</em><em class="replaceable">server</em>
 
1213
<em class="emphasis">/set</em> <em class="emphasis">/yes</em> command in the
 
1214
logon script.</p>
 
1215
 
 
1216
<p><a name="INDEX-120"/>Even when the server and clients are
 
1217
correctly configured, a number of things that can happen make things
 
1218
seem &quot;broken.&quot; The most common
 
1219
occurrence is that some shortcuts on clients other than the one that
 
1220
created the roaming profile will not work. These shortcuts can exist
 
1221
on the desktop or as items in the Start menu. This behavior is a
 
1222
result of applications or files that exist on one computer but not
 
1223
others. Windows will display these shortcuts, but if they appear on
 
1224
the desktop, they will have a generic icon and will bring up an error
 
1225
message if a user double-clicks them.</p>
 
1226
 
 
1227
<a name="samba2-CHP-4-NOTE-115"/><blockquote class="note"><h4 class="objtitle">TIP</h4>
 
1228
<p>Because profiles can and usually do include the contents of the
 
1229
desktop and other folders, it is possible for the roaming profile to
 
1230
grow to a huge size due to actions of a user, such as creating new
 
1231
files on the desktop or copying files there. By default, Internet
 
1232
Explorer keeps its disk cache in the <em class="filename">Temporary Internet
 
1233
Files</em><a name="INDEX-121"/><a name="INDEX-122"/> folder in the profile and has been
 
1234
known to populate this directory with thousands of files. This can
 
1235
result in a huge roaming profile that causes network congestion and
 
1236
very large delays while users are logging on to the domain. (A fix
 
1237
for this can be found in article Q185255 in the Microsoft Knowledge
 
1238
Base.)</p>
 
1239
</blockquote>
 
1240
 
 
1241
<p>One behavior we've seen a few times is that if, for
 
1242
some reason (e.g., a network error or misconfiguration), the roaming
 
1243
profile is not available during the logon process, Windows will use
 
1244
the local profile on the client instead. When this happens, the user
 
1245
might receive an unfamiliar profile, and all the benefits of roaming
 
1246
profiles are lost for that logon session.</p>
 
1247
 
 
1248
 
 
1249
</div>
 
1250
 
 
1251
 
 
1252
<div class="sect2"><a name="samba2-CHP-4-SECT-5.2"/>
 
1253
 
 
1254
<h3 class="head2">Configuring Samba for Roaming Profiles</h3>
 
1255
 
 
1256
<p><a name="INDEX-123"/><a name="INDEX-124"/>In an ideal world, different Windows
 
1257
versions would share the same roaming profile, allowing users to log
 
1258
on to the domain from any Windows client system, ranging from Windows
 
1259
95 to Windows XP, and enjoy their familiar settings. It would even be
 
1260
possible to be logged on concurrently from multiple clients, and a
 
1261
change made to the profile on any of them would quickly propagate to
 
1262
all the others. Settings in a roaming profile made on a client that
 
1263
didn't apply to another would be handled sanely.</p>
 
1264
 
 
1265
<p>Unfortunately, this scenario does not work in reality, and it is
 
1266
important to maintain separate roaming profiles to prevent different
 
1267
Windows versions from using or modifying a roaming profile created
 
1268
by, and/or in use by, another version.</p>
 
1269
 
 
1270
<p>We do this by using configuration file variables to point to
 
1271
different profile directories. If you look at <a href="appb.html#samba2-APP-B-TABLE-1">Table B-1</a> in <a href="appb.html#samba2-APP-B#samba2-APP-B">Appendix B</a>, which shows
 
1272
the variables that can be used, you might be tempted to use the
 
1273
<a name="INDEX-125"/><tt class="literal">%a</tt> variable, which
 
1274
is replaced by the name of the operating system the client is
 
1275
running. However, this does not work because all of Windows 95/98/Me
 
1276
will be seen as the same operating system, and likewise for Windows
 
1277
2000/XP. So, we use <a name="INDEX-126"/><tt class="literal">%m</tt> to get the
 
1278
NetBIOS name of the client, and combine that with a symbolic link to
 
1279
point to the directory containing the profile for the Windows version
 
1280
that particular client is running.</p>
 
1281
 
 
1282
<p>Our additions to <em class="filename">smb.conf</em> that appeared earlier
 
1283
in this chapter included the two lines:</p>
 
1284
 
 
1285
<blockquote><pre class="code">logon path = \\%L\profiles\%u\%m
 
1286
logon home = \\%L\%u\.win_profile\%m</pre></blockquote>
 
1287
 
 
1288
<p>The first line specifies where the roaming profiles for Windows
 
1289
NT/2000/XP clients are kept, and the second line performs the same
 
1290
function for Windows 95/98/Me clients. In both cases, the location is
 
1291
specified as a UNC, but
 
1292
<tt class="literal">logon</tt><a name="INDEX-127"/> <tt class="literal">path</tt> (for Windows
 
1293
NT/2000/XP) is specified relative to the
 
1294
<tt class="literal">[profiles]</tt> share, while
 
1295
<tt class="literal">logon</tt><a name="INDEX-128"/> <tt class="literal">home</tt> (for Windows
 
1296
95/98/Me) is specified relative to the user's home
 
1297
directory. This is done to comply with Samba's
 
1298
emulation of Windows NT/2000 PDC behavior.</p>
 
1299
 
 
1300
<p>The <tt class="literal">logon</tt> <tt class="literal">home</tt> UNC must begin
 
1301
by specifying the user's home directory, which in
 
1302
our previous example would be <tt class="literal">\\%L\%u</tt>. The
 
1303
variable <tt class="literal">%L</tt><a name="INDEX-129"/> expands to the NetBIOS name of the
 
1304
server (in this case, toltec), and
 
1305
<tt class="literal">%u</tt><a name="INDEX-130"/> expands to the name of the user. This
 
1306
must be done to allow the command:</p>
 
1307
 
 
1308
<a name="INDEX-131"/><blockquote><pre class="code">C:\&gt;<tt class="userinput"><b>net use h: /home</b></tt></pre></blockquote>
 
1309
 
 
1310
<p>to function correctly to connect the user's home
 
1311
directory to drive letter H: on all Windows clients. (The drive
 
1312
letter used for this purpose is defined by <tt class="literal">logon</tt>
 
1313
<tt class="literal">drive</tt>.) We add the directory
 
1314
<em class="filename">.win_profile</em><a name="INDEX-132"/> to the UNC to put the Windows
 
1315
95/98/Me roaming profile in a subdirectory of the
 
1316
user's home directory.</p>
 
1317
<a name="samba2-CHP-4-NOTE-116"/><blockquote class="note"><h4 class="objtitle">WARNING</h4>
 
1318
<p>Note that in both <tt class="literal">logon path</tt> and <tt class="literal">logon
 
1319
home</tt>, we absolutely avoid making the profile directory the
 
1320
same as the user's home directory, and the directory
 
1321
that contains the profile is not used for any other purpose. This is
 
1322
because when the roaming profile is updated, all directories and
 
1323
files in the roaming-profile directory that are not part of the
 
1324
roaming profile are deleted.</p>
 
1325
</blockquote>
 
1326
 
 
1327
<p>In the <tt class="literal">logon</tt> <tt class="literal">path</tt> line in
 
1328
<em class="filename">smb.conf</em>, we use <tt class="literal">%u</tt> to put
 
1329
the profiles directory in a subdirectory in the
 
1330
<tt class="literal">[profiles]</tt> share, such that each user gets her own
 
1331
directory that holds her roaming profiles.</p>
 
1332
 
 
1333
<p>We define the <tt class="literal">[profiles]</tt> share like this:</p>
 
1334
 
 
1335
<blockquote><pre class="code">[profiles]
 
1336
    writable = yes
 
1337
    create mask = 0600
 
1338
    directory mask = 0700
 
1339
    browsable = no
 
1340
    path = /home/samba-ntprof</pre></blockquote>
 
1341
 
 
1342
<p>The first four parameters in the previous share definition specify to
 
1343
allow roaming profiles to be written with the users'
 
1344
permissions, to create files with read and write permissions for the
 
1345
owner, and to create directories with read, write, and search
 
1346
permissions for the owner and no access allowed for other users. As
 
1347
with the <tt class="literal">[netlogon]</tt> share, we set
 
1348
<tt class="literal">browsable</tt> <tt class="literal">=</tt>
 
1349
<tt class="literal">no</tt> so that the share will not show up on the
 
1350
clients in Windows Explorer.</p>
 
1351
 
 
1352
<p>We've decided to put our Windows NT/2000/XP profiles
 
1353
in <em class="filename">/home</em>, the default location of the home
 
1354
directories on Linux. This will make it simple to include the roaming
 
1355
profiles in backups of the home directories. You can use another
 
1356
directory if you like.</p>
 
1357
 
 
1358
<p>Notice that in both <tt class="literal">logon</tt> <tt class="literal">path</tt>
 
1359
and <tt class="literal">logon</tt> <tt class="literal">home</tt>, the directory
 
1360
we specify ends in <tt class="literal">%m</tt>, which Samba replaces with
 
1361
the NetBIOS name of the client. We are using the
 
1362
client's computer name to identify indirectly which
 
1363
version of Windows it is running.</p>
 
1364
 
 
1365
<p>Initially, the directories you specify to hold the roaming profiles
 
1366
will be empty and will become populated as clients log off for the
 
1367
first time. (Samba will even create the directories if they do not
 
1368
already exist.) At first, the directories will simply contain
 
1369
profiles that are identical to the clients' local
 
1370
profiles, and we highly recommend that you make a backup at this
 
1371
point before things get complicated. A listing of the roaming profile
 
1372
directory for user <tt class="literal">iman</tt>, after she has logged off
 
1373
from Windows 98 clients <tt class="literal">mixtec</tt> and
 
1374
<tt class="literal">pueblo</tt> and Windows Me clients
 
1375
<tt class="literal">huastec</tt> and <tt class="literal">navajo</tt>, might look
 
1376
something like the following:</p>
 
1377
 
 
1378
<blockquote><pre class="code">$ <tt class="userinput"><b>ls -l /home/iman/.win_profile</b></tt>
 
1379
total 4
 
1380
drwx------    6 iman      iman          4096 Dec  8 18:09 huastec
 
1381
drwx------    9 iman      iman          4096 Dec  7 03:47 mixtec
 
1382
drwx------   11 iman      iman          4096 Dec  7 03:05 navajo
 
1383
drwx------   11 iman      iman          4096 Dec  7 03:05 pueblo</pre></blockquote>
 
1384
 
 
1385
<p>If things were left like this, the clients would not share their
 
1386
roaming profiles, so next we change from using separate directories
 
1387
to having symbolic links point to common directories:</p>
 
1388
 
 
1389
<blockquote><pre class="code"># <tt class="userinput"><b>mv mixtec Win98</b></tt>
 
1390
# <tt class="userinput"><b>mv navajo WinMe</b></tt>
 
1391
# <tt class="userinput"><b>rm huastec pueblo</b></tt>
 
1392
# <tt class="userinput"><b>ln -s Win98 pueblo</b></tt>
 
1393
# <tt class="userinput"><b>ln -s WinMe huastec</b></tt>
 
1394
# <tt class="userinput"><b>chown iman:iman *</b></tt>
 
1395
# <tt class="userinput"><b>ls -l /home/iman/.win_profile</b></tt>
 
1396
total 6
 
1397
lrwxrwxrwx    1 iman      iman             5 Nov 16 01:40 huastec -&gt; WinMe
 
1398
lrwxrwxrwx    1 iman      iman             5 Nov 16 01:40 mixtec -&gt; Win98
 
1399
lrwxrwxrwx    1 iman      iman             5 Nov 21 17:24 navajo -&gt; WinMe
 
1400
lrwxrwxrwx    1 iman      iman             5 Nov 23 01:16 pueblo -&gt; Win98
 
1401
drwx------    9 iman      iman          4096 Dec  7 03:47 Win98
 
1402
drwx------   11 iman      iman          4096 Dec  7 03:05 WinMe</pre></blockquote>
 
1403
 
 
1404
<p>Now when <tt class="literal">iman</tt> logs on to the domain from either
 
1405
Windows 98 system, the client from which she is logging on will get
 
1406
the profile stored in the <em class="filename">Win98</em> directory (that
 
1407
started out as her local profile on <tt class="literal">mixtec</tt>). This
 
1408
works likewise for the Windows Me clients.</p>
 
1409
 
 
1410
<p>To show a more complete example, here is a listing of a fully
 
1411
operational Windows 95/98/Me profiles directory:</p>
 
1412
 
 
1413
<a name="INDEX-133"/><blockquote><pre class="code">$ <tt class="userinput"><b>ls -l /home/jay/.win_profile</b></tt>
 
1414
total 12
 
1415
lrwxrwxrwx    1 jay      jay             9 Nov 16 22:14 aztec -&gt; /home/jay
 
1416
lrwxrwxrwx    1 jay      jay             5 Nov 16 01:40 hopi -&gt; Win95
 
1417
lrwxrwxrwx    1 jay      jay             5 Nov 16 01:40 huastec -&gt; WinMe
 
1418
lrwxrwxrwx    1 jay      jay             5 Nov 16 01:38 maya -&gt; Win98
 
1419
lrwxrwxrwx    1 jay      jay             5 Nov 16 01:40 mixtec -&gt; Win98
 
1420
lrwxrwxrwx    1 jay      jay             5 Nov 21 17:24 navajo -&gt; WinMe
 
1421
lrwxrwxrwx    1 jay      jay             5 Nov 23 01:16 pueblo -&gt; Win98
 
1422
lrwxrwxrwx    1 jay      jay             5 Nov 22 02:06 ute -&gt; Win95
 
1423
drwx------    6 jay      jay          4096 Dec  8 18:09 Win95
 
1424
drwx------    9 jay      jay          4096 Dec  7 03:47 Win98
 
1425
drwx------   11 jay      jay          4096 Dec  7 03:05 WinMe
 
1426
lrwxrwxrwx    1 jay      jay             5 Nov 21 22:48 yaqui -&gt; Win98
 
1427
lrwxrwxrwx    1 jay      jay             9 Nov 16 22:14 zuni -&gt; /home/jay</pre></blockquote>
 
1428
 
 
1429
<p>Again, the computer name of each client exists in this directory as a
 
1430
symbolic link that points to the directory containing the actual
 
1431
roaming profile. For example, <tt class="literal">maya</tt>, a client that
 
1432
runs Windows 98, has a symbolic link named <em class="filename">maya</em>
 
1433
to the <em class="filename">Win98</em> directory. A listing of
 
1434
<em class="filename">Win98</em> shows:</p>
 
1435
 
 
1436
<blockquote><pre class="code">$ <tt class="userinput"><b>ls -l Win98</b></tt>
 
1437
total 148
 
1438
drwxr-xr-x    3 jay      jay          4096 Nov 23 01:30 Application Data
 
1439
drwxr-xr-x    2 jay      jay          4096 Nov 23 01:30 Cookies
 
1440
drwxr-xr-x    3 jay      jay          4096 Dec  7 03:47 Desktop
 
1441
drwxr-xr-x    3 jay      jay          4096 Nov 23 01:30 History
 
1442
drwxr-xr-x    2 jay      jay          4096 Nov 23 01:30 NetHood
 
1443
drwxr-xr-x    2 jay      jay          4096 Dec  7 03:47 Recent
 
1444
drwxr-xr-x    3 jay      jay          4096 Nov 23 01:30 Start Menu
 
1445
-rw-r--r--    1 jay      jay        114720 Dec  7 03:46 USER.DAT</pre></blockquote>
 
1446
 
 
1447
<p>The contents of the <em class="filename">Win95</em> and
 
1448
<em class="filename">WinMe</em> directories appear similar and contain
 
1449
roaming profiles that work exactly as they should on their respective
 
1450
operating systems.</p>
 
1451
 
 
1452
<p>Notice in the previous listing that <em class="filename">aztec</em> and
 
1453
<em class="filename">zuni</em> are symbolic links to
 
1454
<em class="filename">/home/jay</em>. We've cautioned you
 
1455
never to configure a roaming profile directory to be a
 
1456
user's home directory, but this is to handle
 
1457
something different. The clients <tt class="literal">aztec</tt> and
 
1458
<tt class="literal">zuni</tt> are Windows XP systems, which handle
 
1459
<tt class="literal">logon</tt> <tt class="literal">home</tt> differently than
 
1460
other versions of Windows. We have set <tt class="literal">logon</tt>
 
1461
<tt class="literal">home</tt> <tt class="literal">=</tt>
 
1462
<tt class="literal">\\%L\%u\</tt>.<tt class="literal">win</tt>
 
1463
<tt class="literal">profile</tt>, and all versions of Windows except for
 
1464
Windows XP strip off everything after <tt class="literal">\\%L\%u</tt> and
 
1465
correctly locate the home directory&mdash;in this case,
 
1466
<em class="filename">/home/jay</em>. Windows XP uses the full UNC, so we
 
1467
simply add a symbolic link to redirect it to the correct directory to
 
1468
get the <em class="emphasis">net use H: /home</em> command to work as it
 
1469
should. The roaming profiles for Windows XP systems are not affected
 
1470
by this and are kept with the other roaming profiles in the Windows
 
1471
NT/2000/XP family, as shown in this listing:</p>
 
1472
 
 
1473
<blockquote><pre class="code">$ <tt class="userinput"><b>ls -l /home/samba-ntprof/jay</b></tt>
 
1474
total 16
 
1475
lrwxrwxrwx    1 jay      jay             5 Nov 20 03:45 apache -&gt; Win2K
 
1476
lrwxrwxrwx    1 jay      jay             5 Nov 13 12:35 aztec -&gt; WinXP
 
1477
lrwxrwxrwx    1 jay      jay             5 Nov 13 12:34 dine -&gt; WinNT
 
1478
lrwxrwxrwx    1 jay      jay             5 Nov 24 03:44 inca -&gt; Win2K
 
1479
lrwxrwxrwx    1 jay      jay             5 Nov 13 12:34 pima -&gt; Win2K
 
1480
drwx------   13 jay      jay          4096 Dec  3 15:24 qero
 
1481
drwx------   13 jay      jay          4096 Dec  1 20:31 Win2K
 
1482
drwx------   12 jay      jay          4096 Nov 30 17:04 WinNT
 
1483
drwx------   13 jay      jay          4096 Nov 20 01:23 WinXP
 
1484
lrwxrwxrwx    1 jay      jay             5 Nov 20 06:09 yavapai -&gt; WinXP
 
1485
lrwxrwxrwx    1 jay      jay             5 Nov 13 12:34 zapotec -&gt; Win2K
 
1486
lrwxrwxrwx    1 jay      jay             5 Nov 13 12:35 zuni -&gt; WinXP</pre></blockquote>
 
1487
 
 
1488
<p>As you can see, we are using a similar method for the Windows
 
1489
NT/2000/XP roaming profiles. In the listing,
 
1490
<em class="filename">qero</em> is not a symbolic link, but rather a
 
1491
directory that holds the roaming profile for <tt class="literal">qero</tt>,
 
1492
a Windows 2000 client that has recently been added. We had not
 
1493
created a symbolic link called <em class="filename">qero</em> before
 
1494
installing Windows 2000, so when jay logged off for the first time,
 
1495
Samba created a directory named <em class="filename">qero</em> and copied
 
1496
the roaming profile received from the client to the new directory.
 
1497
Because this is a separate directory from <em class="filename">Win2K</em>,
 
1498
which all other Windows 2000 clients are using to share their roaming
 
1499
profiles, the roaming profile for <tt class="literal">qero</tt> works like
 
1500
a local profile, except that it is stored on the primary domain
 
1501
controller.</p>
 
1502
 
 
1503
<p>This might seem like an odd thing to do, but it has some purpose.
 
1504
Sometimes you might wish to isolate a client in this manner,
 
1505
especially while the operating system is being installed and
 
1506
initially configured. Remember, if that client, with its default
 
1507
local profile, is logged off the domain, the local profile will be
 
1508
written to the roaming profile directory. If the client were using
 
1509
the shared roaming profile directory, the effect could be
 
1510
undesirable, to say the least. Using our method, the
 
1511
<em class="filename">qero</em> directory can later be renamed to make it
 
1512
into an archival backup, or it can just be deleted. Then a new
 
1513
symlink named <em class="filename">qero</em> can be created to point to
 
1514
the <em class="filename">Win2K</em> directory, and <tt class="literal">qero</tt>
 
1515
will share the roaming profile in <em class="filename">Win2K</em> with the
 
1516
other Windows 2000 clients.</p>
 
1517
 
 
1518
<p>An alternative method is simply to create the
 
1519
<a name="INDEX-134"/>symbolic
 
1520
links before the clients are added to the network. After you become
 
1521
more comfortable with the way roaming profiles work, you might find
 
1522
this method to be simpler and quicker.</p>
 
1523
 
 
1524
<p>Again, we urge you to be careful about letting different versions of
 
1525
Windows share the same roaming profile. The method of configuring
 
1526
roaming profiles we've shown you here allows you to
 
1527
test a configuration for a few clients at a time without affecting
 
1528
your whole network of clients. For example, we could install a small
 
1529
number of Windows 2000 and Windows XP systems in the domain for
 
1530
testing purposes and then create symlinks for them that point to a
 
1531
directory called <em class="filename">Win2KXP</em> to find out if sharing
 
1532
roaming profiles between our Windows 2000 and Windows XP systems
 
1533
meets our expectations. The <em class="filename">Win2KXP</em> directory
 
1534
could be created as an empty directory, in which case it would have a
 
1535
roaming profile written to it by the first of the clients to log off.
 
1536
Or, <em class="filename">Win2KXP</em> could simply be a renamed roaming
 
1537
profile directory that was created by one of the clients when it was
 
1538
added to the domain. <a name="INDEX-135"/><a name="INDEX-136"/></p>
 
1539
 
 
1540
 
 
1541
</div>
 
1542
 
 
1543
 
 
1544
<div class="sect2"><a name="samba2-CHP-4-SECT-5.3"/>
 
1545
 
 
1546
<h3 class="head2">Configuring Windows 95/98/Me for Roaming Profiles</h3>
 
1547
 
 
1548
<p><a name="INDEX-137"/><a name="INDEX-138"/>For roaming profiles to work on
 
1549
Windows 95/98/Me clients, all you need to do is change one setting to
 
1550
allow each user to have a separate local profile. This has the side
 
1551
effect of enabling roaming profiles as well.</p>
 
1552
 
 
1553
<p>Open the Control Panel and double-click the Passwords icon to open
 
1554
the Passwords Properties dialog box. Click the User Profiles tab, and
 
1555
the dialog box will appear as shown in <a href="ch04.html#samba2-CHP-4-FIG-12">Figure 4-12</a>.</p>
 
1556
 
 
1557
<div class="figure"><a name="samba2-CHP-4-FIG-12"/><img src="figs/sam2_0412.gif"/></div><h4 class="head4">Figure 4-12. The Windows 98 Passwords Properties dialog</h4>
 
1558
 
 
1559
<p>Click the button labeled &quot;Users can customize their
 
1560
preferences and desktop settings.&quot; In the User
 
1561
profile settings box, you can check the options you prefer. When
 
1562
done, click the OK button and reboot as requested. During this first
 
1563
reboot, Windows will copy the local profile data to
 
1564
<em class="filename">C:\windows\profiles</em> but will not attempt to copy
 
1565
the roaming profile from the server. The next time the system is shut
 
1566
down, the local profile will be copied to the server, and when
 
1567
Windows reboots, it will copy the roaming profile from the server.</p>
 
1568
 
 
1569
 
 
1570
</div>
 
1571
 
 
1572
 
 
1573
<div class="sect2"><a name="samba2-CHP-4-SECT-5.4"/>
 
1574
 
 
1575
<h3 class="head2">Configuring Windows NT/2000/XP for Roaming Profiles</h3>
 
1576
 
 
1577
<p><a name="INDEX-139"/><a name="INDEX-140"/><a name="INDEX-141"/><a name="INDEX-142"/>Roaming profiles are enabled by
 
1578
default on Windows NT/2000/XP. In case you would like to check or
 
1579
modify your settings, follow these directions.</p>
 
1580
 
 
1581
<p>Make sure you are logged in to the local system as Administrator or
 
1582
another user in the Administrators group. Open the Control Panel and
 
1583
double-click the System icon. On Windows NT/2000, click the User
 
1584
Profiles tab, or on Windows XP, click the Advanced tab and then the
 
1585
Settings button in the User Profiles box. You should see the dialog
 
1586
box in <a href="ch04.html#samba2-CHP-4-FIG-13">Figure 4-13</a>.</p>
 
1587
 
 
1588
<div class="figure"><a name="samba2-CHP-4-FIG-13"/><img src="figs/sam2_0413.gif"/></div><h4 class="head4">Figure 4-13. The Windows 2000 System Properties, User Profiles tab</h4>
 
1589
 
 
1590
<p>Notice in the figure that there are two entries for the username
 
1591
<tt class="literal">jay</tt>. The entry ZAPOTEC\jay refers to the account
 
1592
on the local system, and METRAN\jay refers to the domain account.
 
1593
Recall that when a user logs on, a drop-down menu in the dialog box
 
1594
allows him to log on to a domain or log in to the local system. When
 
1595
<tt class="literal">jay</tt> logs in to the local machine, only the local
 
1596
profile is used. When logged on to the domain, the configuration
 
1597
shown will use the roaming profile. To switch a
 
1598
user's profile type for a domain logon account,
 
1599
click the account name to select it, then click the Change Type...
 
1600
button near the bottom of the dialog box. The Change Profile Type
 
1601
dialog box will appear. Click the radio button for either roaming or
 
1602
local profile, and then click the OK buttons for each dialog box.</p>
 
1603
 
 
1604
 
 
1605
</div>
 
1606
 
 
1607
 
 
1608
<div class="sect2"><a name="samba2-CHP-4-SECT-5.5"/>
 
1609
 
 
1610
<h3 class="head2">Mandatory Profiles</h3>
 
1611
 
 
1612
<p><a name="INDEX-143"/>With a simple
 
1613
modification, a <a name="INDEX-144"/>roaming profile can be made into a
 
1614
<a name="INDEX-145"/>mandatory
 
1615
profile, which has the quality of being unmodifiable by its owner.
 
1616
Mandatory profiles are used in some computing environments to
 
1617
simplify administration. The theory is that if users cannot modify
 
1618
their profiles, less can go wrong, and it is also possible to use the
 
1619
same standardized profile for all users.</p>
 
1620
 
 
1621
<p>In practice, some issues come up. Because the users can still modify
 
1622
the configuration settings in their local profile during their logon
 
1623
session, confusion can result the next time they log on to the domain
 
1624
and discover their changes have been
 
1625
&quot;lost.&quot; If the user of a client
 
1626
reinstalls an application in a different place, the shortcuts to the
 
1627
program on the desktop, in the Start menu, or in a Quick Launch bar
 
1628
cannot be permanently deleted. They will reappear every time the user
 
1629
logs back on to the domain. Essentially, a mandatory profile is a
 
1630
roaming profile that always fails to update to the server upon
 
1631
logging off!</p>
 
1632
 
 
1633
<p>Another complication is that different versions of Windows behave
 
1634
differently with mandatory profiles. If a user who has a mandatory
 
1635
profile creates a new file on her desktop, the file might be missing
 
1636
the next time the user logs off and on again or reboots. Some Windows
 
1637
versions preserve desktop files in the local profile (even if the
 
1638
file does not exist in the mandatory profile), whereas others do not.</p>
 
1639
 
 
1640
<p>To change a <a name="INDEX-146"/><a name="INDEX-147"/>roaming profile to a mandatory
 
1641
profile, all you have to do is rename the
 
1642
<em class="filename">.dat</em><a name="INDEX-148"/><a name="INDEX-149"/> file in the roaming profile directory
 
1643
on the server to have a <em class="filename">.man</em> extension instead.
 
1644
For a Windows 95/98/Me roaming profile, you would rename
 
1645
<em class="filename">USER.DAT</em> to <em class="filename">USER.MAN</em>, and
 
1646
for a Windows NT/2000/XP roaming profile, you would rename
 
1647
<em class="filename">NTUSER.DAT</em> to <em class="filename">NTUSER.MAN</em>.
 
1648
Also, you might want to make the roaming-profile directory and its
 
1649
contents read-only, to make sure that a user can't
 
1650
change it by logging into his Unix user account on the Samba host
 
1651
system.</p>
 
1652
 
 
1653
<p>If you want to have all your users share a mandatory profile, you can
 
1654
change the definitions of <tt class="literal">logon</tt>
 
1655
<tt class="literal">path</tt> and <tt class="literal">logon</tt>
 
1656
<tt class="literal">home</tt> in your <em class="filename">smb.conf</em> file to
 
1657
point to a shared mandatory profile on the server and adjust your
 
1658
directory structure and symbolic links accordingly. For example,
 
1659
<tt class="literal">logon</tt> <tt class="literal">path</tt> and
 
1660
<tt class="literal">logon</tt> <tt class="literal">home</tt> might be defined
 
1661
like this:</p>
 
1662
 
 
1663
<blockquote><pre class="code">logon path = \\%L\profiles\%m
 
1664
logon home = \\%L\%u\.win_profile\%m</pre></blockquote>
 
1665
 
 
1666
<p>Notice that we've removed the <tt class="literal">%u</tt>
 
1667
part of the path for <tt class="literal">logon</tt>
 
1668
<tt class="literal">path</tt>, and we would also change the directory
 
1669
structure on the server to do away with the separation of the
 
1670
profiles by username and have just one profile for each Windows
 
1671
NT/2000/XP version.</p>
 
1672
 
 
1673
<p>We cannot use the same treatment for <tt class="literal">logon</tt>
 
1674
<tt class="literal">home</tt> because it is also used to specify the home
 
1675
directory. In this case, we would change the symbolic links in each
 
1676
user's <em class="filename">.win_profile</em> directory
 
1677
to point to a common mandatory profile directory containing the
 
1678
mandatory profiles for each of Windows 95/98/Me. Again, check the
 
1679
ownership and permissions on the files in the directory, and modify
 
1680
them if necessary to make sure a user can't modify
 
1681
any files by logging into her Unix account on the Samba host system.</p>
 
1682
 
 
1683
 
 
1684
</div>
 
1685
 
 
1686
 
 
1687
<div class="sect2"><a name="samba2-CHP-4-SECT-5.6"/>
 
1688
 
 
1689
<h3 class="head2">Logon Script and Roaming-Profile Options</h3>
 
1690
 
 
1691
<p><a href="ch04.html#samba2-CHP-4-TABLE-1">Table 4-1</a> summarizes the options commonly used in
 
1692
association with Windows NT domain <a name="INDEX-150"/><a name="INDEX-151"/>logon
 
1693
scripts and roaming profiles.</p>
 
1694
 
 
1695
<a name="samba2-CHP-4-TABLE-1"/><h4 class="head4">Table 4-1. Logon-script options</h4><table border="1">
 
1696
 
 
1697
 
 
1698
 
 
1699
 
 
1700
 
 
1701
 
 
1702
<tr>
 
1703
<th>
 
1704
<p>Option</p>
 
1705
</th>
 
1706
<th>
 
1707
<p>Parameters</p>
 
1708
</th>
 
1709
<th>
 
1710
<p>Function</p>
 
1711
</th>
 
1712
<th>
 
1713
<p>Default</p>
 
1714
</th>
 
1715
<th>
 
1716
<p>Scope</p>
 
1717
</th>
 
1718
</tr>
 
1719
 
 
1720
 
 
1721
<tr>
 
1722
<td>
 
1723
<p><tt class="literal">logon</tt> <tt class="literal">script</tt></p>
 
1724
</td>
 
1725
<td>
 
1726
<p>string (MS-DOS path)</p>
 
1727
</td>
 
1728
<td>
 
1729
<p>Name of logon script batch file</p>
 
1730
</td>
 
1731
<td>
 
1732
<p>None</p>
 
1733
</td>
 
1734
<td>
 
1735
<p>Global</p>
 
1736
</td>
 
1737
</tr>
 
1738
<tr>
 
1739
<td>
 
1740
<p><tt class="literal">logon</tt> <tt class="literal">path</tt></p>
 
1741
</td>
 
1742
<td>
 
1743
<p>string (UNC server and share name)</p>
 
1744
</td>
 
1745
<td>
 
1746
<p>Location of roaming profile</p>
 
1747
</td>
 
1748
<td>
 
1749
<p><tt class="literal">\\%N\%U\profile</tt></p>
 
1750
</td>
 
1751
<td>
 
1752
<p>Global</p>
 
1753
</td>
 
1754
</tr>
 
1755
<tr>
 
1756
<td>
 
1757
<p><tt class="literal">logon</tt> <tt class="literal">drive</tt></p>
 
1758
</td>
 
1759
<td>
 
1760
<p>string (drive letter)</p>
 
1761
</td>
 
1762
<td>
 
1763
<p>Specifies the logon drive for a home directory</p>
 
1764
</td>
 
1765
<td>
 
1766
<p><tt class="literal">Z</tt>:</p>
 
1767
</td>
 
1768
<td>
 
1769
<p>Global</p>
 
1770
</td>
 
1771
</tr>
 
1772
<tr>
 
1773
<td>
 
1774
<p><tt class="literal">logon</tt> <tt class="literal">home</tt></p>
 
1775
</td>
 
1776
<td>
 
1777
<p>string (UNC server and share name)</p>
 
1778
</td>
 
1779
<td>
 
1780
<p>Specifies a location for home directories for clients logging on to
 
1781
the domain</p>
 
1782
</td>
 
1783
<td>
 
1784
<p><tt class="literal">\\%N\%U</tt></p>
 
1785
</td>
 
1786
<td>
 
1787
<p>Global</p>
 
1788
</td>
 
1789
</tr>
 
1790
 
 
1791
</table>
 
1792
 
 
1793
 
 
1794
<div class="sect3"><a name="samba2-CHP-4-SECT-5.6.1"/>
 
1795
 
 
1796
<a name="INDEX-152"/><h3 class="head3">logon script</h3>
 
1797
 
 
1798
<p>This option specifies a Windows batch file that will be executed on
 
1799
the client after a user has logged on to the domain. Each logon
 
1800
script should be stored in the root directory of the
 
1801
<tt class="literal">[netlogon]</tt> share or a subdirectory. This option
 
1802
frequently uses the <tt class="literal">%U</tt> or <tt class="literal">%m</tt>
 
1803
variables (user or NetBIOS name) to point to an individual script.
 
1804
For example:</p>
 
1805
 
 
1806
<blockquote><pre class="code">[global]
 
1807
    logon script = %U.bat</pre></blockquote>
 
1808
 
 
1809
<p>will execute a script based on the username. If the user who is
 
1810
connecting is <tt class="literal">fred</tt> and the path of the
 
1811
<tt class="literal">[netlogon]</tt> share maps to the directory
 
1812
<em class="filename">/export/samba/netlogon</em>, the script should be
 
1813
<em class="filename">/export/samba/netlogon/fred.bat</em>. Because these
 
1814
scripts are downloaded to the client and executed on the Windows
 
1815
side, they must have MS-DOS-style newline characters rather than Unix
 
1816
newlines.</p>
 
1817
 
 
1818
 
 
1819
</div>
 
1820
 
 
1821
 
 
1822
 
 
1823
<div class="sect3"><a name="samba2-CHP-4-SECT-5.6.2"/>
 
1824
 
 
1825
<a name="INDEX-153"/><h3 class="head3">logon path</h3>
 
1826
 
 
1827
<p>This option specifies the location where roaming profiles are kept.
 
1828
When the user logs on, a roaming profile will be downloaded from the
 
1829
server to the client and used as the local profile during the logon
 
1830
session. When the user logs off, the contents of the local profile
 
1831
will be uploaded back to the server until the next time the user
 
1832
connects.</p>
 
1833
 
 
1834
<p>It is often more secure to create a separate share exclusively for
 
1835
storing user profiles:</p>
 
1836
 
 
1837
<blockquote><pre class="code">[global]
 
1838
    logon path = \\hydra\profile\%U</pre></blockquote>
 
1839
 
 
1840
<p>For more information on this option, see <a href="ch04.html#samba2-CHP-4-SECT-5">Section 4.5</a> earlier in this chapter.</p>
 
1841
 
 
1842
 
 
1843
</div>
 
1844
 
 
1845
 
 
1846
 
 
1847
<div class="sect3"><a name="samba2-CHP-4-SECT-5.6.3"/>
 
1848
 
 
1849
<a name="INDEX-154"/><h3 class="head3">logon drive</h3>
 
1850
 
 
1851
<p>This option specifies the drive letter on a Windows NT/2000/XP client
 
1852
to which the home directory specified with the
 
1853
<tt class="literal">logon</tt> <tt class="literal">home</tt> option will be
 
1854
mapped. Note that this option will work with Windows NT/2000/XP
 
1855
clients only. For example:</p>
 
1856
 
 
1857
<blockquote><pre class="code">[global]
 
1858
    logon drive = I:</pre></blockquote>
 
1859
 
 
1860
<p>You should always use drive letters that will not conflict with fixed
 
1861
drives on the client machine. The default is Z:, which is a good
 
1862
choice because it is as far away from A:, C:, and D: as possible.</p>
 
1863
 
 
1864
 
 
1865
</div>
 
1866
 
 
1867
 
 
1868
 
 
1869
<div class="sect3"><a name="samba2-CHP-4-SECT-5.6.4"/>
 
1870
 
 
1871
<a name="INDEX-155"/><h3 class="head3">logon home</h3>
 
1872
 
 
1873
<p>This option specifies the location of a user's home
 
1874
directory for use by the MS-DOS <em class="emphasis">net</em> commands.
 
1875
For example, to specify a home directory as a share on a Samba
 
1876
server, use the following:</p>
 
1877
 
 
1878
<blockquote><pre class="code">[global]
 
1879
    logon home = \\hydra\%U</pre></blockquote>
 
1880
 
 
1881
<p>Note that this works nicely with the <tt class="literal">[homes]</tt>
 
1882
service, although you can specify any directory you wish. Home
 
1883
directories can be mapped with a logon script using the following
 
1884
command:</p>
 
1885
 
 
1886
<a name="INDEX-156"/><blockquote><pre class="code">C:\&gt;<tt class="userinput"><b>net use i: /home  </b></tt></pre></blockquote>
 
1887
 
 
1888
 
 
1889
</div>
 
1890
 
 
1891
 
 
1892
</div>
 
1893
 
 
1894
 
 
1895
</div>
 
1896
 
 
1897
 
 
1898
 
 
1899
<div class="sect1"><a name="samba2-CHP-4-SECT-6"/>
 
1900
 
 
1901
<h2 class="head1">System Policies</h2>
 
1902
 
 
1903
<p>A <a name="INDEX-157"/>system policy can be used in a Windows
 
1904
NT domain as a remote administration tool for implementing a similar
 
1905
computing environment on all clients and limiting the abilities of
 
1906
users to change configuration settings on their systems or allowing
 
1907
them to run only a limited set of programs. One application of system
 
1908
policies is to use them along with mandatory profiles to implement a
 
1909
collection of computers for public use, such as in a library, school,
 
1910
or Internet cafe.</p>
 
1911
 
 
1912
<p>A system policy is a collection of registry settings that is stored
 
1913
in a file on the PDC and is automatically downloaded to the clients
 
1914
when users log on to the domain. The file containing the settings is
 
1915
created on a Windows system using the <a name="INDEX-158"/>System Policy Editor. Because the format
 
1916
of the registry is different between Windows 95/98/Me and Windows
 
1917
NT/2000/XP, it is necessary to make sure that the file that is
 
1918
created is in the proper format. This is a very simple matter because
 
1919
when the System Policy Editor runs on Windows 95/98/Me, it will
 
1920
create a file in the format for Windows 95/98/Me, and if it is run on
 
1921
Windows NT/2000/XP, it will use the format needed by those versions.
 
1922
After the policy file is created with the System Policy Editor, it is
 
1923
stored on the primary domain controller and is automatically
 
1924
downloaded by the clients during the logon process, and the policies
 
1925
are applied to the client system.</p>
 
1926
 
 
1927
<p>On Windows NT 4.0 Server, you can run the System Policy Editor by
 
1928
logging in to the system as Administrator or another user in the
 
1929
Administrators group, opening the Start menu, and selecting Programs,
 
1930
then Administrative Tools, then System Policy Editor. On Windows 2000
 
1931
Advanced Server, open the Start menu and click Run . . . . In the
 
1932
dialog box that comes up, type in
 
1933
<tt class="literal">C:\winnt\poledit.exe</tt>, and click the OK button.</p>
 
1934
 
 
1935
<p>If you are using a Windows version other than NT Server or Windows
 
1936
2000 Advanced Server, you must install the System Policy Editor, and
 
1937
getting a copy of it can be a little tricky. If you are running
 
1938
Windows NT 4.0 Workstation or Windows 2000 Professional and have a
 
1939
Windows NT 4.0 Server installation CD-ROM, you can run the file
 
1940
<em class="filename">\Clients\Svrtools\Winnt\Setup.bat</em> from that CD
 
1941
to install the Client-based Network Administration Tools, which
 
1942
includes <em class="emphasis">poledit.exe</em>. Then open the Start menu,
 
1943
click Run..., type <tt class="literal">C:\winnt\system32\poledit.exe</tt>
 
1944
into the text area, and click the OK button.</p>
 
1945
 
 
1946
<p>If you are using Windows 95/98, insert a Windows 95 or Windows 98
 
1947
distribution CD-ROM<a name="FNPTR-4"/><a href="#FOOTNOTE-4">[4]</a> into your CD-ROM drive,
 
1948
then open the Control Panel and double-click the Add/Remove Programs
 
1949
button.</p>
 
1950
 
 
1951
<p>Click the Windows Setup tab, and then click the Have Disk...
 
1952
button. In the new dialog box that appears, click the Browse...
 
1953
button, then select the CD-ROM drive from the Drives drop-down menu.
 
1954
Then:</p>
 
1955
 
 
1956
<ul><li>
 
1957
<p>If you are using a Windows 95 installation CD-ROM, double-click the
 
1958
admin, then apptools, then poledit folder icons.</p>
 
1959
</li><li>
 
1960
<p>If you are using a Windows 98 installation CD-ROM, double-click the
 
1961
tools, then reskit, then netadmin, then poledit folder icons.</p>
 
1962
</li></ul>
 
1963
<p>You should see &quot;<a name="INDEX-159"/>grouppol.inf&quot; appear in
 
1964
the File name: text area on the left of the dialog box. Click the OK
 
1965
buttons in two dialog boxes, and you will be presented with a dialog
 
1966
box in which you should select both the Group Policies and System
 
1967
Policy Editor checkboxes. Then click the Install button. Close the
 
1968
remaining dialog box, and you can now run the System Policy Editor by
 
1969
opening the Start menu and selecting Programs, then Accessories, then
 
1970
System Tools, then System Policy Editor. Or click the Run... item in
 
1971
the Start Menu, and enter <tt class="literal">C:\Windows\Poledit</tt>.</p>
 
1972
 
 
1973
<p>When the System Policy Editor starts up, select New Policy from the
 
1974
File menu, and you will see a window similar to that in <a href="ch04.html#samba2-CHP-4-FIG-14">Figure 4-14</a>.</p>
 
1975
 
 
1976
<div class="figure"><a name="samba2-CHP-4-FIG-14"/><img src="figs/sam2_0414.gif"/></div><h4 class="head4">Figure 4-14. The System Policy Editor window</h4>
 
1977
 
 
1978
<p>The next step is to make a selection from the File menu to add
 
1979
policies for users, groups, and computers. For each item you add, you
 
1980
will be asked for the username, or name of the group or computer, and
 
1981
a new icon will appear in the window. Double-clicking one of the
 
1982
icons will bring up the Properties dialog box, such as the one shown
 
1983
in <a href="ch04.html#samba2-CHP-4-FIG-15">Figure 4-15</a>.</p>
 
1984
 
 
1985
<div class="figure"><a name="samba2-CHP-4-FIG-15"/><img src="figs/sam2_0415.gif"/></div><h4 class="head4">Figure 4-15. The Properties dialog of System Policy Editor</h4>
 
1986
 
 
1987
<p>The upper window in the dialog shows the registry settings that can
 
1988
be modified as part of the system policy, and the lower window shows
 
1989
descriptive information or more settings pertaining to the one
 
1990
selected in the upper window. Notice in the figure that there are
 
1991
three checkboxes and that they are all in different states:</p>
 
1992
 
 
1993
<dl>
 
1994
<dt><b>Checked</b></dt>
 
1995
<dd>
 
1996
<p>Meaning that the registry setting is enabled in the policy</p>
 
1997
</dd>
 
1998
 
 
1999
 
 
2000
 
 
2001
<dt><b>White (unchecked)</b></dt>
 
2002
<dd>
 
2003
<p>Which clears the registry setting</p>
 
2004
</dd>
 
2005
 
 
2006
 
 
2007
 
 
2008
<dt><b>Gray</b></dt>
 
2009
<dd>
 
2010
<p>Which causes the registry setting on the client to be unmodified</p>
 
2011
</dd>
 
2012
 
 
2013
</dl>
 
2014
 
 
2015
<p>Basically, if all the items are left gray (the default), the system
 
2016
policy will have no effect. The registry of the logged-on client will
 
2017
not be modified. However, if any of the items are either checked or
 
2018
unchecked (white), the registry on the client will be modified to
 
2019
enable the setting or clear it.</p>
 
2020
<a name="samba2-CHP-4-NOTE-117"/><blockquote class="note"><h4 class="objtitle">WARNING</h4>
 
2021
<p>In this section, we are giving you enough information on using the
 
2022
System Policy Editor to get you started&mdash;or, should we say,
 
2023
enough rope with which to hang yourself. Remember that a system
 
2024
policy, once put into action, will be modifying the registries of all
 
2025
clients who log on to the domain. The usual warnings about editing a
 
2026
Windows registry apply here with even greater importance. Consider
 
2027
how difficult (or even impossible) it will be for you to restore the
 
2028
registries on all those clients if anything happens to go wrong.
 
2029
<em class="emphasis">As with roaming profiles, casual or careless implementation
 
2030
of system policies can easily lead to domain-wide
 
2031
disaster</em>.</p>
 
2032
 
 
2033
<p>Creating a good system policy file is a complex topic, which we
 
2034
cannot cover in detail here. It would take a whole book, and yes,
 
2035
there happens to be an O'Reilly book on the subject,
 
2036
<em class="citetitle">Windows System Policy Editor</em>. Another
 
2037
definitive source of documentation on Windows NT system policies and
 
2038
the System Policy Editor is the Microsoft white paper
 
2039
<em class="citetitle">Implementing Policies and Profiles for Windows NT
 
2040
4.0</em>, which can be found at <a href="http://www.microsoft.com/ntserver/techresources/management/prof_policies.asp">http://www.microsoft.com/ntserver/techresources/management/prof_policies.asp</a>.</p>
 
2041
</blockquote>
 
2042
 
 
2043
<p>Once you have created a policy, click the OK button and use the Save
 
2044
As... item from the File menu to save it. Use the filename
 
2045
<em class="filename">config.pol</em><a name="INDEX-160"/> for a Windows 95/98 system policy and
 
2046
<em class="filename">ntconfig.pol</em><a name="INDEX-161"/> for a policy that will be used on Windows
 
2047
NT/2000/XP clients. Finally, copy the <em class="filename">.pol</em> file
 
2048
to the directory used for the <tt class="literal">[netlogon]</tt> share on
 
2049
the Samba PDC. The <em class="filename">config.pol</em> and
 
2050
<em class="filename">ntconfig.pol</em> files must go in this
 
2051
directory&mdash;unlike roaming profiles and logon scripts, there is
 
2052
no way to specify the location of the system policy files in
 
2053
<em class="filename">smb.conf</em>. If you want to have different system
 
2054
policies for different users or computers, you must perform that part
 
2055
of the configuration within the System Policy Editor.</p>
 
2056
 
 
2057
<a name="samba2-CHP-4-NOTE-118"/><blockquote class="note"><h4 class="objtitle">TIP</h4>
 
2058
<p>If you have, or will have, any <a name="INDEX-162"/><a name="INDEX-163"/>Windows Me clients on your network,
 
2059
be careful. Microsoft has stated that Windows Me does not support
 
2060
system policies. The odd thing about this is that it will download
 
2061
the policy from a <em class="filename">config.pol</em> file on the PDC,
 
2062
but there is no guarantee that the results will be what was intended.
 
2063
Check the effect of your system policy carefully on your Windows Me
 
2064
clients to make sure it is working how you want.</p>
 
2065
</blockquote>
 
2066
 
 
2067
<p>When a user logs on to the domain, her Windows client will download
 
2068
the <em class="filename">.pol</em> file from the server, and the settings
 
2069
in it (that is, the items either checked or cleared in the System
 
2070
Policy Editor) will override the client's settings.</p>
 
2071
 
 
2072
<p>If things &quot;should work&quot; but
 
2073
don't, try shutting down the Windows client and
 
2074
restarting, rather than just logging off and on again. Windows
 
2075
sometimes will hold the <tt class="literal">[netlogon]</tt> share open
 
2076
across logon sessions, and this can prevent the client from getting
 
2077
the updated <em class="filename">.pol</em> file from the server.
 
2078
<a name="INDEX-164"/>
 
2079
<a name="INDEX-165"/></p>
 
2080
 
 
2081
 
 
2082
</div>
 
2083
 
 
2084
 
 
2085
 
 
2086
<div class="sect1"><a name="samba2-CHP-4-SECT-7"/>
 
2087
 
 
2088
<h2 class="head1">Samba as a Domain Member Server</h2>
 
2089
 
 
2090
<p><a name="INDEX-166"/>Up to now,
 
2091
we've focused on configuring and using Samba as the
 
2092
primary domain controller. If you already have a domain controller on
 
2093
your network, either a Windows NT/2000 Server system or a Samba PDC,
 
2094
you can add a Samba server to the domain as a domain member server.
 
2095
This involves setting up the Samba server to have a computer account
 
2096
with the primary domain controller, in a similar way that Windows
 
2097
NT/2000/XP clients can have computer accounts on a Samba PDC. When a
 
2098
client accesses shares on the Samba domain member server, Samba will
 
2099
pass off the authentication to the domain controller rather than
 
2100
performing the task on the local system. If the PDC is a Windows
 
2101
server, any number of Windows BDCs might exist that can handle the
 
2102
authentication instead of the PDC.</p>
 
2103
 
 
2104
<p>The first step is to add the Samba server to the domain by creating a
 
2105
computer account for it on the primary domain controller. You can do
 
2106
this using the <em class="emphasis">smbpasswd</em> command, as follows:</p>
 
2107
 
 
2108
<blockquote><pre class="code"># <tt class="userinput"><b>smbpasswd -j <em class="replaceable">DOMAIN</em> -r <em class="replaceable">PDCNAME</em> -U<em class="replaceable">admin_acct</em>%<em class="replaceable">password</em></b></tt></pre></blockquote>
 
2109
 
 
2110
<p>In this command, <em class="replaceable">DOMAIN</em> is replaced by the
 
2111
name of the domain the Samba host is joining,
 
2112
<em class="replaceable">PDCNAME</em> is replaced by the computer name
 
2113
of the primary domain controller,
 
2114
<em class="replaceable">admin_acct</em> is replaced by the username of
 
2115
an administrative account on the domain controller (either
 
2116
Administrator&mdash;or another user in the Administrators
 
2117
group&mdash;on Windows NT/2000, and root on Samba), and
 
2118
<em class="replaceable">password</em> is replaced with the password of
 
2119
that user. To give a more concrete example, on our domain that has a
 
2120
Windows NT 4 Server primary domain controller or a Windows 2000
 
2121
Active Directory domain controller named <tt class="literal">SINAGUA</tt>,
 
2122
the command would be:</p>
 
2123
 
 
2124
<blockquote><pre class="code"># <tt class="userinput"><b>smbpasswd -j METRAN -r SINAGUA -UAdministrator%hup8ter</b></tt></pre></blockquote>
 
2125
 
 
2126
<p>and if the PDC is a Samba system, we would use the command:</p>
 
2127
 
 
2128
<blockquote><pre class="code"># <tt class="userinput"><b>smbpasswd -j METRAN -r toltec -Uroot%jwun83jb</b></tt></pre></blockquote>
 
2129
 
 
2130
<p>where <tt class="literal">jwun83jb</tt> is the password for the root user
 
2131
that is contained in the<em class="filename"> smbpasswd</em> file, as we
 
2132
explained earlier in this chapter.</p>
 
2133
 
 
2134
<p>If you did it right, <em class="emphasis">smbpasswd</em> will respond with
 
2135
a message saying the domain has been joined. The security
 
2136
identifier<a name="FNPTR-5"/><a href="#FOOTNOTE-5">[5]</a> returned to Samba from the PDC is kept in
 
2137
the file <em class="filename">/usr/local/samba/private/secrets.tdb</em>.
 
2138
The information in
 
2139
<em class="filename">secrets.tdb</em><a name="INDEX-167"/> is security-sensitive, so make sure to
 
2140
protect <em class="filename">secrets.tdb</em> in the same way you would
 
2141
treat Samba's password file.</p>
 
2142
 
 
2143
<p>The next step is to modify the
 
2144
<em class="filename">smb.conf</em><a name="INDEX-168"/> file. Assuming you are starting with a
 
2145
valid <em class="filename">smb.conf</em> file that correctly configures
 
2146
Samba to function in a workgroup, such as the one we used in <a href="ch02.html">Chapter 2</a>, it is simply a matter of adding the following
 
2147
three lines to the <tt class="literal">[global]</tt> section:</p>
 
2148
 
 
2149
<blockquote><pre class="code">workgroup = METRAN
 
2150
security = domain
 
2151
password server = *</pre></blockquote>
 
2152
 
 
2153
<p>The first line establishes the name of the domain (even though it
 
2154
says &quot;workgroup&quot;). Instead of
 
2155
METRAN, use the name of the domain you are joining. Setting security
 
2156
to &quot;domain&quot; causes Samba to hand
 
2157
off authentication to a domain controller, and the
 
2158
<tt class="literal">password</tt> <tt class="literal">server</tt>
 
2159
<tt class="literal">=</tt> <tt class="literal">*</tt> line tells Samba to find
 
2160
the domain controller for authentication (which could be the primary
 
2161
domain controller or a backup domain controller) by querying the WINS
 
2162
server or using broadcast packets if a WINS server is not available.</p>
 
2163
 
 
2164
<p>At this point, it would be prudent to run
 
2165
<em class="emphasis">testparm</em> to check that your
 
2166
<em class="filename">smb.conf</em> is free of errors. Then restart the
 
2167
Samba daemons.</p>
 
2168
 
 
2169
<p>If the PDC is a Windows NT system, you can use Server Manager to
 
2170
check that the Samba server has been added successfully. Open the
 
2171
Start menu, then select Programs, then Administrative Tools (Common),
 
2172
and then Server Manager. Server Manager starts up with a window that
 
2173
looks like <a href="ch04.html#samba2-CHP-4-FIG-16">Figure 4-16</a>.</p>
 
2174
 
 
2175
<div class="figure"><a name="samba2-CHP-4-FIG-16"/><img src="figs/sam2_0416.gif"/></div><h4 class="head4">Figure 4-16. The Windows NT Server Manager window</h4>
 
2176
 
 
2177
<p>As you can see, we've added both
 
2178
<tt class="literal">toltec</tt> and <tt class="literal">mixtec</tt> to a domain
 
2179
for which the Windows NT 4.0 Server system,
 
2180
<tt class="literal">sinagua</tt>, is the primary domain controller.</p>
 
2181
 
 
2182
<p>You can check your setup on Windows 2000 Advanced Server by opening
 
2183
the Start menu and selecting Programs, then Administrative Tools,
 
2184
then Active Directory Users and Computers. The window that opens up
 
2185
will look like <a href="ch04.html#samba2-CHP-4-FIG-17">Figure 4-17</a>.</p>
 
2186
 
 
2187
<div class="figure"><a name="samba2-CHP-4-FIG-17"/><img src="figs/sam2_0417.gif"/></div><h4 class="head4">Figure 4-17. The Windows 2000 Active Directory Users and Computers window</h4>
 
2188
 
 
2189
<p>Click Computers in the left side of the window with the Tree tab. You
 
2190
should see your Samba system listed in the right pane of the window.
 
2191
<a name="INDEX-169"/></p>
 
2192
 
 
2193
 
 
2194
</div>
 
2195
 
 
2196
 
 
2197
 
 
2198
<div class="sect1"><a name="samba2-CHP-4-SECT-8"/>
 
2199
 
 
2200
<h2 class="head1">Windows NT Domain Options</h2>
 
2201
 
 
2202
<p><a href="ch04.html#samba2-CHP-4-TABLE-2">Table 4-2</a> shows the options that are commonly used
 
2203
in association with Samba on a Windows NT domain.</p>
 
2204
 
 
2205
<a name="samba2-CHP-4-TABLE-2"/><h4 class="head4">Table 4-2. Windows NT domain options</h4><table border="1">
 
2206
 
 
2207
 
 
2208
 
 
2209
 
 
2210
 
 
2211
 
 
2212
<tr>
 
2213
<th>
 
2214
<p>Option</p>
 
2215
</th>
 
2216
<th>
 
2217
<p>Parameters</p>
 
2218
</th>
 
2219
<th>
 
2220
<p>Function</p>
 
2221
</th>
 
2222
<th>
 
2223
<p>Default</p>
 
2224
</th>
 
2225
<th>
 
2226
<p>Scope</p>
 
2227
</th>
 
2228
</tr>
 
2229
 
 
2230
 
 
2231
<tr>
 
2232
<td>
 
2233
<p><tt class="literal">domain logons</tt></p>
 
2234
</td>
 
2235
<td>
 
2236
<p>boolean</p>
 
2237
</td>
 
2238
<td>
 
2239
<p>Indicates whether Windows domain logons are to be used</p>
 
2240
</td>
 
2241
<td>
 
2242
<p><tt class="literal">No</tt></p>
 
2243
</td>
 
2244
<td>
 
2245
<p>Global</p>
 
2246
</td>
 
2247
</tr>
 
2248
<tr>
 
2249
<td>
 
2250
<p><tt class="literal">domain master</tt></p>
 
2251
</td>
 
2252
<td>
 
2253
<p>boolean</p>
 
2254
</td>
 
2255
<td>
 
2256
<p>For telling Samba to take the role of domain master browser</p>
 
2257
</td>
 
2258
<td>
 
2259
<p>Auto</p>
 
2260
</td>
 
2261
<td>
 
2262
<p>Global</p>
 
2263
</td>
 
2264
</tr>
 
2265
<tr>
 
2266
<td>
 
2267
<p><tt class="literal">add user script</tt></p>
 
2268
</td>
 
2269
<td>
 
2270
<p>string (command)</p>
 
2271
</td>
 
2272
<td>
 
2273
<p>Script to run to add a user or computer account</p>
 
2274
</td>
 
2275
<td>
 
2276
<p>None</p>
 
2277
</td>
 
2278
<td>
 
2279
<p>Global</p>
 
2280
</td>
 
2281
</tr>
 
2282
<tr>
 
2283
<td>
 
2284
<p><tt class="literal">delete user</tt> <tt class="literal">script</tt></p>
 
2285
</td>
 
2286
<td>
 
2287
<p>string (command)</p>
 
2288
</td>
 
2289
<td>
 
2290
<p>Script to run to delete a user or computer account</p>
 
2291
</td>
 
2292
<td>
 
2293
<p>None</p>
 
2294
</td>
 
2295
<td>
 
2296
<p>Global</p>
 
2297
</td>
 
2298
</tr>
 
2299
<tr>
 
2300
<td>
 
2301
<p><tt class="literal">domain admin group</tt></p>
 
2302
</td>
 
2303
<td>
 
2304
<p>string (list of users)</p>
 
2305
</td>
 
2306
<td>
 
2307
<p>Users that are in the Domain Admins group</p>
 
2308
</td>
 
2309
<td>
 
2310
<p>None</p>
 
2311
</td>
 
2312
<td>
 
2313
<p>Global</p>
 
2314
</td>
 
2315
</tr>
 
2316
<tr>
 
2317
<td>
 
2318
<p><tt class="literal">domain guest group</tt></p>
 
2319
</td>
 
2320
<td>
 
2321
<p>string (list of users)</p>
 
2322
</td>
 
2323
<td>
 
2324
<p>Users that are in the Domain Guests group</p>
 
2325
</td>
 
2326
<td>
 
2327
<p>None</p>
 
2328
</td>
 
2329
<td>
 
2330
<p>Global</p>
 
2331
</td>
 
2332
</tr>
 
2333
<tr>
 
2334
<td>
 
2335
<p><tt class="literal">password server</tt></p>
 
2336
</td>
 
2337
<td>
 
2338
<p>string (list of computers)</p>
 
2339
</td>
 
2340
<td>
 
2341
<p>List of domain controllers used for authentication when Samba is
 
2342
running as a domain member server</p>
 
2343
</td>
 
2344
<td>
 
2345
<p>None</p>
 
2346
</td>
 
2347
<td>
 
2348
<p>Global</p>
 
2349
</td>
 
2350
</tr>
 
2351
<tr>
 
2352
<td>
 
2353
<p><tt class="literal">machine password timeout</tt></p>
 
2354
</td>
 
2355
<td>
 
2356
<p>numeric (seconds)</p>
 
2357
</td>
 
2358
<td>
 
2359
<p>Sets the renewal interval for NT domain machine passwords</p>
 
2360
</td>
 
2361
<td>
 
2362
<p><tt class="literal">604,800</tt> (1 week )</p>
 
2363
</td>
 
2364
<td>
 
2365
<p>Global</p>
 
2366
</td>
 
2367
</tr>
 
2368
 
 
2369
</table>
 
2370
 
 
2371
<p>Here are detailed explanations of each <a name="INDEX-170"/>Windows NT domain option listed
 
2372
in <a href="ch04.html#samba2-CHP-4-TABLE-2">Table 4-2</a>.</p>
 
2373
 
 
2374
 
 
2375
<div class="sect2"><a name="samba2-CHP-4-SECT-8.1"/>
 
2376
 
 
2377
<a name="INDEX-171"/><h3 class="head2">domain logons</h3>
 
2378
 
 
2379
<p>This option configures Samba to accept domain logons as a primary
 
2380
domain controller. When a client successfully logs on to the domain,
 
2381
Samba will return a special token to the client that allows the
 
2382
client to access domain shares without consulting the PDC again for
 
2383
authentication. Note that the Samba machine must employ user-level
 
2384
security (<tt class="literal">security</tt> <tt class="literal">=</tt>
 
2385
<tt class="literal">user</tt>) and must be the PDC for this option to
 
2386
function. In addition, Windows machines will expect a
 
2387
<tt class="literal">[netlogon]</tt> share to exist on the Samba server.</p>
 
2388
 
 
2389
 
 
2390
<div class="sect3"><a name="samba2-CHP-4-SECT-8.1.1"/>
 
2391
 
 
2392
<a name="INDEX-172"/><h3 class="head3">domain master</h3>
 
2393
 
 
2394
<p>In a Windows network, a local master browser handles browsing within
 
2395
a subnet. A Windows domain can be made up of a number of subnets,
 
2396
each of which has its own local master browser. The primary domain
 
2397
controller serves the function of domain master browser, collecting
 
2398
the browse lists from the local master browser of each subnet. Each
 
2399
local master browser queries the domain master browser and adds the
 
2400
information about other subnets to their own browse lists. When Samba
 
2401
is configured as a primary domain controller, it automatically sets
 
2402
<tt class="literal">domain</tt> <tt class="literal">master</tt>
 
2403
<tt class="literal">=</tt> <tt class="literal">yes</tt>, making itself the domain
 
2404
master browser.</p>
 
2405
 
 
2406
<p>Because Windows NT PDCs always claim the role of domain master
 
2407
browser, Samba should never be allowed to be domain master if there
 
2408
is a Windows PDC in the domain.</p>
 
2409
 
 
2410
 
 
2411
</div>
 
2412
 
 
2413
 
 
2414
 
 
2415
<div class="sect3"><a name="samba2-CHP-4-SECT-8.1.2"/>
 
2416
 
 
2417
<a name="INDEX-173"/><h3 class="head3">add user script</h3>
 
2418
 
 
2419
<p>There are two ways in which <tt class="literal">add</tt>
 
2420
<tt class="literal">user</tt> <tt class="literal">script</tt> can be used. When
 
2421
the Samba server is set up as a primary domain controller, it can be
 
2422
assigned to a command that will run on the Samba server to add a
 
2423
Windows NT/2000/XP computer account to Samba's
 
2424
password database. When the user on the Windows system changes the
 
2425
computer's settings to join a domain, he is asked
 
2426
for the username and password of a user who has administrative rights
 
2427
on the domain controller. Samba authenticates this user and then runs
 
2428
the <tt class="literal">add</tt> <tt class="literal">user</tt>
 
2429
<tt class="literal">script</tt> with root permissions.</p>
 
2430
 
 
2431
<p>When Samba is configured as a domain member server, the
 
2432
<tt class="literal">add</tt> <tt class="literal">user</tt>
 
2433
<tt class="literal">script</tt> can be assigned to a command to add a user
 
2434
to the system. This allows Windows clients to add users that can
 
2435
access shares on the Samba system without requiring an administrator
 
2436
to create the account manually on the Samba host.</p>
 
2437
 
 
2438
 
 
2439
</div>
 
2440
 
 
2441
 
 
2442
 
 
2443
<div class="sect3"><a name="samba2-CHP-4-SECT-8.1.3"/>
 
2444
 
 
2445
<a name="INDEX-174"/><h3 class="head3">delete user script</h3>
 
2446
 
 
2447
<p>There are times when users are automatically deleted from the domain,
 
2448
and the <tt class="literal">delete</tt> <tt class="literal">user</tt>
 
2449
<tt class="literal">script</tt> can be assigned to a command that removes a
 
2450
user from the Samba host as a Windows server would do. However, you
 
2451
might not want this to happen, because the Unix user might need the
 
2452
account for reasons other than use with Samba. Therefore, we
 
2453
recommend that you be very careful about using this option.</p>
 
2454
 
 
2455
 
 
2456
</div>
 
2457
 
 
2458
 
 
2459
 
 
2460
<div class="sect3"><a name="samba2-CHP-4-SECT-8.1.4"/>
 
2461
 
 
2462
<a name="INDEX-175"/><h3 class="head3">domain admin group</h3>
 
2463
 
 
2464
<p>In a domain of Windows systems, it is possible for a server to get a
 
2465
list of the members of the Domain Admins group from a domain
 
2466
controller. Samba 2.2 does not have the ability to handle this, and
 
2467
the <tt class="literal">domain</tt> <tt class="literal">admin</tt>
 
2468
<tt class="literal">group</tt> parameter exists as a manual means of
 
2469
informing Samba who is in the group. The list should contain root
 
2470
(necessary for adding computer accounts) and any users on Windows
 
2471
NT/2000/XP clients in the domain who are in the Domain Admins group.
 
2472
These users must be recognized by the primary controller in order for
 
2473
them to perform some administrative duties such as adding users to
 
2474
the domain.</p>
 
2475
 
 
2476
 
 
2477
</div>
 
2478
 
 
2479
 
 
2480
 
 
2481
<div class="sect3"><a name="samba2-CHP-4-SECT-8.1.5"/>
 
2482
 
 
2483
<a name="INDEX-176"/><h3 class="head3">password server</h3>
 
2484
 
 
2485
<p>In a Windows domain in which the domain controllers are a Windows
 
2486
primary domain controller, along with any number of Windows backup
 
2487
domain controllers, clients and domain member servers authenticate
 
2488
users by querying either the PDC or any of the BDCs. When Samba is
 
2489
configured as a domain member server, the <tt class="literal">password</tt>
 
2490
<tt class="literal">server</tt> parameter allows some control over how
 
2491
Samba finds a domain controller. Earlier versions of Samba could not
 
2492
use the same method that Windows systems use, and it was necessary to
 
2493
specify a list of systems to try. When you set
 
2494
<tt class="literal">password</tt> <tt class="literal">server</tt>
 
2495
<tt class="literal">=</tt> <tt class="literal">*</tt>, Samba 2.2 is able to find
 
2496
the domain controller in the same manner that Windows does, which
 
2497
helps to spread the requests over several backup domain controllers,
 
2498
minimizing the possibility of them becoming overloaded with
 
2499
authentication requests. We recommend that you use this method.</p>
 
2500
 
 
2501
 
 
2502
</div>
 
2503
 
 
2504
 
 
2505
 
 
2506
<div class="sect3"><a name="samba2-CHP-4-SECT-8.1.6"/>
 
2507
 
 
2508
<a name="INDEX-177"/><h3 class="head3">machine password timeout</h3>
 
2509
 
 
2510
<p>The <tt class="literal">machine</tt> <tt class="literal">password</tt>
 
2511
<tt class="literal">timeout</tt> global option sets a retention period for
 
2512
Windows NT domain machine passwords. The default is currently set to
 
2513
the same time period that Windows NT 4.0 uses: 604,800 seconds (one
 
2514
week). Samba will periodically attempt to change the
 
2515
<em class="firstterm">machine account password</em>, which is a password
 
2516
used specifically by another server to report changes to it. This
 
2517
option specifies the number of seconds that Samba should wait before
 
2518
attempting to change that password. The timeout period can be changed
 
2519
to a single day by specifying the following:</p>
 
2520
 
 
2521
<blockquote><pre class="code">[global]
 
2522
    machine password timeout = 86400</pre></blockquote>
 
2523
 
 
2524
<a name="samba2-CHP-4-NOTE-119"/><blockquote class="note"><h4 class="objtitle">TIP</h4>
 
2525
<p>If you would like more information on how Windows NT uses domain
 
2526
usernames and groups, we recommend Eric <a name="INDEX-178"/>Pearce's
 
2527
<em class="citetitle">Windows NT in a Nutshell</em>, published by
 
2528
O'Reilly. <a name="INDEX-179"/></p>
 
2529
</blockquote>
 
2530
 
 
2531
 
 
2532
</div>
 
2533
 
 
2534
 
 
2535
</div>
 
2536
 
 
2537
 
 
2538
</div>
 
2539
 
 
2540
<hr/><h4 class="head4">Footnotes</h4><blockquote><a name="FOOTNOTE-1"/> <p><a href="#FNPTR-1">[1]</a> When we include
 
2541
Windows XP in discussions of Windows NT domains in this book, we are
 
2542
referring to Windows XP Professional and not to the Home edition. The
 
2543
reason for this is explained in the section on Windows XP later in
 
2544
this chapter.</p> <a name="FOOTNOTE-2"/> <p><a href="#FNPTR-2">[2]</a> The entry in
 
2545
<em class="filename">/etc/passwd</em> might not be required in future
 
2546
Samba versions.</p> <a name="FOOTNOTE-3"/> <p><a href="#FNPTR-3">[3]</a> If you want to follow our example in this
 
2547
section, and your network doesn't have any Windows
 
2548
systems offering shares, see <a href="ch05.html">Chapter 5</a> for
 
2549
directions on how to create one. Make sure you understand how to set
 
2550
up shares before continuing with the directions presented
 
2551
here!</p> <a name="FOOTNOTE-4"/> <p><a href="#FNPTR-4">[4]</a> The version of the System Policy
 
2552
Editor distributed with Windows 98 is an update of the version
 
2553
shipped with Windows 95. Use the version from the Windows 98
 
2554
distribution if you can.</p> <a name="FOOTNOTE-5"/> <p><a href="#FNPTR-5">[5]</a> This security identifier (SID) is part of
 
2555
an access token that allows the PDC to identify and authenticate the
 
2556
client.</p> </blockquote><hr/><h4 class="head4"><a href="toc.html">TOC</a></h4></body></html>