[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="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>
|
---|