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