[217] | 1 | <?xml version="1.0" encoding="iso-8859-1"?>
|
---|
| 2 | <!DOCTYPE chapter PUBLIC "-//Samba-Team//DTD DocBook V4.2-Based Variant V1.0//EN" "http://www.samba.org/samba/DTD/samba-doc">
|
---|
| 3 | <chapter id="domain-member">
|
---|
| 4 |
|
---|
| 5 | <chapterinfo>
|
---|
| 6 | &author.jht;
|
---|
| 7 | &author.jeremy;
|
---|
| 8 | &author.jerry;
|
---|
| 9 | &author.tridge;
|
---|
| 10 | &author.jelmer;
|
---|
| 11 | <author>&person.gd;<contrib>LDAP updates</contrib></author>
|
---|
| 12 | </chapterinfo>
|
---|
| 13 |
|
---|
| 14 | <title>Domain Membership</title>
|
---|
| 15 |
|
---|
| 16 | <para>
|
---|
| 17 | <indexterm><primary>domain member</primary></indexterm>
|
---|
| 18 | <indexterm><primary>machine trust account</primary></indexterm>
|
---|
| 19 | <indexterm><primary>domain security</primary></indexterm>
|
---|
| 20 | Domain membership is a subject of vital concern. Samba must be able to
|
---|
| 21 | participate as a member server in a Microsoft domain security context, and
|
---|
| 22 | Samba must be capable of providing domain machine member trust accounts;
|
---|
| 23 | otherwise it would not be able to offer a viable option for many users.
|
---|
| 24 | </para>
|
---|
| 25 |
|
---|
| 26 | <para>
|
---|
| 27 | <indexterm><primary>domain membership</primary></indexterm>
|
---|
| 28 | <indexterm><primary>misinformation</primary></indexterm>
|
---|
| 29 | This chapter covers background information pertaining to domain membership,
|
---|
| 30 | the Samba configuration for it, and MS Windows client procedures for joining a
|
---|
| 31 | domain. Why is this necessary? Because both are areas in which there exists
|
---|
| 32 | within the current MS Windows networking world, and particularly in the
|
---|
| 33 | UNIX/Linux networking and administration world, a considerable level of
|
---|
| 34 | misinformation, incorrect understanding, and lack of knowledge. Hopefully
|
---|
| 35 | this chapter will fill the voids.
|
---|
| 36 | </para>
|
---|
| 37 |
|
---|
| 38 | <sect1>
|
---|
| 39 | <title>Features and Benefits</title>
|
---|
| 40 |
|
---|
| 41 | <para>
|
---|
| 42 | <indexterm><primary>domain security</primary></indexterm>
|
---|
| 43 | <indexterm><primary>single sign-on</primary></indexterm>
|
---|
| 44 | <indexterm><primary>SSO</primary></indexterm>
|
---|
| 45 | MS Windows workstations and servers that want to participate in domain security need to
|
---|
| 46 | be made domain members. Participating in domain security is often called
|
---|
| 47 | <emphasis>single sign-on</emphasis>, or <acronym>SSO</acronym> for short. This
|
---|
| 48 | chapter describes the process that must be followed to make a workstation
|
---|
| 49 | (or another server &smbmdash; be it an <application>MS Windows NT4/200x</application>
|
---|
| 50 | server) or a Samba server a member of an MS Windows domain security context.
|
---|
| 51 | </para>
|
---|
| 52 |
|
---|
| 53 | <para>
|
---|
| 54 | <indexterm><primary>native member</primary></indexterm>
|
---|
| 55 | <indexterm><primary>ADS</primary></indexterm>
|
---|
| 56 | <indexterm><primary>domain control</primary></indexterm>
|
---|
| 57 | <indexterm><primary>Server Type</primary><secondary>Domain Member</secondary></indexterm>
|
---|
| 58 | Samba-3 can join an MS Windows NT4-style domain as a native member server, an
|
---|
| 59 | MS Windows Active Directory domain as a native member server, or a Samba domain
|
---|
| 60 | control network. Domain membership has many advantages:
|
---|
| 61 | </para>
|
---|
| 62 |
|
---|
| 63 | <itemizedlist>
|
---|
| 64 | <listitem><para>
|
---|
| 65 | <indexterm><primary>SAM</primary></indexterm>
|
---|
| 66 | MS Windows workstation users get the benefit of SSO.
|
---|
| 67 | </para></listitem>
|
---|
| 68 |
|
---|
| 69 | <listitem><para>
|
---|
| 70 | <indexterm><primary>access rights</primary></indexterm>
|
---|
| 71 | <indexterm><primary>file ownership</primary></indexterm>
|
---|
| 72 | <indexterm><primary>access controls</primary></indexterm>
|
---|
| 73 | <indexterm><primary>SAM</primary></indexterm>
|
---|
| 74 | Domain user access rights and file ownership/access controls can be set
|
---|
| 75 | from the single Domain Security Account Manager (SAM) database
|
---|
| 76 | (works with domain member servers as well as with MS Windows workstations
|
---|
| 77 | that are domain members).
|
---|
| 78 | </para></listitem>
|
---|
| 79 |
|
---|
| 80 | <listitem><para>
|
---|
| 81 | <indexterm><primary>domain members</primary></indexterm>
|
---|
| 82 | <indexterm><primary>network logon</primary></indexterm>
|
---|
| 83 | Only <application>MS Windows NT4/200x/XP Professional</application>
|
---|
| 84 | workstations that are domain members can use network logon facilities.
|
---|
| 85 | </para></listitem>
|
---|
| 86 |
|
---|
| 87 | <listitem><para>
|
---|
| 88 | <indexterm><primary>domain member</primary></indexterm>
|
---|
| 89 | <indexterm><primary>policy files</primary></indexterm>
|
---|
| 90 | <indexterm><primary>NTConfig.POL</primary></indexterm>
|
---|
| 91 | <indexterm><primary>desktop profiles</primary></indexterm>
|
---|
| 92 | Domain member workstations can be better controlled through the use of
|
---|
| 93 | policy files (<filename>NTConfig.POL</filename>) and desktop profiles.
|
---|
| 94 | </para></listitem>
|
---|
| 95 |
|
---|
| 96 | <listitem><para>
|
---|
| 97 | <indexterm><primary>logon script</primary></indexterm>
|
---|
| 98 | <indexterm><primary>transparent access</primary></indexterm>
|
---|
| 99 | <indexterm><primary>application servers</primary></indexterm>
|
---|
| 100 | Through the use of logon scripts, users can be given transparent access to network
|
---|
| 101 | applications that run off application servers.
|
---|
| 102 | </para></listitem>
|
---|
| 103 |
|
---|
| 104 | <listitem><para>
|
---|
| 105 | <indexterm><primary>user access management</primary></indexterm>
|
---|
| 106 | <indexterm><primary>SAM</primary></indexterm>
|
---|
| 107 | <indexterm><primary>LDAP</primary></indexterm>
|
---|
| 108 | <indexterm><primary>ADS</primary></indexterm>
|
---|
| 109 | Network administrators gain better application and user access management
|
---|
| 110 | abilities because there is no need to maintain user accounts on any network
|
---|
| 111 | client or server other than the central domain database
|
---|
| 112 | (either NT4/Samba SAM-style domain, NT4 domain that is backend-ed with an
|
---|
| 113 | LDAP directory, or via an Active Directory infrastructure).
|
---|
| 114 | </para></listitem>
|
---|
| 115 | </itemizedlist>
|
---|
| 116 |
|
---|
| 117 | </sect1>
|
---|
| 118 |
|
---|
| 119 | <sect1 id="machine-trust-accounts">
|
---|
| 120 | <title>MS Windows Workstation/Server Machine Trust Accounts</title>
|
---|
| 121 |
|
---|
| 122 | <para>
|
---|
| 123 | <indexterm><primary>Machine Trust Accounts</primary></indexterm>
|
---|
| 124 | <indexterm><primary>authenticate</primary></indexterm>
|
---|
| 125 | <indexterm><primary>domain controller</primary></indexterm>
|
---|
| 126 | <indexterm><primary>rogue user</primary></indexterm>
|
---|
| 127 | A Machine Trust Account is an account that is used to authenticate a client machine (rather than a user) to
|
---|
| 128 | the domain controller server. In Windows terminology, this is known as a <quote>computer account.</quote> The
|
---|
| 129 | purpose of the machine trust account is to prevent a rogue user and domain controller from colluding to gain
|
---|
| 130 | access to a domain member workstation.
|
---|
| 131 | </para>
|
---|
| 132 |
|
---|
| 133 | <para>
|
---|
| 134 | <indexterm><primary>machine trust account</primary><secondary>password</secondary></indexterm>
|
---|
| 135 | <indexterm><primary>shared secret</primary></indexterm>
|
---|
| 136 | <indexterm><primary>unauthorized</primary></indexterm>
|
---|
| 137 | <indexterm><primary>Windows NT/200x/XP Professional</primary></indexterm>
|
---|
| 138 | <indexterm><primary>Windows 9x/Me/XP Home</primary></indexterm>
|
---|
| 139 | The password of a Machine Trust Account acts as the shared secret for secure communication with the domain
|
---|
| 140 | controller. This is a security feature to prevent an unauthorized machine with the same NetBIOS name from
|
---|
| 141 | joining the domain, participating in domain security operations, and gaining access to domain user/group
|
---|
| 142 | accounts. Windows NT/200x/XP Professional clients use machine trust accounts, but Windows 9x/Me/XP Home
|
---|
| 143 | clients do not. Hence, a Windows 9x/Me/XP Home client is never a true member of a domain because it does not
|
---|
| 144 | possess a Machine Trust Account, and, thus, has no shared secret with the domain controller.
|
---|
| 145 | </para>
|
---|
| 146 |
|
---|
| 147 | <para>
|
---|
| 148 | <indexterm><primary>Windows Registry</primary></indexterm>
|
---|
| 149 | <indexterm><primary>PDC</primary></indexterm>
|
---|
| 150 | <indexterm><primary>ADS</primary></indexterm>
|
---|
| 151 | <indexterm><primary>Machine Trust Account</primary></indexterm>
|
---|
| 152 | A Windows NT4 PDC stores each Machine Trust Account in the Windows Registry.
|
---|
| 153 | The introduction of MS Windows 2000 saw the introduction of Active Directory,
|
---|
| 154 | the new repository for Machine Trust Accounts. A Samba PDC, however, stores
|
---|
| 155 | each Machine Trust Account in two parts,
|
---|
| 156 | as follows:
|
---|
| 157 |
|
---|
| 158 | <itemizedlist>
|
---|
| 159 | <listitem><para>
|
---|
| 160 | <indexterm><primary>domain security account</primary></indexterm>
|
---|
| 161 | <indexterm><primary>account information</primary></indexterm>
|
---|
| 162 | <indexterm><primary>backend database</primary></indexterm>
|
---|
| 163 | A domain security account (stored in the <smbconfoption name="passdb backend"/>) that has been configured in
|
---|
| 164 | the &smb.conf; file. The precise nature of the account information that is stored depends on the type of
|
---|
| 165 | backend database that has been chosen.
|
---|
| 166 | </para>
|
---|
| 167 |
|
---|
| 168 | <para>
|
---|
| 169 | <indexterm><primary>smbpasswd</primary></indexterm>
|
---|
| 170 | <indexterm><primary>UNIX login ID</primary></indexterm>
|
---|
| 171 | <indexterm><primary>UID</primary></indexterm>
|
---|
| 172 | <indexterm><primary>LanMan</primary></indexterm>
|
---|
| 173 | <indexterm><primary>NT-encrypted password</primary></indexterm>
|
---|
| 174 | <indexterm><primary>UNIX user identifier</primary><see>UID</see></indexterm>
|
---|
| 175 | The older format of this data is the <filename>smbpasswd</filename> database
|
---|
| 176 | that contains the UNIX login ID, the UNIX user identifier (UID), and the
|
---|
| 177 | LanMan and NT-encrypted passwords. There is also some other information in
|
---|
| 178 | this file that we do not need to concern ourselves with here.
|
---|
| 179 | </para>
|
---|
| 180 |
|
---|
| 181 | <para>
|
---|
| 182 | <indexterm><primary>database</primary></indexterm>
|
---|
| 183 | <indexterm><primary>ldapsam</primary></indexterm>
|
---|
| 184 | <indexterm><primary>smbpasswd</primary></indexterm>
|
---|
| 185 | <indexterm><primary>account controls</primary></indexterm>
|
---|
| 186 | The two newer database types are called ldapsam and tdbsam. Both store considerably more data than the older
|
---|
| 187 | <filename>smbpasswd</filename> file did. The extra information enables new user account controls to be
|
---|
| 188 | implemented.
|
---|
| 189 | </para></listitem>
|
---|
| 190 |
|
---|
| 191 | <listitem><para>
|
---|
| 192 | <indexterm><primary>UNIX account</primary></indexterm>
|
---|
| 193 | <indexterm><primary>/etc/passwd</primary></indexterm>
|
---|
| 194 | A corresponding UNIX account, typically stored in <filename>/etc/passwd</filename>. Work is in progress to
|
---|
| 195 | allow a simplified mode of operation that does not require UNIX user accounts, but this has not been a feature
|
---|
| 196 | of the early releases of Samba-3, and is not currently planned for release either.
|
---|
| 197 | </para></listitem>
|
---|
| 198 | </itemizedlist>
|
---|
| 199 | </para>
|
---|
| 200 |
|
---|
| 201 | <?latex \newpage ?>
|
---|
| 202 | <para>
|
---|
| 203 | <indexterm><primary>Machine Trust Accounts</primary><secondary>creating</secondary></indexterm>
|
---|
| 204 | There are three ways to create Machine Trust Accounts:
|
---|
| 205 | </para>
|
---|
| 206 |
|
---|
| 207 | <itemizedlist>
|
---|
| 208 | <listitem><para>
|
---|
| 209 | <indexterm><primary>manual UNIX account creation</primary></indexterm>
|
---|
| 210 | Manual creation from the UNIX/Linux command line. Here, both the Samba and
|
---|
| 211 | corresponding UNIX account are created by hand.
|
---|
| 212 | </para></listitem>
|
---|
| 213 |
|
---|
| 214 | <listitem><para>
|
---|
| 215 | <indexterm><primary>Server Manager</primary></indexterm>
|
---|
| 216 | <indexterm><primary>Nexus toolkit</primary></indexterm>
|
---|
| 217 | Using the MS Windows NT4 Server Manager, either from an NT4 domain member
|
---|
| 218 | server or using the Nexus toolkit available from the Microsoft Web site.
|
---|
| 219 | This tool can be run from any MS Windows machine as long as the user is
|
---|
| 220 | logged on as the administrator account.
|
---|
| 221 | </para></listitem>
|
---|
| 222 |
|
---|
| 223 | <listitem><para>
|
---|
| 224 | <indexterm><primary>Machine Trust Account</primary></indexterm>
|
---|
| 225 | <indexterm><primary>joined client</primary></indexterm>
|
---|
| 226 | <quote>On-the-fly</quote> creation. The Samba Machine Trust Account is automatically
|
---|
| 227 | created by Samba at the time the client is joined to the domain.
|
---|
| 228 | (For security, this is the recommended method.) The corresponding UNIX
|
---|
| 229 | account may be created automatically or manually.
|
---|
| 230 | </para></listitem>
|
---|
| 231 | </itemizedlist>
|
---|
| 232 |
|
---|
| 233 | <para>
|
---|
| 234 | <indexterm><primary>enforcing</primary></indexterm>
|
---|
| 235 | <indexterm><primary>machine trust account</primary><secondary>creation</secondary></indexterm>
|
---|
| 236 | Neither MS Windows NT4/200x/XP Professional, nor Samba, provide any method for enforcing the method of machine
|
---|
| 237 | trust account creation. This is a matter of the administrator's choice.
|
---|
| 238 | </para>
|
---|
| 239 |
|
---|
| 240 | <sect2>
|
---|
| 241 | <title>Manual Creation of Machine Trust Accounts</title>
|
---|
| 242 |
|
---|
| 243 | <para>
|
---|
| 244 | <indexterm><primary>/etc/passwd</primary></indexterm>
|
---|
| 245 | <indexterm><primary></primary></indexterm>
|
---|
| 246 | <indexterm><primary>useradd</primary></indexterm>
|
---|
| 247 | <indexterm><primary>vipw</primary></indexterm>
|
---|
| 248 | The first step in manually creating a Machine Trust Account is to manually
|
---|
| 249 | create the corresponding UNIX account in <filename>/etc/passwd</filename>.
|
---|
| 250 | This can be done using <command>vipw</command> or another <quote>adduser</quote> command
|
---|
| 251 | that is normally used to create new UNIX accounts. The following is an example for
|
---|
| 252 | a Linux-based Samba server:
|
---|
| 253 | <screen>
|
---|
| 254 | &rootprompt;<userinput>/usr/sbin/useradd -g machines -d /var/lib/nobody \
|
---|
| 255 | -c <replaceable>"machine nickname"</replaceable> \
|
---|
| 256 | -s /bin/false <replaceable>machine_name</replaceable>$ </userinput>
|
---|
| 257 |
|
---|
| 258 | &rootprompt;<userinput>passwd -l <replaceable>machine_name</replaceable>$</userinput>
|
---|
| 259 | </screen>
|
---|
| 260 | </para>
|
---|
| 261 |
|
---|
| 262 | <para>
|
---|
| 263 | <indexterm><primary>primary group</primary></indexterm>
|
---|
| 264 | <indexterm><primary>GID</primary></indexterm>
|
---|
| 265 | <indexterm><primary>machine accounts</primary></indexterm>
|
---|
| 266 | In the example above there is an existing system group <quote>machines</quote> which is used
|
---|
| 267 | as the primary group for all machine accounts. In the following examples the <quote>machines</quote> group
|
---|
| 268 | numeric GID is 100.
|
---|
| 269 | </para>
|
---|
| 270 |
|
---|
| 271 | <para>
|
---|
| 272 | <indexterm><primary>chpass</primary></indexterm>
|
---|
| 273 | <indexterm><primary>BSD</primary></indexterm>
|
---|
| 274 | On *BSD systems, this can be done using the <command>chpass</command> utility:
|
---|
| 275 | <screen>
|
---|
| 276 | &rootprompt;<userinput>chpass -a \
|
---|
| 277 | '<replaceable>machine_name</replaceable>$:*:101:100::0:0:Windows <replaceable>machine_name</replaceable>:/dev/null:/sbin/nologin'</userinput>
|
---|
| 278 | </screen>
|
---|
| 279 | </para>
|
---|
| 280 |
|
---|
| 281 | <para>
|
---|
| 282 | <indexterm><primary>/etc/passwd</primary></indexterm>
|
---|
| 283 | <indexterm><primary>$</primary></indexterm>
|
---|
| 284 | <indexterm><primary>null shell</primary></indexterm>
|
---|
| 285 | <indexterm><primary>home directory</primary></indexterm>
|
---|
| 286 | The <filename>/etc/passwd</filename> entry will list the machine name
|
---|
| 287 | with a <quote>$</quote> appended, and will not have a password, will have a null shell and no
|
---|
| 288 | home directory. For example, a machine named <quote>doppy</quote> would have an
|
---|
| 289 | <filename>/etc/passwd</filename> entry like this:
|
---|
| 290 | <programlisting>
|
---|
| 291 | doppy$:x:505:100:<replaceable>machine_nickname</replaceable>:/dev/null:/bin/false
|
---|
| 292 | </programlisting>
|
---|
| 293 | </para>
|
---|
| 294 |
|
---|
| 295 | <para>
|
---|
| 296 | <indexterm><primary>machine_nickname</primary></indexterm>
|
---|
| 297 | <indexterm><primary>machine_name</primary></indexterm>
|
---|
| 298 | <indexterm><primary>Machine Trust Account</primary></indexterm>
|
---|
| 299 | in which <replaceable>machine_nickname</replaceable> can be any
|
---|
| 300 | descriptive name for the client, such as BasementComputer.
|
---|
| 301 | <replaceable>machine_name</replaceable> absolutely must be the NetBIOS
|
---|
| 302 | name of the client to be joined to the domain. The <quote>$</quote> must be
|
---|
| 303 | appended to the NetBIOS name of the client or Samba will not recognize
|
---|
| 304 | this as a Machine Trust Account.
|
---|
| 305 | </para>
|
---|
| 306 |
|
---|
| 307 | <para>
|
---|
| 308 | <indexterm><primary>UNIX account</primary></indexterm>
|
---|
| 309 | <indexterm><primary>Samba account</primary></indexterm>
|
---|
| 310 | <indexterm><primary>Machine Trust Account</primary><secondary>password</secondary></indexterm>
|
---|
| 311 | Now that the corresponding UNIX account has been created, the next step is to create
|
---|
| 312 | the Samba account for the client containing the well-known initial
|
---|
| 313 | Machine Trust Account password. This can be done using the
|
---|
| 314 | <command>smbpasswd</command> command
|
---|
| 315 | as shown here:
|
---|
| 316 | <screen>
|
---|
| 317 | &rootprompt;<userinput>smbpasswd -a -m <replaceable>machine_name</replaceable></userinput>
|
---|
| 318 | </screen>
|
---|
| 319 | </para>
|
---|
| 320 |
|
---|
| 321 | <para>
|
---|
| 322 | <indexterm><primary>machine_name</primary></indexterm>
|
---|
| 323 | <indexterm><primary>NetBIOS name</primary></indexterm>
|
---|
| 324 | <indexterm><primary>RID</primary></indexterm>
|
---|
| 325 | <indexterm><primary>UID</primary></indexterm>
|
---|
| 326 | where <replaceable>machine_name</replaceable> is the machine's NetBIOS
|
---|
| 327 | name. The RID of the new machine account is generated from the UID of
|
---|
| 328 | the corresponding UNIX account.
|
---|
| 329 | </para>
|
---|
| 330 |
|
---|
| 331 | <warning>
|
---|
| 332 | <title>Join the client to the domain immediately</title>
|
---|
| 333 |
|
---|
| 334 | <para>
|
---|
| 335 | <indexterm><primary>Machine Trust Account</primary></indexterm>
|
---|
| 336 | <indexterm><primary>PDC</primary></indexterm>
|
---|
| 337 | <indexterm><primary>Server Manager</primary></indexterm>
|
---|
| 338 | <indexterm><primary>changes password</primary></indexterm>
|
---|
| 339 | <indexterm><primary>NetBIOS name</primary></indexterm>
|
---|
| 340 | Manually creating a Machine Trust Account using this method is the
|
---|
| 341 | equivalent of creating a Machine Trust Account on a Windows NT PDC using
|
---|
| 342 | <indexterm><primary>Server Manager</primary></indexterm>
|
---|
| 343 | the <application>Server Manager</application>. From the time at which the
|
---|
| 344 | account is created to the time the client joins the domain and
|
---|
| 345 | changes the password, your domain is vulnerable to an intruder joining
|
---|
| 346 | your domain using a machine with the same NetBIOS name. A PDC inherently
|
---|
| 347 | trusts members of the domain and will serve out a large degree of user
|
---|
| 348 | information to such clients. You have been warned!
|
---|
| 349 | </para>
|
---|
| 350 | </warning>
|
---|
| 351 | </sect2>
|
---|
| 352 |
|
---|
| 353 | <sect2>
|
---|
| 354 | <title>Managing Domain Machine Accounts using NT4 Server Manager</title>
|
---|
| 355 |
|
---|
| 356 | <para>
|
---|
| 357 | <indexterm><primary>machine trust accounts</primary></indexterm>
|
---|
| 358 | <indexterm><primary>automatic account creation</primary></indexterm>
|
---|
| 359 | <indexterm><primary>Server Manager</primary></indexterm>
|
---|
| 360 | A working <smbconfoption name="add machine script"/> is essential
|
---|
| 361 | for machine trust accounts to be automatically created. This applies no matter whether
|
---|
| 362 | you use automatic account creation or the NT4 Domain Server Manager.
|
---|
| 363 | </para>
|
---|
| 364 |
|
---|
| 365 | <para>
|
---|
| 366 | <indexterm><primary>SRVTOOLS.EXE</primary></indexterm>
|
---|
| 367 | <indexterm><primary>SrvMgr.exe</primary></indexterm>
|
---|
| 368 | <indexterm><primary>UsrMgr.exe</primary></indexterm>
|
---|
| 369 | <indexterm><primary>domain management tools</primary></indexterm>
|
---|
| 370 | If the machine from which you are trying to manage the domain is an
|
---|
| 371 | <application>MS Windows NT4 workstation or MS Windows 200x/XP Professional</application>,
|
---|
| 372 | the tool of choice is the package called <command>SRVTOOLS.EXE</command>.
|
---|
| 373 | When executed in the target directory it will unpack <command>SrvMgr.exe</command>
|
---|
| 374 | and <command>UsrMgr.exe</command> (both are domain management tools for MS Windows NT4 workstation).
|
---|
| 375 | </para>
|
---|
| 376 |
|
---|
| 377 | <para>
|
---|
| 378 | <indexterm><primary>Nexus.exe</primary></indexterm>
|
---|
| 379 | <indexterm><primary>Microsoft Windows 9x/Me</primary></indexterm>
|
---|
| 380 | If your workstation is a <application>Microsoft Windows 9x/Me</application> family product,
|
---|
| 381 | you should download the <command>Nexus.exe</command> package from the Microsoft Web site.
|
---|
| 382 | When executed from the target directory, it will unpack the same tools but for use on
|
---|
| 383 | this platform.
|
---|
| 384 | </para>
|
---|
| 385 |
|
---|
| 386 | <para>
|
---|
| 387 | Further information about these tools may be obtained from Knowledge Base articles
|
---|
| 388 | <ulink url="http://support.microsoft.com/default.aspx?scid=kb;en-us;173673">173673</ulink>, and
|
---|
| 389 | <ulink url="http://support.microsoft.com/default.aspx?scid=kb;en-us;172540">172540</ulink>
|
---|
| 390 | </para>
|
---|
| 391 |
|
---|
| 392 | <para>
|
---|
| 393 | <indexterm><primary>srvmgr.exe</primary></indexterm>
|
---|
| 394 | <indexterm><primary>Server Manager for Domains</primary></indexterm>
|
---|
| 395 | Launch the <command>srvmgr.exe</command> (Server Manager for Domains) and follow these steps:
|
---|
| 396 | </para>
|
---|
| 397 |
|
---|
| 398 | <procedure>
|
---|
| 399 | <title>Server Manager Account Machine Account Management</title>
|
---|
| 400 | <step><para>
|
---|
| 401 | From the menu select <guimenu>Computer</guimenu>.
|
---|
| 402 | </para></step>
|
---|
| 403 |
|
---|
| 404 | <step><para>
|
---|
| 405 | Click <guimenuitem>Select Domain</guimenuitem>.
|
---|
| 406 | </para></step>
|
---|
| 407 |
|
---|
| 408 | <step><para>
|
---|
| 409 | Click the name of the domain you wish to administer in the
|
---|
| 410 | <guilabel>Select Domain</guilabel> panel and then click
|
---|
| 411 | <guibutton>OK</guibutton>.
|
---|
| 412 | </para></step>
|
---|
| 413 |
|
---|
| 414 | <step><para>
|
---|
| 415 | Again from the menu select <guimenu>Computer</guimenu>.
|
---|
| 416 | </para></step>
|
---|
| 417 |
|
---|
| 418 | <step><para>
|
---|
| 419 | Select <guimenuitem>Add to Domain</guimenuitem>.
|
---|
| 420 | </para></step>
|
---|
| 421 |
|
---|
| 422 | <step><para>
|
---|
| 423 | In the dialog box, click the radio button to
|
---|
| 424 | <guilabel>Add NT Workstation of Server</guilabel>, then
|
---|
| 425 | enter the machine name in the field provided, and click the
|
---|
| 426 | <guibutton>Add</guibutton> button.
|
---|
| 427 | </para></step>
|
---|
| 428 | </procedure>
|
---|
| 429 |
|
---|
| 430 | </sect2>
|
---|
| 431 |
|
---|
| 432 | <sect2>
|
---|
| 433 | <title>On-the-Fly Creation of Machine Trust Accounts</title>
|
---|
| 434 |
|
---|
| 435 | <para>
|
---|
| 436 | <indexterm><primary>Machine Trust Account</primary><secondary>creation</secondary></indexterm>
|
---|
| 437 | The third (and recommended) way of creating Machine Trust Accounts is simply to allow the Samba server to
|
---|
| 438 | create them as needed when the client is joined to the domain.
|
---|
| 439 | </para>
|
---|
| 440 |
|
---|
| 441 | <para>
|
---|
| 442 | <indexterm><primary>Machine Trust Account</primary><secondary>UNIX account</secondary></indexterm>
|
---|
| 443 | <indexterm><primary>UNIX account</primary></indexterm>
|
---|
| 444 | <indexterm><primary>add machine script</primary></indexterm>
|
---|
| 445 | Since each Samba Machine Trust Account requires a corresponding UNIX account, a method
|
---|
| 446 | for automatically creating the UNIX account is usually supplied; this requires configuration of the
|
---|
| 447 | add machine script option in &smb.conf;. This method is not required; however, corresponding UNIX
|
---|
| 448 | accounts may also be created manually.
|
---|
| 449 | </para>
|
---|
| 450 |
|
---|
| 451 |
|
---|
| 452 | <para>
|
---|
| 453 | <indexterm><primary>useradd</primary></indexterm>
|
---|
| 454 | <indexterm><primary>Red Hat Linux</primary></indexterm>
|
---|
| 455 | Here is an example for a Red Hat Linux system:
|
---|
| 456 | <smbconfblock>
|
---|
| 457 | <smbconfsection name="[global]"/>
|
---|
| 458 | <smbconfoption name="add machine script">/usr/sbin/useradd -d /var/lib/nobody -g 100 -s /bin/false -M %u</smbconfoption>
|
---|
| 459 | </smbconfblock>
|
---|
| 460 | </para>
|
---|
| 461 |
|
---|
| 462 | </sect2>
|
---|
| 463 |
|
---|
| 464 | <sect2><title>Making an MS Windows Workstation or Server a Domain Member</title>
|
---|
| 465 |
|
---|
| 466 | <para>
|
---|
| 467 | The procedure for making an MS Windows workstation or server a member of the domain varies
|
---|
| 468 | with the version of Windows.
|
---|
| 469 | </para>
|
---|
| 470 |
|
---|
| 471 | <sect3>
|
---|
| 472 | <title>Windows 200x/XP Professional Client</title>
|
---|
| 473 |
|
---|
| 474 | <para>
|
---|
| 475 | <indexterm><primary>domain member</primary></indexterm>
|
---|
| 476 | <indexterm><primary>machine trust account</primary><secondary>create privilege</secondary></indexterm>
|
---|
| 477 | <indexterm><primary>privileges</primary></indexterm>
|
---|
| 478 | <indexterm><primary>root</primary></indexterm>
|
---|
| 479 | When the user elects to make the client a domain member, Windows 200x prompts for
|
---|
| 480 | an account and password that has privileges to create machine accounts in the domain.
|
---|
| 481 | A Samba administrator account (i.e., a Samba account that has <constant>root</constant> privileges on the
|
---|
| 482 | Samba server) must be entered here; the operation will fail if an ordinary user
|
---|
| 483 | account is given.
|
---|
| 484 | </para>
|
---|
| 485 |
|
---|
| 486 | <para>
|
---|
| 487 | <indexterm><primary>administrator account</primary></indexterm>
|
---|
| 488 | <indexterm><primary>/etc/passwd</primary></indexterm>
|
---|
| 489 | For security reasons, the password for this administrator account should be set
|
---|
| 490 | to a password that is other than that used for the root user in <filename>/etc/passwd</filename>.
|
---|
| 491 | </para>
|
---|
| 492 |
|
---|
| 493 | <para>
|
---|
| 494 | <indexterm><primary>account</primary></indexterm>
|
---|
| 495 | <indexterm><primary>create domain member</primary></indexterm>
|
---|
| 496 | <indexterm><primary>root</primary></indexterm>
|
---|
| 497 | <indexterm><primary>map</primary></indexterm>
|
---|
| 498 | The name of the account that is used to create domain member machine trust accounts can be
|
---|
| 499 | anything the network administrator may choose. If it is other than <constant>root</constant>,
|
---|
| 500 | then this is easily mapped to <constant>root</constant> in the file named in the &smb.conf; parameter
|
---|
| 501 | <smbconfoption name="username map">/etc/samba/smbusers</smbconfoption>.
|
---|
| 502 | </para>
|
---|
| 503 |
|
---|
| 504 | <para>
|
---|
| 505 | <indexterm><primary>administrator account</primary></indexterm>
|
---|
| 506 | <indexterm><primary>encryption key</primary></indexterm>
|
---|
| 507 | <indexterm><primary>machine trust account</primary></indexterm>
|
---|
| 508 | The session key of the Samba administrator account acts as an encryption key for setting the password of the machine trust
|
---|
| 509 | account. The Machine Trust Account will be created on-the-fly, or updated if it already exists.
|
---|
| 510 | </para>
|
---|
| 511 | </sect3>
|
---|
| 512 |
|
---|
| 513 | <sect3>
|
---|
| 514 | <title>Windows NT4 Client</title>
|
---|
| 515 |
|
---|
| 516 | <para>
|
---|
| 517 | <indexterm><primary>Machine Trust Account</primary></indexterm>
|
---|
| 518 | <indexterm><primary>Create a Computer Account</primary></indexterm>
|
---|
| 519 | <indexterm><primary>join the machine</primary></indexterm>
|
---|
| 520 | If the Machine Trust Account was created manually, on the
|
---|
| 521 | Identification Changes menu enter the domain name, but do not
|
---|
| 522 | check the box <guilabel>Create a Computer Account in the Domain</guilabel>.
|
---|
| 523 | In this case, the existing Machine Trust Account is used to join the machine
|
---|
| 524 | to the domain.
|
---|
| 525 | </para>
|
---|
| 526 |
|
---|
| 527 | <para>
|
---|
| 528 | <indexterm><primary>Machine Trust Account</primary></indexterm>
|
---|
| 529 | <indexterm><primary>on the fly</primary></indexterm>
|
---|
| 530 | <indexterm><primary>Computer Account</primary></indexterm>
|
---|
| 531 | <indexterm><primary>administrator account</primary></indexterm>
|
---|
| 532 | If the Machine Trust Account is to be created on the fly, on the Identification Changes menu enter the domain
|
---|
| 533 | name and check the box <guilabel>Create a Computer Account in the Domain</guilabel>. In this case, joining
|
---|
| 534 | the domain proceeds as above for Windows 2000 (i.e., you must supply a Samba administrator account when
|
---|
| 535 | prompted).
|
---|
| 536 | </para>
|
---|
| 537 | </sect3>
|
---|
| 538 |
|
---|
| 539 | <sect3>
|
---|
| 540 | <title>Samba Client</title>
|
---|
| 541 |
|
---|
| 542 | <para>
|
---|
| 543 | <indexterm><primary></primary></indexterm>
|
---|
| 544 | Joining a Samba client to a domain is documented in <link linkend="domain-member-server">the next section</link>.
|
---|
| 545 | </para>
|
---|
| 546 | </sect3>
|
---|
| 547 |
|
---|
| 548 | </sect2>
|
---|
| 549 | </sect1>
|
---|
| 550 |
|
---|
| 551 | <sect1 id="domain-member-server">
|
---|
| 552 | <title>Domain Member Server</title>
|
---|
| 553 |
|
---|
| 554 | <para>
|
---|
| 555 | <indexterm><primary>domain security</primary></indexterm>
|
---|
| 556 | <indexterm><primary>security context</primary></indexterm>
|
---|
| 557 | <indexterm><primary>authentication regime</primary></indexterm>
|
---|
| 558 | <indexterm><primary>ADS</primary></indexterm>
|
---|
| 559 | This mode of server operation involves the Samba machine being made a member
|
---|
| 560 | of a domain security context. This means by definition that all user
|
---|
| 561 | authentication will be done from a centrally defined authentication regime.
|
---|
| 562 | The authentication regime may come from an NT3/4-style (old domain technology)
|
---|
| 563 | server, or it may be provided from an Active Directory server (ADS) running on
|
---|
| 564 | MS Windows 2000 or later.
|
---|
| 565 | </para>
|
---|
| 566 |
|
---|
| 567 | <para>
|
---|
| 568 | <emphasis>
|
---|
| 569 | <indexterm><primary>authentication</primary><secondary>backend</secondary></indexterm>
|
---|
| 570 | <indexterm><primary>distributed directory</primary></indexterm>
|
---|
| 571 | <indexterm><primary>LDAP</primary></indexterm>
|
---|
| 572 | <indexterm><primary>OpenLDAP</primary></indexterm>
|
---|
| 573 | <indexterm><primary>iPlanet</primary></indexterm>
|
---|
| 574 | <indexterm><primary>Sun</primary></indexterm>
|
---|
| 575 | <indexterm><primary>Novell</primary></indexterm>
|
---|
| 576 | <indexterm><primary>e-Directory</primary></indexterm>
|
---|
| 577 | Of course it should be clear that the authentication backend itself could be
|
---|
| 578 | from any distributed directory architecture server that is supported by Samba.
|
---|
| 579 | This can be LDAP (from OpenLDAP), or Sun's iPlanet, or Novell e-Directory
|
---|
| 580 | Server, and so on.
|
---|
| 581 | </emphasis>
|
---|
| 582 | </para>
|
---|
| 583 |
|
---|
| 584 | <note><para>
|
---|
| 585 | <indexterm><primary>LDAP</primary></indexterm>
|
---|
| 586 | <indexterm><primary>identity management</primary></indexterm>
|
---|
| 587 | <indexterm><primary>machine authentication</primary></indexterm>
|
---|
| 588 | When Samba is configured to use an LDAP or other identity management and/or
|
---|
| 589 | directory service, it is Samba that continues to perform user and machine
|
---|
| 590 | authentication. It should be noted that the LDAP server does not perform
|
---|
| 591 | authentication handling in place of what Samba is designed to do.
|
---|
| 592 | </para></note>
|
---|
| 593 |
|
---|
| 594 | <para>
|
---|
| 595 | <indexterm><primary>create a domain machine account</primary></indexterm>
|
---|
| 596 | <indexterm><primary>domain member server</primary></indexterm>
|
---|
| 597 | <indexterm><primary>join the domain</primary></indexterm>
|
---|
| 598 | Please refer to <link linkend="samba-pdc">Domain Control</link>, for more information regarding
|
---|
| 599 | how to create a domain machine account for a domain member server as well as for
|
---|
| 600 | information on how to enable the Samba domain member machine to join the domain
|
---|
| 601 | and be fully trusted by it.
|
---|
| 602 | </para>
|
---|
| 603 |
|
---|
| 604 | <sect2>
|
---|
| 605 | <title>Joining an NT4-type Domain with Samba-3</title>
|
---|
| 606 |
|
---|
| 607 | <para><link linkend="assumptions">Assumptions</link> lists names that are used in the remainder of this chapter.</para>
|
---|
| 608 |
|
---|
| 609 | <table frame="all" id="assumptions"><title>Assumptions</title>
|
---|
| 610 | <tgroup cols="2">
|
---|
| 611 | <colspec align="right"/>
|
---|
| 612 | <colspec align="left"/>
|
---|
| 613 | <tbody>
|
---|
| 614 | <row>
|
---|
| 615 | <entry>Samba DMS NetBIOS name:</entry><entry>SERV1</entry>
|
---|
| 616 | </row>
|
---|
| 617 | <row>
|
---|
| 618 | <entry>Windows 200x/NT domain name:</entry><entry>&example.workgroup;</entry>
|
---|
| 619 | </row>
|
---|
| 620 | <row>
|
---|
| 621 | <entry>Domain's PDC NetBIOS name:</entry><entry>DOMPDC</entry>
|
---|
| 622 | </row>
|
---|
| 623 | <row>
|
---|
| 624 | <entry>Domain's BDC NetBIOS names:</entry><entry>DOMBDC1 and DOMBDC2</entry>
|
---|
| 625 | </row>
|
---|
| 626 | </tbody>
|
---|
| 627 | </tgroup>
|
---|
| 628 | </table>
|
---|
| 629 |
|
---|
| 630 | <para>
|
---|
| 631 | <indexterm><primary></primary></indexterm>
|
---|
| 632 | First, you must edit your &smb.conf; file to tell Samba it should now use domain security.
|
---|
| 633 | </para>
|
---|
| 634 |
|
---|
| 635 | <para>
|
---|
| 636 | <indexterm><primary>security = user</primary></indexterm>
|
---|
| 637 | <indexterm><primary>standalone server</primary></indexterm>
|
---|
| 638 | <indexterm><primary>domain member server</primary></indexterm>
|
---|
| 639 | <indexterm><primary>domain security</primary></indexterm>
|
---|
| 640 | Change (or add) your <smbconfoption name="security"/> line in the [global] section
|
---|
| 641 | of your &smb.conf; to read:
|
---|
| 642 | <smbconfblock>
|
---|
| 643 | <smbconfoption name="security">domain</smbconfoption>
|
---|
| 644 | </smbconfblock>
|
---|
| 645 | Note that if the parameter <parameter>security = user</parameter> is used, this machine would function as a
|
---|
| 646 | standalone server and not as a domain member server. Domain security mode causes Samba to work within the
|
---|
| 647 | domain security context.
|
---|
| 648 | </para>
|
---|
| 649 |
|
---|
| 650 | <para>
|
---|
| 651 | Next change the <smbconfoption name="workgroup"/> line in the <smbconfsection name="[global]"/>
|
---|
| 652 | section to read:
|
---|
| 653 | <smbconfblock>
|
---|
| 654 | <smbconfoption name="workgroup">&example.workgroup;</smbconfoption>
|
---|
| 655 | </smbconfblock>
|
---|
| 656 | This is the name of the domain we are joining.
|
---|
| 657 | </para>
|
---|
| 658 |
|
---|
| 659 | <para>
|
---|
| 660 | <indexterm><primary>authenticate</primary></indexterm>
|
---|
| 661 | <indexterm><primary>PDC</primary></indexterm>
|
---|
| 662 | You must also have the parameter <smbconfoption name="encrypt passwords"/>
|
---|
| 663 | set to <constant>yes</constant> in order for your users to authenticate to the NT PDC.
|
---|
| 664 | This is the default setting if this parameter is not specified. There is no need to specify this
|
---|
| 665 | parameter, but if it is specified in the &smb.conf; file, it must be set to <constant>Yes</constant>.
|
---|
| 666 | </para>
|
---|
| 667 |
|
---|
| 668 | <para>
|
---|
| 669 | <indexterm><primary>PDC</primary></indexterm>
|
---|
| 670 | <indexterm><primary>BDC</primary></indexterm>
|
---|
| 671 | <indexterm><primary>authenticate users</primary></indexterm>
|
---|
| 672 | <indexterm><primary>domain controllers</primary></indexterm>
|
---|
| 673 | Finally, add (or modify) a <smbconfoption name="password server"/> line in the [global]
|
---|
| 674 | section to read:
|
---|
| 675 | <smbconfblock>
|
---|
| 676 | <smbconfoption name="password server">DOMPDC DOMBDC1 DOMBDC2</smbconfoption>
|
---|
| 677 | </smbconfblock>
|
---|
| 678 | These are the PDC and BDCs Samba
|
---|
| 679 | will attempt to contact in order to authenticate users. Samba will
|
---|
| 680 | try to contact each of these servers in order, so you may want to
|
---|
| 681 | rearrange this list in order to spread out the authentication load
|
---|
| 682 | among Domain Controllers.
|
---|
| 683 | </para>
|
---|
| 684 |
|
---|
| 685 | <para>
|
---|
| 686 | <indexterm><primary>list of domain controllers</primary></indexterm>
|
---|
| 687 | <indexterm><primary>mechanism</primary></indexterm>
|
---|
| 688 | <indexterm><primary>broadcast-based name resolution</primary></indexterm>
|
---|
| 689 | <indexterm><primary>DNS name resolution</primary></indexterm>
|
---|
| 690 | Alternatively, if you want smbd to determine automatically the list of domain controllers to use for
|
---|
| 691 | authentication, you may set this line to be:
|
---|
| 692 | <smbconfblock>
|
---|
| 693 | <smbconfoption name="password server">*</smbconfoption>
|
---|
| 694 | </smbconfblock>
|
---|
| 695 | <indexterm><primary>WINS</primary></indexterm>
|
---|
| 696 | This method allows Samba to use exactly the same mechanism that NT does. The
|
---|
| 697 | method either uses broadcast-based name resolution, performs a WINS database
|
---|
| 698 | lookup in order to find a domain controller against which to authenticate,
|
---|
| 699 | or locates the domain controller using DNS name resolution.
|
---|
| 700 | </para>
|
---|
| 701 |
|
---|
| 702 | <para>
|
---|
| 703 | To join the domain, run this command:
|
---|
| 704 | <indexterm><primary>net</primary><secondary>rpc</secondary><tertiary>join</tertiary></indexterm>
|
---|
| 705 | <screen>
|
---|
| 706 | &rootprompt;<userinput>net rpc join -S DOMPDC -U<replaceable>Administrator%password</replaceable></userinput>
|
---|
| 707 | </screen>
|
---|
| 708 | </para>
|
---|
| 709 |
|
---|
| 710 | <para>
|
---|
| 711 | <indexterm><primary>NetBIOS name</primary></indexterm>
|
---|
| 712 | <indexterm><primary>PDC</primary></indexterm>
|
---|
| 713 | <indexterm><primary>WINS lookup</primary></indexterm>
|
---|
| 714 | <indexterm><primary>NetBIOS broadcast</primary></indexterm>
|
---|
| 715 | If the <option>-S DOMPDC</option> argument is not given, the domain name will be obtained from &smb.conf; and
|
---|
| 716 | the NetBIOS name of the PDC will be obtained either using a WINS lookup or via NetBIOS broadcast based name
|
---|
| 717 | look up.
|
---|
| 718 | </para>
|
---|
| 719 |
|
---|
| 720 | <para>
|
---|
| 721 | <indexterm><primary>joining the domain</primary></indexterm>
|
---|
| 722 | <indexterm><primary>PDC</primary></indexterm>
|
---|
| 723 | <indexterm><primary>Administrator%password</primary></indexterm>
|
---|
| 724 | <indexterm><primary>Joined domain</primary></indexterm>
|
---|
| 725 | The machine is joining the domain DOM, and the PDC for that domain (the only machine
|
---|
| 726 | that has write access to the domain SAM database) is DOMPDC; therefore, use the <option>-S</option>
|
---|
| 727 | option. The <replaceable>Administrator%password</replaceable> is the login name and
|
---|
| 728 | password for an account that has the necessary privilege to add machines to the
|
---|
| 729 | domain. If this is successful, you will see the following message in your terminal window.
|
---|
| 730 | Where the older NT4-style domain architecture is used:
|
---|
| 731 | <screen>
|
---|
| 732 | <computeroutput>Joined domain DOM.</computeroutput>
|
---|
| 733 | </screen>
|
---|
| 734 | </para>
|
---|
| 735 |
|
---|
| 736 | <para>
|
---|
| 737 | <indexterm><primary>net</primary><secondary>ads</secondary><tertiary>join</tertiary></indexterm>
|
---|
| 738 | <indexterm><primary>ADS</primary></indexterm>
|
---|
| 739 | <indexterm><primary>join the ADS domain</primary></indexterm>
|
---|
| 740 | Where Active Directory is used, the command used to join the ADS domain is:
|
---|
| 741 | <screen>
|
---|
| 742 | &rootprompt; net ads join -U<replaceable>Administrator%password</replaceable>
|
---|
| 743 | </screen>
|
---|
| 744 | And the following output is indicative of a successful outcome:
|
---|
| 745 | <screen>
|
---|
| 746 | <computeroutput>Joined SERV1 to realm MYREALM.</computeroutput>
|
---|
| 747 | </screen>
|
---|
| 748 | </para>
|
---|
| 749 |
|
---|
| 750 | <para>
|
---|
| 751 | Refer to the <command>net</command> man page and to <link linkend="NetCommand">the chapter on remote
|
---|
| 752 | administration</link> for further information.
|
---|
| 753 | </para>
|
---|
| 754 |
|
---|
| 755 | <para>
|
---|
| 756 | <indexterm><primary>join the domain</primary></indexterm>
|
---|
| 757 | <indexterm><primary>create machine trust account</primary></indexterm>
|
---|
| 758 | <indexterm><primary>PDC</primary></indexterm>
|
---|
| 759 | This process joins the server to the domain without separately having to create the machine
|
---|
| 760 | trust account on the PDC beforehand.
|
---|
| 761 | </para>
|
---|
| 762 |
|
---|
| 763 | <para>
|
---|
| 764 | <indexterm><primary>machine account password</primary><secondary>change protocol</secondary></indexterm>
|
---|
| 765 | <indexterm><primary>random machine account password</primary></indexterm>
|
---|
| 766 | <indexterm><primary>/usr/local/samba/private/secrets.tdb</primary></indexterm>
|
---|
| 767 | <indexterm><primary>/etc/samba/secrets.tdb</primary></indexterm>
|
---|
| 768 | This command goes through the machine account password change protocol, then writes the new (random) machine
|
---|
| 769 | account password for this Samba server into a file in the same directory in which a smbpasswd file would be
|
---|
| 770 | normally stored. The trust account information that is needed by the DMS is written into the file
|
---|
| 771 | <filename>/usr/local/samba/private/secrets.tdb</filename> or <filename>/etc/samba/secrets.tdb</filename>.
|
---|
| 772 | </para>
|
---|
| 773 |
|
---|
| 774 | <para>
|
---|
| 775 | <indexterm><primary>domain-level security</primary></indexterm>
|
---|
| 776 | <indexterm><primary>shadow password file</primary></indexterm>
|
---|
| 777 | This file is created and owned by root and is not readable by any other user. It is
|
---|
| 778 | the key to the domain-level security for your system and should be treated as carefully
|
---|
| 779 | as a shadow password file.
|
---|
| 780 | </para>
|
---|
| 781 |
|
---|
| 782 | <para>
|
---|
| 783 | <indexterm><primary>Samba daemons</primary></indexterm>
|
---|
| 784 | <indexterm><primary>distribution</primary></indexterm>
|
---|
| 785 | <indexterm><primary>/etc/init.d/samba</primary></indexterm>
|
---|
| 786 | Finally, restart your Samba daemons and get ready for clients to begin using domain
|
---|
| 787 | security. The way you can restart your Samba daemons depends on your distribution,
|
---|
| 788 | but in most cases the following will suffice:
|
---|
| 789 | <screen>
|
---|
| 790 | &rootprompt;/etc/init.d/samba restart
|
---|
| 791 | </screen>
|
---|
| 792 | </para>
|
---|
| 793 |
|
---|
| 794 | </sect2>
|
---|
| 795 |
|
---|
| 796 | <sect2>
|
---|
| 797 | <title>Why Is This Better Than <parameter>security = server</parameter>?</title>
|
---|
| 798 |
|
---|
| 799 | <para>
|
---|
| 800 | <indexterm><primary>domain security</primary></indexterm>
|
---|
| 801 | <indexterm><primary>UNIX users</primary></indexterm>
|
---|
| 802 | <indexterm><primary>authentication</primary></indexterm>
|
---|
| 803 | Currently, domain security in Samba does not free you from having to create local UNIX users to represent the
|
---|
| 804 | users attaching to your server. This means that if domain user <constant>DOM\fred</constant> attaches to your
|
---|
| 805 | domain security Samba server, there needs to be a local UNIX user fred to represent that user in the UNIX file
|
---|
| 806 | system. This is similar to the older Samba security mode <smbconfoption
|
---|
| 807 | name="security">server</smbconfoption>, where Samba would pass through the authentication request to a Windows
|
---|
| 808 | NT server in the same way as a Windows 95 or Windows 98 server would.
|
---|
| 809 | </para>
|
---|
| 810 |
|
---|
| 811 | <para>
|
---|
| 812 | <indexterm><primary>winbind</primary></indexterm>
|
---|
| 813 | <indexterm><primary>UID</primary></indexterm>
|
---|
| 814 | <indexterm><primary>GID</primary></indexterm>
|
---|
| 815 | Please refer to <link linkend="winbind">Winbind: Use of Domain Accounts</link>, for information on a system
|
---|
| 816 | to automatically assign UNIX UIDs and GIDs to Windows NT domain users and groups.
|
---|
| 817 | </para>
|
---|
| 818 |
|
---|
| 819 | <para>
|
---|
| 820 | <indexterm><primary>domain-level</primary></indexterm>
|
---|
| 821 | <indexterm><primary>authentication</primary></indexterm>
|
---|
| 822 | <indexterm><primary>RPC</primary></indexterm>
|
---|
| 823 | The advantage of domain-level security is that the authentication in domain-level security is passed down the
|
---|
| 824 | authenticated RPC channel in exactly the same way that an NT server would do it. This means Samba servers now
|
---|
| 825 | participate in domain trust relationships in exactly the same way NT servers do (i.e., you can add Samba
|
---|
| 826 | servers into a resource domain and have the authentication passed on from a resource domain PDC to an account
|
---|
| 827 | domain PDC).
|
---|
| 828 | </para>
|
---|
| 829 |
|
---|
| 830 | <para>
|
---|
| 831 | <indexterm><primary>PDC</primary></indexterm>
|
---|
| 832 | <indexterm><primary>BDC</primary></indexterm>
|
---|
| 833 | <indexterm><primary>connection resources</primary></indexterm>
|
---|
| 834 | In addition, with <smbconfoption name="security">server</smbconfoption>, every Samba daemon on a server has to
|
---|
| 835 | keep a connection open to the authenticating server for as long as that daemon lasts. This can drain the
|
---|
| 836 | connection resources on a Microsoft NT server and cause it to run out of available connections. With
|
---|
| 837 | <smbconfoption name="security">domain</smbconfoption>, however, the Samba daemons connect to the PDC or BDC
|
---|
| 838 | only for as long as is necessary to authenticate the user and then drop the connection, thus conserving PDC
|
---|
| 839 | connection resources.
|
---|
| 840 | </para>
|
---|
| 841 |
|
---|
| 842 | <para>
|
---|
| 843 | <indexterm><primary>PDC</primary></indexterm>
|
---|
| 844 | <indexterm><primary>authentication reply</primary></indexterm>
|
---|
| 845 | <indexterm><primary>SID</primary></indexterm>
|
---|
| 846 | <indexterm><primary>NT groups</primary></indexterm>
|
---|
| 847 | Finally, acting in the same manner as an NT server authenticating to a PDC means that as part of the
|
---|
| 848 | authentication reply, the Samba server gets the user identification information such as the user SID, the list
|
---|
| 849 | of NT groups the user belongs to, and so on.
|
---|
| 850 | </para>
|
---|
| 851 |
|
---|
| 852 | <note>
|
---|
| 853 | <para>
|
---|
| 854 | Much of the text of this document was first published in the Web magazine
|
---|
| 855 | <ulink url="http://www.linuxworld.com"><emphasis>LinuxWorld</emphasis></ulink> as the article <ulink
|
---|
| 856 | url="http://www.linuxworld.com/linuxworld/lw-1998-10/lw-10-samba.html"/>
|
---|
| 857 | <emphasis>Doing the NIS/NT Samba</emphasis>.
|
---|
| 858 | </para>
|
---|
| 859 | </note>
|
---|
| 860 |
|
---|
| 861 | </sect2>
|
---|
| 862 | </sect1>
|
---|
| 863 |
|
---|
| 864 | <sect1 id="ads-member">
|
---|
| 865 | <title>Samba ADS Domain Membership</title>
|
---|
| 866 |
|
---|
| 867 | <para>
|
---|
| 868 | <indexterm significance="preferred"><primary>Active Directory</primary></indexterm>
|
---|
| 869 | <indexterm significance="preferred"><primary>ADS</primary><see>Active Directory</see></indexterm>
|
---|
| 870 | <indexterm><primary>KDC</primary></indexterm>
|
---|
| 871 | <indexterm><primary>Kerberos</primary></indexterm>
|
---|
| 872 | This is a rough guide to setting up Samba-3 with Kerberos authentication against a
|
---|
| 873 | Windows 200x KDC. A familiarity with Kerberos is assumed.
|
---|
| 874 | </para>
|
---|
| 875 |
|
---|
| 876 | <sect2>
|
---|
| 877 | <title>Configure &smb.conf;</title>
|
---|
| 878 |
|
---|
| 879 | <para>
|
---|
| 880 | You must use at least the following three options in &smb.conf;:
|
---|
| 881 | </para>
|
---|
| 882 |
|
---|
| 883 | <smbconfblock>
|
---|
| 884 | <smbconfoption name="realm">your.kerberos.REALM</smbconfoption>
|
---|
| 885 | <smbconfoption name="security">ADS</smbconfoption>
|
---|
| 886 | <smbconfcomment>The following parameter need only be specified if present.</smbconfcomment>
|
---|
| 887 | <smbconfcomment>The default setting if not present is Yes.</smbconfcomment>
|
---|
| 888 | <smbconfoption name="encrypt passwords">yes</smbconfoption>
|
---|
| 889 | </smbconfblock>
|
---|
| 890 |
|
---|
| 891 | <para>
|
---|
| 892 | <indexterm><primary>ADS</primary></indexterm>
|
---|
| 893 | <indexterm><primary>realm</primary></indexterm>
|
---|
| 894 | <indexterm><primary>DNS</primary></indexterm>
|
---|
| 895 | <indexterm><primary>ADS DC</primary></indexterm>
|
---|
| 896 | <indexterm><primary>password server</primary></indexterm>
|
---|
| 897 | In case samba cannot correctly identify the appropriate ADS server using the realm name, use the
|
---|
| 898 | <smbconfoption name="password server"/> option in &smb.conf;:
|
---|
| 899 | <smbconfblock>
|
---|
| 900 | <smbconfoption name="password server">your.kerberos.server</smbconfoption>
|
---|
| 901 | </smbconfblock>
|
---|
| 902 | The most common reason for which Samba may not be able to locate the ADS domain controller is a consequence of
|
---|
| 903 | sites maintaining some DNS servers on UNIX systems without regard for the DNS requirements of the ADS
|
---|
| 904 | infrastructure. There is no harm in specifying a preferred ADS domain controller using the <parameter>password
|
---|
| 905 | server</parameter>.
|
---|
| 906 | </para>
|
---|
| 907 |
|
---|
| 908 | <note><para>
|
---|
| 909 | <indexterm><primary>smbpasswd</primary></indexterm>
|
---|
| 910 | <indexterm><primary>authenticated</primary></indexterm>
|
---|
| 911 | You do <emphasis>not</emphasis> need an smbpasswd file, and older clients will be authenticated as
|
---|
| 912 | if <smbconfoption name="security">domain</smbconfoption>, although it will not do any harm and
|
---|
| 913 | allows you to have local users not in the domain.
|
---|
| 914 | </para></note>
|
---|
| 915 |
|
---|
| 916 | </sect2>
|
---|
| 917 |
|
---|
| 918 | <sect2>
|
---|
| 919 | <title>Configure <filename>/etc/krb5.conf</filename></title>
|
---|
| 920 |
|
---|
| 921 | <para>
|
---|
| 922 | <indexterm><primary>/etc/krb5.conf</primary></indexterm>
|
---|
| 923 | <indexterm><primary>Kerberos</primary><secondary>/etc/krb5.conf</secondary></indexterm>
|
---|
| 924 | <indexterm><primary>MIT</primary></indexterm>
|
---|
| 925 | <indexterm><primary>Heimdal</primary></indexterm>
|
---|
| 926 | With both MIT and Heimdal Kerberos, it is unnecessary to configure the <filename>/etc/krb5.conf</filename>,
|
---|
| 927 | and it may be detrimental.
|
---|
| 928 | </para>
|
---|
| 929 |
|
---|
| 930 | <para>
|
---|
| 931 | <indexterm><primary>ADS</primary></indexterm>
|
---|
| 932 | <indexterm><primary>SRV records</primary></indexterm>
|
---|
| 933 | <indexterm><primary>DNS zon</primary></indexterm>
|
---|
| 934 | <indexterm><primary>KDC</primary></indexterm>
|
---|
| 935 | <indexterm><primary>_kerberos.REALM.NAME</primary></indexterm>
|
---|
| 936 | Microsoft ADS automatically create SRV records in the DNS zone
|
---|
| 937 | <parameter>_kerberos._tcp.REALM.NAME</parameter> for each KDC in the realm. This is part
|
---|
| 938 | of the installation and configuration process used to create an Active Directory domain.
|
---|
| 939 | A KDC is a Kerberos Key Distribution Center and forms an integral part of the Microsoft
|
---|
| 940 | active directory infrastructure.
|
---|
| 941 | </para>
|
---|
| 942 |
|
---|
| 943 | <para>
|
---|
| 944 | <indexterm><primary>kinit</primary></indexterm>
|
---|
| 945 | <indexterm><primary>DES-CBC-MD5</primary></indexterm>
|
---|
| 946 | <indexterm><primary>DES-CBC-CRC</primary></indexterm>
|
---|
| 947 | <indexterm><primary>encryption types</primary></indexterm>
|
---|
| 948 | <indexterm><primary>kerberos</primary></indexterm>
|
---|
| 949 | <indexterm><primary>Windows 2000</primary></indexterm>
|
---|
| 950 | UNIX systems can use kinit and the DES-CBC-MD5 or DES-CBC-CRC encryption types to authenticate to the Windows
|
---|
| 951 | 2000 KDC. For further information regarding Windows 2000 ADS kerberos interoperability please refer to the
|
---|
| 952 | Microsoft Windows 2000 Kerberos <ulink
|
---|
| 953 | url="http://www.microsoft.com/windows2000/techinfo/planning/security/kerbsteps.asp">Interoperability</ulink>
|
---|
| 954 | guide. Another very useful document that may be referred to for general information regarding Kerberos
|
---|
| 955 | interoperability is <ulink url="http://www.ietf.org/rfc/rfc1510.txt?number=1510">RFC1510</ulink>. This RFC
|
---|
| 956 | explains much of the magic behind the operation of Kerberos.
|
---|
| 957 | </para>
|
---|
| 958 |
|
---|
| 959 | <para>
|
---|
| 960 | <indexterm><primary>MIT</primary></indexterm>
|
---|
| 961 | <indexterm><primary>KRB5</primary></indexterm>
|
---|
| 962 | <indexterm><primary>SRV records</primary></indexterm>
|
---|
| 963 | <indexterm><primary>krb5.conf</primary></indexterm>
|
---|
| 964 | <indexterm><primary>DNS lookup</primary></indexterm>
|
---|
| 965 | <indexterm><primary>libraries</primary></indexterm>
|
---|
| 966 | MIT's, as well as Heimdal's, recent KRB5 libraries default to checking for SRV records, so they will
|
---|
| 967 | automatically find the KDCs. In addition, <filename>krb5.conf</filename> only allows specifying
|
---|
| 968 | a single KDC, even there if there may be more than one. Using the DNS lookup allows the KRB5
|
---|
| 969 | libraries to use whichever KDCs are available.
|
---|
| 970 | </para>
|
---|
| 971 |
|
---|
| 972 | <para>
|
---|
| 973 | <indexterm><primary>krb5.conf</primary></indexterm>
|
---|
| 974 | When manually configuring <filename>krb5.conf</filename>, the minimal configuration is:
|
---|
| 975 | <screen>
|
---|
| 976 | [libdefaults]
|
---|
| 977 | default_realm = YOUR.KERBEROS.REALM
|
---|
| 978 |
|
---|
| 979 | [realms]
|
---|
| 980 | YOUR.KERBEROS.REALM = {
|
---|
| 981 | kdc = your.kerberos.server
|
---|
| 982 | }
|
---|
| 983 |
|
---|
| 984 | [domain_realms]
|
---|
| 985 | .kerberos.server = YOUR.KERBEROS.REALM
|
---|
| 986 | </screen>
|
---|
| 987 | </para>
|
---|
| 988 |
|
---|
| 989 | <para>
|
---|
| 990 | <indexterm><primary>Heimdal</primary></indexterm>
|
---|
| 991 | When using Heimdal versions before 0.6, use the following configuration settings:
|
---|
| 992 | <screen>
|
---|
| 993 | [libdefaults]
|
---|
| 994 | default_realm = YOUR.KERBEROS.REALM
|
---|
| 995 | default_etypes = des-cbc-crc des-cbc-md5
|
---|
| 996 | default_etypes_des = des-cbc-crc des-cbc-md5
|
---|
| 997 |
|
---|
| 998 | [realms]
|
---|
| 999 | YOUR.KERBEROS.REALM = {
|
---|
| 1000 | kdc = your.kerberos.server
|
---|
| 1001 | }
|
---|
| 1002 |
|
---|
| 1003 | [domain_realms]
|
---|
| 1004 | .kerberos.server = YOUR.KERBEROS.REALM
|
---|
| 1005 | </screen>
|
---|
| 1006 | </para>
|
---|
| 1007 |
|
---|
| 1008 | <para>
|
---|
| 1009 | <indexterm><primary>KDC</primary></indexterm>
|
---|
| 1010 | <indexterm><primary>kinit</primary></indexterm>
|
---|
| 1011 | Test your config by doing a <userinput>kinit
|
---|
| 1012 | <replaceable>USERNAME</replaceable>@<replaceable>REALM</replaceable></userinput> and
|
---|
| 1013 | making sure that your password is accepted by the Win2000 KDC.
|
---|
| 1014 | </para>
|
---|
| 1015 |
|
---|
| 1016 | <para>
|
---|
| 1017 | <indexterm><primary>Heimdal</primary></indexterm>
|
---|
| 1018 | <indexterm><primary>ADS</primary></indexterm>
|
---|
| 1019 | <indexterm><primary>KDC</primary></indexterm>
|
---|
| 1020 | <indexterm><primary>Windows 2003</primary></indexterm>
|
---|
| 1021 | With Heimdal versions earlier than 0.6.x you can use only newly created accounts
|
---|
| 1022 | in ADS or accounts that have had the password changed once after migration, or
|
---|
| 1023 | in case of <constant>Administrator</constant> after installation. At the
|
---|
| 1024 | moment, a Windows 2003 KDC can only be used with Heimdal releases later than 0.6
|
---|
| 1025 | (and no default etypes in krb5.conf). Unfortunately, this whole area is still
|
---|
| 1026 | in a state of flux.
|
---|
| 1027 | </para>
|
---|
| 1028 |
|
---|
| 1029 | <note><para>
|
---|
| 1030 | <indexterm><primary>realm</primary></indexterm>
|
---|
| 1031 | <indexterm><primary>uppercase</primary></indexterm>
|
---|
| 1032 | <indexterm><primary>KDC</primary></indexterm>
|
---|
| 1033 | The realm must be in uppercase or you will get a <quote><errorname>Cannot find KDC for
|
---|
| 1034 | requested realm while getting initial credentials</errorname></quote> error (Kerberos
|
---|
| 1035 | is case-sensitive!).
|
---|
| 1036 | </para></note>
|
---|
| 1037 |
|
---|
| 1038 | <note><para>
|
---|
| 1039 | <indexterm><primary>synchronize</primary></indexterm>
|
---|
| 1040 | <indexterm><primary>credentials</primary></indexterm>
|
---|
| 1041 | <indexterm><primary>time difference</primary></indexterm>
|
---|
| 1042 | <indexterm><primary>clock skew</primary></indexterm>
|
---|
| 1043 | Time between the two servers must be synchronized. You will get a <quote><errorname>kinit(v5): Clock skew too
|
---|
| 1044 | great while getting initial credentials</errorname></quote> if the time difference (clock skew) is more than five minutes.
|
---|
| 1045 | </para></note>
|
---|
| 1046 |
|
---|
| 1047 | <para>
|
---|
| 1048 | <indexterm><primary>clock skew</primary></indexterm>
|
---|
| 1049 | <indexterm><primary>Kerberos</primary></indexterm>
|
---|
| 1050 | Clock skew limits are configurable in the Kerberos protocols. The default setting is five minutes.
|
---|
| 1051 | </para>
|
---|
| 1052 |
|
---|
| 1053 | <para>
|
---|
| 1054 | <indexterm><primary>DNS</primary></indexterm>
|
---|
| 1055 | <indexterm><primary>KDC</primary></indexterm>
|
---|
| 1056 | <indexterm><primary>hostname</primary></indexterm>
|
---|
| 1057 | <indexterm><primary>realm</primary></indexterm>
|
---|
| 1058 | You also must ensure that you can do a reverse DNS lookup on the IP address of your KDC. Also, the name that
|
---|
| 1059 | this reverse lookup maps to must either be the NetBIOS name of the KDC (i.e., the hostname with no domain
|
---|
| 1060 | attached) or it can be the NetBIOS name followed by the realm.
|
---|
| 1061 | </para>
|
---|
| 1062 |
|
---|
| 1063 | <para>
|
---|
| 1064 | <indexterm><primary>/etc/hosts</primary></indexterm>
|
---|
| 1065 | <indexterm><primary>KDC</primary></indexterm>
|
---|
| 1066 | <indexterm><primary>realm</primary></indexterm>
|
---|
| 1067 | The easiest way to ensure you get this right is to add a <filename>/etc/hosts</filename> entry mapping the IP
|
---|
| 1068 | address of your KDC to its NetBIOS name. If you do not get this correct, then you will get a <errorname>local
|
---|
| 1069 | error</errorname> when you try to join the realm.
|
---|
| 1070 | </para>
|
---|
| 1071 |
|
---|
| 1072 | <para>
|
---|
| 1073 | <indexterm><primary>Kerberos</primary></indexterm>
|
---|
| 1074 | <indexterm><primary>Create the Computer Account</primary></indexterm>
|
---|
| 1075 | <indexterm><primary>Testing Server Setup</primary></indexterm>
|
---|
| 1076 | <indexterm><primary></primary></indexterm>
|
---|
| 1077 | If all you want is Kerberos support in &smbclient;, then you can skip directly to <link
|
---|
| 1078 | linkend="ads-test-smbclient">Testing with &smbclient;</link> now. <link
|
---|
| 1079 | linkend="ads-create-machine-account">Create the Computer Account</link> and <link
|
---|
| 1080 | linkend="ads-test-server">Testing Server Setup</link> are needed only if you want Kerberos support for &smbd;
|
---|
| 1081 | and &winbindd;.
|
---|
| 1082 | </para>
|
---|
| 1083 |
|
---|
| 1084 | </sect2>
|
---|
| 1085 |
|
---|
| 1086 | <sect2 id="ads-create-machine-account">
|
---|
| 1087 | <title>Create the Computer Account</title>
|
---|
| 1088 |
|
---|
| 1089 | <para>
|
---|
| 1090 | <indexterm><primary>write permission</primary></indexterm>
|
---|
| 1091 | <indexterm><primary>Samba private directory</primary></indexterm>
|
---|
| 1092 | <indexterm><primary>Administrator account</primary></indexterm>
|
---|
| 1093 | <indexterm><primary>ADS</primary></indexterm>
|
---|
| 1094 | As a user who has write permission on the Samba private directory (usually root), run:
|
---|
| 1095 | <screen>
|
---|
| 1096 | &rootprompt; <userinput>net ads join -U Administrator%password</userinput>
|
---|
| 1097 | </screen>
|
---|
| 1098 | The Administrator account can be any account that has been designated in the ADS domain security settings with
|
---|
| 1099 | permission to add machines to the ADS domain. It is, of course, a good idea to use an account other than Administrator.
|
---|
| 1100 | On the UNIX/Linux system, this command must be executed by an account that has UID=0 (root).
|
---|
| 1101 | </para>
|
---|
| 1102 |
|
---|
| 1103 | <para>
|
---|
| 1104 | <indexterm><primary>ADS</primary></indexterm>
|
---|
| 1105 | <indexterm><primary>machine trust account</primary></indexterm>
|
---|
| 1106 | <indexterm><primary>organizational unit</primary></indexterm>
|
---|
| 1107 | <indexterm><primary>ADS manager</primary></indexterm>
|
---|
| 1108 | <indexterm><primary>kinit</primary></indexterm>
|
---|
| 1109 | <indexterm><primary>net</primary><secondary>ads</secondary><tertiary>join</tertiary></indexterm>
|
---|
| 1110 | When making a Windows client a member of an ADS domain within a complex organization, you
|
---|
| 1111 | may want to create the machine trust account within a particular organizational unit. Samba-3 permits
|
---|
| 1112 | this to be done using the following syntax:
|
---|
| 1113 | <screen>
|
---|
| 1114 | &rootprompt; <userinput>kinit Administrator@your.kerberos.REALM</userinput>
|
---|
| 1115 | &rootprompt; <userinput>net ads join createcomputer="organizational_unit"</userinput>
|
---|
| 1116 | </screen>
|
---|
| 1117 | Your ADS manager will be able to advise what should be specified for the "organizational_unit" parameter.
|
---|
| 1118 | </para>
|
---|
| 1119 |
|
---|
| 1120 | <para>
|
---|
| 1121 | <indexterm><primary>organizational directory</primary></indexterm>
|
---|
| 1122 | <indexterm><primary>machine trust account</primary></indexterm>
|
---|
| 1123 | <indexterm><primary>container</primary></indexterm>
|
---|
| 1124 | <indexterm><primary>ADS</primary></indexterm>
|
---|
| 1125 | For example, you may want to create the machine trust account in a container called <quote>Servers</quote>
|
---|
| 1126 | under the organizational directory <quote>Computers/BusinessUnit/Department,</quote> like this:
|
---|
| 1127 | <screen>
|
---|
| 1128 | &rootprompt; <userinput>net ads join "Computers/BusinessUnit/Department/Servers"</userinput>
|
---|
| 1129 | </screen>
|
---|
| 1130 | This command will place the Samba server machine trust account in the container
|
---|
| 1131 | <literal>Computers/BusinessUnit/Department/Servers</literal>. The container should exist in the ADS directory
|
---|
| 1132 | before executing this command. Please note that forward slashes must be used, because backslashes are both
|
---|
| 1133 | valid characters in an OU name and used as escapes for other characters. If you need a backslash in an OU
|
---|
| 1134 | name, it may need to be quadrupled to pass through the shell escape and ldap escape.
|
---|
| 1135 | </para>
|
---|
| 1136 |
|
---|
| 1137 | <sect3>
|
---|
| 1138 | <title>Possible Errors</title>
|
---|
| 1139 |
|
---|
| 1140 | <para>
|
---|
| 1141 | <variablelist>
|
---|
| 1142 | <varlistentry><term><errorname>ADS support not compiled in</errorname></term>
|
---|
| 1143 | <listitem><para>
|
---|
| 1144 | <indexterm><primary>config.cache</primary></indexterm>
|
---|
| 1145 | <indexterm><primary>Kerberos</primary></indexterm>
|
---|
| 1146 | <indexterm><primary>headers files</primary></indexterm>
|
---|
| 1147 | Samba must be reconfigured (remove config.cache) and recompiled (make clean all install) after the
|
---|
| 1148 | Kerberos libraries and headers files are installed.
|
---|
| 1149 | </para></listitem></varlistentry>
|
---|
| 1150 |
|
---|
| 1151 | <varlistentry><term><errorname>net ads join prompts for user name</errorname></term>
|
---|
| 1152 | <listitem><para>
|
---|
| 1153 | <indexterm><primary>kinit</primary></indexterm>
|
---|
| 1154 | <indexterm><primary>rights</primary></indexterm>
|
---|
| 1155 | You need to log in to the domain using <userinput>kinit
|
---|
| 1156 | <replaceable>USERNAME</replaceable>@<replaceable>REALM</replaceable></userinput>.
|
---|
| 1157 | <replaceable>USERNAME</replaceable> must be a user who has rights to add a machine to the domain.
|
---|
| 1158 | </para></listitem></varlistentry>
|
---|
| 1159 |
|
---|
| 1160 | <varlistentry><term>Unsupported encryption/or checksum types</term>
|
---|
| 1161 | <listitem><para>
|
---|
| 1162 | <indexterm><primary>/etc/krb5.conf</primary></indexterm>
|
---|
| 1163 | <indexterm><primary>unsupported encryption</primary></indexterm>
|
---|
| 1164 | <indexterm><primary>Kerberos</primary></indexterm>
|
---|
| 1165 | Make sure that the <filename>/etc/krb5.conf</filename> is correctly configured
|
---|
| 1166 | for the type and version of Kerberos installed on the system.
|
---|
| 1167 | </para></listitem></varlistentry>
|
---|
| 1168 | </variablelist>
|
---|
| 1169 | </para>
|
---|
| 1170 |
|
---|
| 1171 | </sect3>
|
---|
| 1172 |
|
---|
| 1173 | </sect2>
|
---|
| 1174 |
|
---|
| 1175 | <sect2 id="ads-test-server">
|
---|
| 1176 | <title>Testing Server Setup</title>
|
---|
| 1177 |
|
---|
| 1178 | <para>
|
---|
| 1179 | <indexterm><primary>successful join</primary></indexterm>
|
---|
| 1180 | <indexterm><primary>computer account</primary></indexterm>
|
---|
| 1181 | <indexterm><primary>ADS</primary></indexterm>
|
---|
| 1182 | If the join was successful, you will see a new computer account with the
|
---|
| 1183 | NetBIOS name of your Samba server in Active Directory (in the <quote>Computers</quote>
|
---|
| 1184 | folder under Users and Computers.
|
---|
| 1185 | </para>
|
---|
| 1186 |
|
---|
| 1187 | <para>
|
---|
| 1188 | <indexterm><primary>Windows 2000</primary></indexterm>
|
---|
| 1189 | <indexterm><primary>net</primary><secondary>use</secondary></indexterm>
|
---|
| 1190 | <indexterm><primary>DES-CBC-MD5</primary></indexterm>
|
---|
| 1191 | On a Windows 2000 client, try <userinput>net use * \\server\share</userinput>. You should
|
---|
| 1192 | be logged in with Kerberos without needing to know a password. If this fails, then run
|
---|
| 1193 | <userinput>klist tickets</userinput>. Did you get a ticket for the server? Does it have
|
---|
| 1194 | an encryption type of DES-CBC-MD5?
|
---|
| 1195 | </para>
|
---|
| 1196 |
|
---|
| 1197 | <note><para>
|
---|
| 1198 | <indexterm><primary>DES-CBC-MD5</primary></indexterm>
|
---|
| 1199 | <indexterm><primary>ARCFOUR-HMAC-MD5</primary></indexterm>
|
---|
| 1200 | <indexterm><primary>encoding</primary></indexterm>
|
---|
| 1201 | Samba can use both DES-CBC-MD5 encryption as well as ARCFOUR-HMAC-MD5 encoding.
|
---|
| 1202 | </para></note>
|
---|
| 1203 |
|
---|
| 1204 | </sect2>
|
---|
| 1205 |
|
---|
| 1206 | <sect2 id="ads-test-smbclient">
|
---|
| 1207 | <title>Testing with &smbclient;</title>
|
---|
| 1208 |
|
---|
| 1209 | <para>
|
---|
| 1210 | <indexterm><primary>smbclient</primary></indexterm>
|
---|
| 1211 | <indexterm><primary>Kerberos</primary></indexterm>
|
---|
| 1212 | <indexterm><primary>Kerberos authentication</primary></indexterm>
|
---|
| 1213 | On your Samba server try to log in to a Windows 2000 server or your Samba
|
---|
| 1214 | server using &smbclient; and Kerberos. Use &smbclient; as usual, but
|
---|
| 1215 | specify the <option>-k</option> option to choose Kerberos authentication.
|
---|
| 1216 | </para>
|
---|
| 1217 |
|
---|
| 1218 | </sect2>
|
---|
| 1219 |
|
---|
| 1220 | <sect2>
|
---|
| 1221 | <title>Notes</title>
|
---|
| 1222 |
|
---|
| 1223 | <para>
|
---|
| 1224 | <indexterm><primary>administrator password</primary></indexterm>
|
---|
| 1225 | <indexterm><primary>change password</primary></indexterm>
|
---|
| 1226 | <indexterm><primary>encryption types</primary></indexterm>
|
---|
| 1227 | You must change the administrator password at least once after installing a domain controller,
|
---|
| 1228 | to create the right encryption types.
|
---|
| 1229 | </para>
|
---|
| 1230 |
|
---|
| 1231 | <para>
|
---|
| 1232 | <indexterm><primary>_kerberos._udp</primary></indexterm>
|
---|
| 1233 | <indexterm><primary>_ldap._tcp</primary></indexterm>
|
---|
| 1234 | <indexterm><primary>default DNS setup</primary></indexterm>
|
---|
| 1235 | Windows 200x does not seem to create the <parameter>_kerberos._udp</parameter> and
|
---|
| 1236 | <parameter>_ldap._tcp</parameter> in the default DNS setup. Perhaps this will be fixed later in service packs.
|
---|
| 1237 | </para>
|
---|
| 1238 |
|
---|
| 1239 | </sect2>
|
---|
| 1240 | </sect1>
|
---|
| 1241 |
|
---|
| 1242 | <sect1>
|
---|
| 1243 | <title>Sharing User ID Mappings between Samba Domain Members</title>
|
---|
| 1244 |
|
---|
| 1245 | <para>
|
---|
| 1246 | <indexterm><primary>maps UNIX users and groups</primary></indexterm>
|
---|
| 1247 | <indexterm><primary>UID</primary></indexterm>
|
---|
| 1248 | <indexterm><primary>GID</primary></indexterm>
|
---|
| 1249 | <indexterm><primary>SID</primary></indexterm>
|
---|
| 1250 | Samba maps UNIX users and groups (identified by UIDs and GIDs) to Windows users and groups (identified by SIDs).
|
---|
| 1251 | These mappings are done by the <parameter>idmap</parameter> subsystem of Samba.
|
---|
| 1252 | </para>
|
---|
| 1253 |
|
---|
| 1254 | <para>
|
---|
| 1255 | <indexterm><primary>mappings</primary></indexterm>
|
---|
| 1256 | <indexterm><primary>CIFS</primary></indexterm>
|
---|
| 1257 | <indexterm><primary>NFS</primary></indexterm>
|
---|
| 1258 | In some cases it is useful to share these mappings between Samba domain members,
|
---|
| 1259 | so <emphasis>name->id</emphasis> mapping is identical on all machines.
|
---|
| 1260 | This may be needed in particular when sharing files over both CIFS and NFS.
|
---|
| 1261 | </para>
|
---|
| 1262 |
|
---|
| 1263 | <para>
|
---|
| 1264 | <indexterm><primary>LDAP</primary></indexterm>
|
---|
| 1265 | <indexterm><primary>ldap idmap suffix</primary></indexterm>
|
---|
| 1266 | To use the <emphasis>LDAP</emphasis> <parameter>ldap idmap suffix</parameter>, set:
|
---|
| 1267 | </para>
|
---|
| 1268 |
|
---|
| 1269 | <smbconfblock>
|
---|
| 1270 | <smbconfoption name="ldap idmap suffix">ou=Idmap</smbconfoption>
|
---|
| 1271 | </smbconfblock>
|
---|
| 1272 |
|
---|
| 1273 | <para>
|
---|
| 1274 | See the &smb.conf; man page entry for the <smbconfoption name="ldap idmap suffix"></smbconfoption>
|
---|
| 1275 | parameter for further information.
|
---|
| 1276 | </para>
|
---|
| 1277 |
|
---|
| 1278 | <para>
|
---|
| 1279 | <indexterm><primary>smbpasswd</primary></indexterm>
|
---|
| 1280 | <indexterm><primary>LDAP administrative password</primary></indexterm>
|
---|
| 1281 | <indexterm><primary>secrets.tdb</primary></indexterm>
|
---|
| 1282 | Do not forget to specify also the <smbconfoption name="ldap admin dn"/>
|
---|
| 1283 | and to make certain to set the LDAP administrative password into the <filename>secrets.tdb</filename> using:
|
---|
| 1284 | <screen>
|
---|
| 1285 | &rootprompt; smbpasswd -w ldap-admin-password
|
---|
| 1286 | </screen>
|
---|
| 1287 | In place of <literal>ldap-admin-password</literal>, substitute the LDAP administration password for your
|
---|
| 1288 | system.
|
---|
| 1289 | </para>
|
---|
| 1290 |
|
---|
| 1291 | </sect1>
|
---|
| 1292 |
|
---|
| 1293 | <sect1>
|
---|
| 1294 | <title>Common Errors</title>
|
---|
| 1295 |
|
---|
| 1296 | <para>
|
---|
| 1297 | <indexterm><primary>domain member</primary></indexterm>
|
---|
| 1298 | <indexterm><primary>machine trust accounts</primary></indexterm>
|
---|
| 1299 | In the process of adding/deleting/re-adding domain member machine trust accounts, there are
|
---|
| 1300 | many traps for the unwary player and many <quote>little</quote> things that can go wrong.
|
---|
| 1301 | It is particularly interesting how often subscribers on the Samba mailing list have concluded
|
---|
| 1302 | after repeated failed attempts to add a machine account that it is necessary to <quote>reinstall</quote>
|
---|
| 1303 | MS Windows on the machine. In truth, it is seldom necessary to reinstall because of this type
|
---|
| 1304 | of problem. The real solution is often quite simple, and with an understanding of how MS Windows
|
---|
| 1305 | networking functions, it is easy to overcome.
|
---|
| 1306 | </para>
|
---|
| 1307 |
|
---|
| 1308 | <sect2>
|
---|
| 1309 | <title>Cannot Add Machine Back to Domain</title>
|
---|
| 1310 |
|
---|
| 1311 | <para>
|
---|
| 1312 | <indexterm><primary>machine trust account</primary></indexterm>
|
---|
| 1313 | <indexterm><primary>already exists</primary></indexterm>
|
---|
| 1314 | <quote>A Windows workstation was reinstalled. The original domain machine trust
|
---|
| 1315 | account was deleted and added immediately. The workstation will not join the domain if I use
|
---|
| 1316 | the same machine name. Attempts to add the machine fail with a message that the machine already
|
---|
| 1317 | exists on the network &smbmdash; I know it does not. Why is this failing?</quote>
|
---|
| 1318 | </para>
|
---|
| 1319 |
|
---|
| 1320 | <para>
|
---|
| 1321 | <indexterm><primary>NetBIOS name cache</primary></indexterm>
|
---|
| 1322 | <indexterm><primary>nbtstat</primary></indexterm>
|
---|
| 1323 | The original name is still in the NetBIOS name cache and must expire after machine account
|
---|
| 1324 | deletion before adding that same name as a domain member again. The best advice is to delete
|
---|
| 1325 | the old account and then add the machine with a new name. Alternately, the name cache can be flushed and
|
---|
| 1326 | reloaded with current data using the <command>nbtstat</command> command on the Windows client:
|
---|
| 1327 | <screen>
|
---|
| 1328 | &dosprompt; nbtstat -R
|
---|
| 1329 | </screen>
|
---|
| 1330 | </para>
|
---|
| 1331 |
|
---|
| 1332 | </sect2>
|
---|
| 1333 |
|
---|
| 1334 | <sect2>
|
---|
| 1335 | <title>Adding Machine to Domain Fails</title>
|
---|
| 1336 |
|
---|
| 1337 | <para>
|
---|
| 1338 | <indexterm><primary>PDC</primary></indexterm>
|
---|
| 1339 | <indexterm><primary>fails</primary></indexterm>
|
---|
| 1340 | <quote>Adding a Windows 200x or XP Professional machine to the Samba PDC Domain fails with a
|
---|
| 1341 | message that says, <errorname>"The machine could not be added at this time, there is a network problem.
|
---|
| 1342 | Please try again later."</errorname> Why?</quote>
|
---|
| 1343 | </para>
|
---|
| 1344 |
|
---|
| 1345 | <para>
|
---|
| 1346 | <indexterm><primary>check logs</primary></indexterm>
|
---|
| 1347 | You should check that there is an <smbconfoption name="add machine script"/> in your &smb.conf;
|
---|
| 1348 | file. If there is not, please add one that is appropriate for your OS platform. If a script
|
---|
| 1349 | has been defined, you will need to debug its operation. Increase the <smbconfoption name="log level"></smbconfoption>
|
---|
| 1350 | in the &smb.conf; file to level 10, then try to rejoin the domain. Check the logs to see which
|
---|
| 1351 | operation is failing.
|
---|
| 1352 | </para>
|
---|
| 1353 |
|
---|
| 1354 | <para>
|
---|
| 1355 | Possible causes include:
|
---|
| 1356 | </para>
|
---|
| 1357 |
|
---|
| 1358 | <itemizedlist>
|
---|
| 1359 | <listitem><para>
|
---|
| 1360 | <indexterm><primary>script</primary></indexterm>
|
---|
| 1361 | <indexterm><primary>path specified</primary></indexterm>
|
---|
| 1362 | The script does not actually exist, or could not be located in the path specified.
|
---|
| 1363 | </para>
|
---|
| 1364 |
|
---|
| 1365 | <para>
|
---|
| 1366 | <indexterm><primary>UNIX system account</primary></indexterm>
|
---|
| 1367 | <indexterm><primary>Samba SAM account</primary></indexterm>
|
---|
| 1368 | <emphasis>Corrective action:</emphasis> Fix it. Make sure when run manually
|
---|
| 1369 | that the script will add both the UNIX system account and the Samba SAM account.
|
---|
| 1370 | </para></listitem>
|
---|
| 1371 |
|
---|
| 1372 | <listitem><para>
|
---|
| 1373 | <indexterm><primary>UNIX system account</primary></indexterm>
|
---|
| 1374 | <indexterm><primary>/etc/passwd</primary></indexterm>
|
---|
| 1375 | The machine could not be added to the UNIX system accounts file <filename>/etc/passwd</filename>.
|
---|
| 1376 | </para>
|
---|
| 1377 |
|
---|
| 1378 | <para>
|
---|
| 1379 | <indexterm><primary>legal UNIX system account name</primary></indexterm>
|
---|
| 1380 | <indexterm><primary>uppercase</primary></indexterm>
|
---|
| 1381 | <emphasis>Corrective action:</emphasis> Check that the machine name is a legal UNIX
|
---|
| 1382 | system account name. If the UNIX utility <command>useradd</command> is called,
|
---|
| 1383 | then make sure that the machine name you are trying to add can be added using this
|
---|
| 1384 | tool. <command>Useradd</command> on some systems will not allow any uppercase characters
|
---|
| 1385 | nor will it allow spaces in the name.
|
---|
| 1386 | </para></listitem>
|
---|
| 1387 | </itemizedlist>
|
---|
| 1388 |
|
---|
| 1389 | <para>
|
---|
| 1390 | <indexterm><primary>backend database</primary></indexterm>
|
---|
| 1391 | <indexterm><primary>UNIX system account</primary></indexterm>
|
---|
| 1392 | <indexterm><primary>Samba backend database</primary></indexterm>
|
---|
| 1393 | The <smbconfoption name="add machine script"/> does not create the
|
---|
| 1394 | machine account in the Samba backend database; it is there only to create a UNIX system
|
---|
| 1395 | account to which the Samba backend database account can be mapped.
|
---|
| 1396 | </para>
|
---|
| 1397 |
|
---|
| 1398 | </sect2>
|
---|
| 1399 |
|
---|
| 1400 | <sect2>
|
---|
| 1401 | <title>I Can't Join a Windows 2003 PDC</title>
|
---|
| 1402 |
|
---|
| 1403 | <para>
|
---|
| 1404 | <indexterm><primary>SMB signing</primary></indexterm>
|
---|
| 1405 | <indexterm><primary>SMB</primary></indexterm>
|
---|
| 1406 | <indexterm><primary>Windows 2003</primary></indexterm>
|
---|
| 1407 | <indexterm><primary>SMB/CIFS</primary></indexterm>
|
---|
| 1408 | Windows 2003 requires SMB signing. Client-side SMB signing has been implemented in Samba-3.0.
|
---|
| 1409 | Set <smbconfoption name="client use spnego">yes</smbconfoption> when communicating
|
---|
| 1410 | with a Windows 2003 server. This will not interfere with other Windows clients that do not
|
---|
| 1411 | support the more advanced security features of Windows 2003 because the client will simply
|
---|
| 1412 | negotiate a protocol that both it and the server suppport. This is a well-known fall-back facility
|
---|
| 1413 | that is built into the SMB/CIFS protocols.
|
---|
| 1414 | </para>
|
---|
| 1415 |
|
---|
| 1416 | </sect2>
|
---|
| 1417 |
|
---|
| 1418 | </sect1>
|
---|
| 1419 | </chapter>
|
---|