Publishers of technology books, eBooks, and videos for creative people

Home > Articles > Apple > Operating Systems

Accessing an Active Directory Service with OS X Directory Services v10.5

  • Print
  • + Share This
It's easy to integrate Mac OS X into an Active Directory environment. This chapter shows you how.
This chapter is from the book

Active Directory is Microsoft’s directory services solution that provides LDAP and Kerberos services for identification and authentication. Many organizations with Windows computers use Active Directory because it provides these features:

  • Security and policy management for Windows computers
  • Tight integration with popular application servers such as Microsoft Exchange and Microsoft SQL Server
  • High availability, with the ability to place multiple replica servers across geographic locations in a multimaster configuration

It is easy to integrate Mac OS X into an Active Directory environment. Although Mac OS X computers can access directory information provided by Active Directory via the LDAPv3 plug-in, you should use the Active Directory plug-in, which provides the following capabilities:

  • Creating a computer account for secure communication with Active Directory services
  • Configuring mappings of Open Directory objects and attributes to Active Directory objects and attributes
  • Setting up the Kerberos environment for seamless integration with Active Directory
  • Enabling SMB packet signing and packet encryption
  • Support of Active Directory password policies
  • Support of Active Directory Sites, which directs Windows and Mac OS X client computers to the most appropriate services based on their IP network
  • Caching information from Active Directory services so that Mac OS X computers can use the information even if they are not connected to the network

In this chapter you will learn how to use both Directory Utility and the command line to bind to Active Directory, and to modify the default settings for the Active Directory plug-in to enable login and access to a network home folder. You will learn how to overcome problems with your initial bind to Active Directory, and you will learn troubleshooting techniques for login problems with an Active Directory user account.

Configuring Mac OS X to Log In Using Active Directory

You can either use Directory Utility or dsconfigad to bind a Mac OS X client computer to an Active Directory domain. dsconfigad allows you to configure some features that Directory Utility does not expose, but if you use dsconfigad you need to take some additional steps (such as enabling the Active Directory plug-in and adding the Active Directory node to your search paths). Before you can bind with either method, however, you need to know a few things about your Active Directory service.

Understanding Active Directory Terms

When you bind to Active Directory, you need to know the domain name and you must have the credentials of a user who has authorization to join computers to Active Directory.

A domain is the building block of Active Directory; it is a collection of directory objects such as users, groups, and computers. An Active Directory domain requires a domain controller, which can be a computer running any version of Windows Server 2000 through Windows Server 2008. A domain is identified by its DNS namespace; in this book the example server windows-server.pretendco.com hosts the domain pretendco.com. Active Directory relies on DNS records generated by a DNS service that is tightly integrated with Active Directory, so you should configure Mac OS X to use the DNS service associated with the Active Directory domain before attempting to bind.

A tree is one or more domains in a contiguous name space. A forest is a set of domain trees that have a common schema and global catalog, which is used to describe a best-effort collection of all the resources in a domain. The global catalog is commonly used for email address lookups.

Like standard Windows clients, Mac OS X binds to only one Active Directory domain at a time.

Understanding the Active Directory Computer Object

When you bind a Mac OS X client computer to Active Directory, you use or create a computer object for Mac OS X. Just like user objects, computer objects are used for identification, authentication, and authorization. The computer object has rights to do certain things, such as to bind and update its own DNS record.

When you bind a Mac OS X computer to Active Directory, Mac OS X uses the user credentials you supply to set up a computer account and password. This password is a shared secret between your Mac OS X computer and the Active Directory service. Your Mac OS X computer uses this password to authenticate to Active Directory and set up a secure channel to enable your Mac OS X computer to communicate with Active Directory. The password is randomly generated, and is unrelated to the user account you use to perform the bind. For more information, see “Confirming Your Active Directory Plug-in and the Samba Service Are Using the Same Active Directory Computer Password” in Chapter 8.

If you delete the computer object or reset the computer object password in Active Directory, you need to rebind Mac OS X to Active Directory in order for Mac OS X to access Active Directory.

When you use Directory Utility to bind to Active Directory, Directory Utility suggests a computer ID to use for the name of the Active Directory computer object. This computer ID is based on the computer name or Bonjour name that you set in the Sharing pane of System Preferences. If your computer name is longer than 15 characters, you may experience errors when binding to Active Directory. Also note that Directory Utility may replace any instance of a dash (-) with an underscore (_) and change capital letters to lowercase in the suggested computer ID. You should use the same Mac OS X computer name and Active Directory computer name to help keep track of computer names, unless you have a good reason not to do so.

Specifying a User to Create the Computer Object

When binding to Active Directory, you need to supply the credentials of an Active Directory administrator or user who is authorized to create computer objects. By default, you can use a regular active directory user to bind to Active Directory ten times, but after that you will encounter an error. “Troubleshooting Binding Issues,” later in this chapter, offers some solutions for this problem.

Binding to Active Directory with Directory Utility

The simplest way to bind Mac OS X to Active Directory is to use Directory Utility with all the default settings in place. The steps are as follows:

  1. Quit Directory Utility if it is open.
  2. Use the Sharing preference in System Preferences to set your computer name to be the name of the computer object you want to create for binding to Active Directory.
  3. Open Directory Utility.
  4. If necessary, click the lock in the lower-left corner and provide credentials for a local administrator.
  5. Click the Add (+) button in the lower-left corner.
  6. Click the “Add a new directory of type” pop-up menu and choose Active Directory.
  7. In the Active Directory Domain field, type the name of the Active Directory domain—in other words, “pretendco.com” not “windows-server.pretendco.com.”

    This can be any domain in the forest, but remember that the domain name is the DNS namespace of the domain, not the DNS name of the domain controller.

  8. In the Computer ID field, type the name of the Active Directory computer object to use for this Mac OS X computer.
  9. In the AD Administrator Username field, type the name of an Active Directory administrator or the name of an Active Directory user who can join a computer to the domain.
  10. In the AD Administrator Password field, type the password for the user you specified in step 9.
  11. Click OK.

Mac OS X attempts to bind to Active Directory with the default settings.

Logging In as an Active Directory User on Mac OS X

Once you bind your Mac OS X computer to Active Directory, you can log in with your Active Directory user account at your Mac OS X login window.

The following figure shows the default desktop for an Active Directory that logs in to a Mac OS X computer. Note that the home folder is located on the startup disk (Option-clicking the name of a folder in the title bar of a Finder window reveals the path to the folder). The user launched the Kerberos application (in /System/Library/CoreServices), which shows that Mac OS X obtained a Kerberos ticket-granting ticket (TGT) for the user as part of the login process.

Specifying a User Name at the Login Screen

By default the Mac OS X login window displays the names of local user accounts and Other to allow you to specify a user name from a different directory node, as shown in this figure.

When you choose Other, the login window reveals a field for Name and Password.

At the Mac OS X login window, you can use many combinations of the user identifiers “Full name,” “User login name,” or “User login name (Pre-Windows 2000)” from Active Directory, along with other elements of the domain name. Consider the figure at left, which shows a user created with Active Directory tools.

You can log in with any of the following names in the Name field in Mac OS X’s login window:

  • schoun-regan
  • sregan
  • Schoun Regan
  • schoun-regan@pretendco.com
  • sregan@pretendco.com
  • Schoun Regan@pretendco.com
  • PRETENDCO\schoun-regan
  • PRETENDCO\sregan
  • PRETENDCO\Schoun Regan

Understanding the Home Folder Default Behavior

When you log in with a user account for Active Directory, by default Mac OS X creates a home folder for the user on the startup disk in /Users/usershortname.

If a directory already exists with that name, Mac OS X will not create a new home folder. You may experience unexpected results because the Active Directory user does not have write permissions to the home folder.

See “Transitioning from a Local User to an Active Directory User,” later in this chapter, if that is appropriate for your situation.

Understanding Home Folder Synchronization

The default settings do not configure Mac OS X to synchronize the local home folder with a network home folder. If you log in as the same Active Directory user on multiple Mac OS X computers that are configured with the default settings for the Active Directory plug-in, you will have a different home folder on each computer, and the contents will not be synchronized. To prevent this situation you can do the following:

  • Configure mobile accounts and home folder synchronization. See “Understanding Mobile Accounts” for more on this.
  • Deselect the option to force the creation of a local home folder, and use Active Directory tools to assign a network home folder for the Active Directory user account. See “Specifying a Network Home Folder” for details.

Changing the Active Directory Plug-in Default Settings

The Active Directory plug-in’s default settings might not meet your needs. For instance, you may want to not force local home folders on the startup disk, or you may want to use custom mappings or to specify Active Directory groups to members that have local administrative access on your Mac OS X computer. In this section you will learn how to use Directory Utility and the command line to configure some of the advanced options of the Active Directory plug-in.

Follow these steps to use Directory Utility to access Active Directory Advanced Options:

  1. Open Directory Utility. If necessary, click the lock in the lower-left corner and provide credentials for a local administrator. If necessary, click the Show Advanced Settings button in the lower-right corner of the Directory Utility window.
  2. Click Services in the toolbar.
  3. Make sure the Active Directory service checkbox is selected.
  4. Select the Active Directory service.
  5. Click the Edit button edit.jpg in the lower-left corner of the Directory Utility window.
  6. Click the disclosure triangle next to Show Advanced Options.

Exploring the “User Experience” Advanced Options Pane

The default pane for Directory Utility’s Advanced Options is the User Experience pane, shown in the figure to the left.

The first option, “Create mobile account at login,” is disabled by default. A mobile account caches user credentials locally so they can be used when the computer is not connected to the directory node. See “Understanding Mobile Accounts” for more details about mobile accounts and synchronized home folders.

The “Force local home directory on startup disk” option is enabled by default. If you deselect this option, and an Active Directory user who does not have a network home folder defined logs in, Mac OS X creates a local home folder in /Users/username for the user when the user logs in (unless a local home folder already exists).

Specifying a Network Home Folder

There are two possible ways to specify a network home folder:

  • If your Active Directory schema has been extended to support Apple objects and attributes, map dsAttrTypeStandard:HomeDirectory to an extended attribute in your user record, and use Workgroup Manager to specify the home folder.
  • Enable the option “Use UNC path from Active Directory to derive network home location” and use Active Directory tools to populate the Home Folder field for an Active Directory user. The Active Directory plug-in maps dsAttrTypeStandard:SMBHomeDirectory to Active Directory’s dsAttrTypeNative:homeDirectory. You can also specify this option with the -uncpath option of dsconfigad.

You must specify which file-sharing protocol to use: SMB or AFP (Apple Filing Protocol). SMB is the default setting, so it is easy to use Windows file services to host home folders for Active Directory users who log in to a Mac OS X computer.

New in Mac OS X v10.5 is full support for SMB packet signing, a security feature designed to prevent man-in-the-middle attacks, which is required by default on Windows Server 2003 SP1 and later. Many Windows Server administrators require client computers to use this option, which makes it impossible for computers using earlier versions of Mac OS X to access their SMB share points without installing third-party SMB client software.

AFP offers some advantages over SMB as a file service protocol for Mac OS X client computers: It is faster, native to Mac OS X, supports Time Machine and network Spotlight searching, has better auto-reconnect, and handles a wider range of file names in a mixed environment. Unfortunately, Windows servers do not offer AFP by default.

Although Windows Server 2000 and Windows Server 2003 can offer AFP via Services for Macintosh (SFM), the SFM version of AFP is not current. For example, SFM supports only 31 characters in a file name, which causes a problem when Mac OS X uses a long file name, such as ~/Library/Preferences/ByHost/com.apple.iCal.helper.0017f3e00523.plist. SFM is not recommended for Mac OS X network home folders. If you must use your Windows server for network home directories, consider running a third-party AFP file service, such as GroupLogic’s ExtremeZ-IP, on your Windows server.

You can use a Mac OS X Server to host network home folders for Active Directory users, whether they log in to Mac OS X computers or Windows computers. You can use Mac OS X Server’s AFP service for users who log in to Mac OS X computers, and Mac OS X Server’s SMB service for users who log in to Windows computers. Discourage users from simultaneously logging in as the same user simultaneously on Mac OS X and Windows computers, because if they edit the same file over two different protocols simultaneously, this could corrupt the file.

For more information about offering file services from a Mac OS X Server, see Chapter 10 of Mac OS X Advanced System Administration v10.5.

Logging In with a Windows Home Folder

If you use Active Directory tools to define a network home folder (dsAttrTypeNative:SMBHome) for the user, as shown in the figure to the left, Mac OS X mounts the network volume that contains that Active Directory home folder. Unless you specify otherwise, by default the Active Directory plug-in creates a local home folder on the startup disk, so Mac OS X mounts the Windows home folder but does not use it as the user’s home folder.

The network folder appears in the Dock, but the volume does not appear on the user’s desktop by default. The default preference for the Finder in Mac OS X v10.5 is to not display mounted network volumes on the desktop. To change this in the Finder, select Finder > Preferences and select the checkbox for “Connected servers.”

The next figure illustrates what the standard desktop looks like for an Active Directory user who has an Active Directory home folder defined. The user opened Finder preferences and enabled “Connected servers” so that the Windows share point appears on the desktop. Note also that the user’s home folder is located on the startup disk, which is the default setting for the Active Directory plug-in.

The figure below shows the desktop of an Active Directory user who has a Windows home folder set (dsAttrTypeStandard:SMBHome) and logs in to a Mac OS X computer that does not have the “force local home directory on startup disk” option enabled in the User Experience pane of the Active Directory plug-in.

Some things to note:

  • The home folder is not on the startup disk.
  • This user did not enable the option to show connected volumes on the desktop, so the volume containing the network home folder does not appear on the desktop.
  • The user launched the Kerberos application to confirm that Mac OS X obtained a TGT, then the user closed the main window of the Kerberos application. The icon for the Kerberos application displays how much time is remaining (in hours and minutes) in the validity of the TGT. The usual TGT lifetime is 10 hours; after that time, the user can reauthenticate to renew the TGT.
  • The question mark in the user’s Dock represents the user’s Documents folder, which has not yet been created. If the network home folder was hosted on a Mac OS X Server file service, Mac OS X Server would create the set of standard folders.

Changing User and Group Mappings

By default, the Active Directory plug-in generates a dsAttrTypeStandard:UniqueID for an Active Directory user record based on that user’s GUID attribute. The calculated UniqueID is unique across the domain, yet consistent across every Mac OS X computer in the domain. Likewise, the Active Directory plug-in generates a unique integer for each Active Directory group record as well. If you have extended your Active Directory schema, you can use the Mappings pane to access the appropriate attributes from the Active Directory user and group records.

Be forewarned that if you change the mappings, users may lose access to files that they previously owned or could access.

The Mappings pane, shown below, allows you to change the mappings for the following:

  • UID—dsAttrTypeStandard:UniqueID
  • User GID—dsAttrTypeStandard:PrimaryGroupID
  • Group GID—dsAttrTypeStandard:PrimaryGroupID

If the Active Directory schema were extended with Microsoft’s Services for UNIX, the following would hold:

  • Map UID to msSFU-30-Uid-Number
  • Map both user GID and group GID to msSFU-30-Gid-Number

If the Active Directory schema were extended with RFC2307 or Apple object classes and attributes:

  • Map UID to uidNumber
  • Map both user GID and group GID to gidNumber

Exploring the “Administrative” Advanced Options Pane

The “Prefer this domain server” option shown in the figure below specifies a domain controller to use for the initial bind.

Use the “Allow administration by” option to enable any user of the Active Directory groups that you specify to be in the group of local administrators for this Mac OS X computer. This is useful if you create an Active Directory group and populate it with users who should have the authority to administer the Mac OS X computers in your organization.

When you add Active Directory to your search path, Directory Utility adds the node Active Directory/All Domains to your search path by default. If you want to restrict the authentication search path to use specific domains only in your forest, follow these steps:

  1. Deselect the option “Allow authentication from any domain in the forest,” then click OK to dismiss the Active Directory services pane.
  2. Click Search Policy in the toolbar of Directory Utility, and then click the Authentication tab.
  3. Select Active Directory/All Domains, click the Remove (-) button in the lower-left corner of the Directory Utility window, and then click OK at the confirmation dialog.
  4. Click the Add (+) button in the lower-left corner of the Directory Utility window. Directory Utility displays a list of the domains in your forest. Select the domains that you want to enable in your authentication search path and click Add, as shown in this figure:
  5. Click Apply to activate the change.

Creating the Computer Account in a Custom Location

Unless you specify otherwise, the Active Directory plug-in creates computer objects in CN=Computers with the domain that you specified to join. Depending on the configuration of your Domain Controller, this may not be correct. For example, some administrators have a special container (CN) for all Mac OS X computers, while others use organizational units (OU).

Follow the steps listed below to tell the Active Directory plug-in to add the computer to the container CN=MacComputers,DC=pretendco,DC=com. Rather than binding from the default pane in Directory Utility, you will bind from within the Active Directory services pane, which offers different binding options.

  1. Open Directory Utility. If necessary, click the lock in the lower-left corner and provide credentials for a local administrator. If necessary, click the Show Advanced Settings button in the lower-right corner of the Directory Utility window.
  2. If your Mac OS X computer is already bound to Active Directory, you must first unbind. See “Unbinding from Active Directory” for instructions.
  3. Click Services in the toolbar.
  4. Make sure the Active Directory service checkbox is selected.
  5. Select the Active Directory service.
  6. Click the Edit button edit.jpg in the lower-left corner of the Directory Utility window.

    If you are not already bound to Active Directory, Directory Utility displays the dialog shown in the figure below. If you are already bound, you must first unbind in order to change the location of your computer account.

  7. In the Active Directory Domain field, type the Active Directory domain.
  8. In the Computer ID field, type the name of the Active Directory computer object to use for this Mac OS X computer.
  9. Click Bind.

    Directory Utility displays the authentication and Computer OU dialog shown in this figure:

  10. In the Username field, type the name of an Active Directory administrator or the name of an Active Directory user who has authority to join a computer to the domain.
  11. In the Password field, type the password for the user you specified in step 10.
  12. In the Computer OU field, type the custom container in which to create the computer object for this Mac OS X computer to use.
  13. Click OK to start the bind process, and then click OK to dismiss the Active Directory services pane. Quit Directory Utility.

Binding to Active Directory with dsconfigad

The dsconfigad command is particularly useful for scripting the process of binding to Active Directory, and it offers a way to bind with custom settings in one step. This command has drawbacks, however: It does not enable the plug-in, nor does it add the Active Directory node to the search paths. You must also use the defaults and dscl commands to accomplish those tasks.

To bind a computer to Active Directory with dsconfigad, collect the following information for the following dsconfigad options:

  • -a—Name of Active Directory computer object to use
  • -domain—Fully Qualified Domain Name (FQDN) of Active Directory domain to join
  • -u—Name of an Active Directory user who is authorized to add this computer to the domain
  • -p—The password for the Active Directory user
  • -lu—Name of a local administrator
  • -lp—The password for the local administrator

The commands listed below enable the Active Directory plug-in, bind to Active Directory, and add the Active Directory node to the authentication and contacts search paths:

  1. Use the defaults command to modify the settings of the file /Library/Preferences/DirectoryService/DirectoryService.plist:
    client17:~ cadmin$ sudo defaults write \
    
    /Library/Preferences/DirectoryService/DirectoryService \
    
    "Active Directory" Active
  2. Use dsconfigad to bind to Active Directory.
    client17:~ cadmin$ dsconfigad -a client17 \
    
    -domain pretendco.com \
    
    -u Administrator -p ADadminpw \
    
    -lu cadmin -lp cadmin
    
    Computer was successfully Added to Active Directory.
  3. For the authentication search path, use dscl to add "Active Directory/All Domains" to the custom search path (CSPSearchPath), and set the authentication search path to use CSPSearchPath:
    client17:~ cadmin$ sudo dscl /Search -create / SearchPolicy CSPSearchPath
    
    client17:~ cadmin$ sudo dscl /Search -append / CSPSearchPath "Active Directory/All
    Domains"
  4. For the contacts search path, use dscl to add "Active Directory/All Domains" to the custom search path (CSPSearchPath), and set the contacts search path to use CSPSearchPath:
    client17:~ cadmin$ sudo sudo dscl /Search/Contacts -create / SearchPolicy
    CSPSearchPath
    
    client17:~ cadmin$ sudo sudo dscl /Search/Contacts -append / CSPSearchPath "Active
    Directory/All Domains"
  5. Stop DirectoryService, which automatically starts up again with these new settings:
    client17:~ cadmin$ sudo killall DirectoryService
  6. Use dscl to confirm that the Active Directory node is in the search paths:
    client17:~ cadmin$ dscl /Search -read / CSPSearchPath SearchPolicy
    
    CSPSearchPath:
    
     /Local/Default
    
     /BSD/local
    
     Active Directory/All Domains
    
    SearchPolicy: dsAttrTypeStandard:CSPSearchPath
    
    client17:~ cadmin$ dscl /Search/Contacts -read / CSPSearchPath SearchPolicy
    
    CSPSearchPath:
    
     /Local/Default
    
     /BSD/local
    
     Active Directory/All Domains
    
    SearchPolicy: dsAttrTypeStandard:CSPSearchPath
  7. Use id to confirm that Open Directory knows about an Active Directory user.

    In this example, the user aduser1 is an Active Directory user object. The -p option makes the output human readable:

    client17:~ cadmin$ id -p aduser1
    
    uid aduser1
    
    groups	     AD\domain users

    If you issue the id command after binding and the result is no such user, wait a few seconds and then try again.

Using Configuration Options Available Only with dsconfigad

dsconfigad offers much of the same functionality that Directory Utility offers: You can bind, unbind, set configuration options, and show the status of a bind. In addition, dsconfigad offers some functionality that Directory Utility does not offer, such as the following:

  • -packetsign <disable | allow | require>—This supports packet signing options for both SMB and LDAP. SMB signing is required by default on Windows Server 2003 SP1 and later. This caused much frustration with earlier versions of Mac OS X. The default is to allow packet signing, a new feature in Mac OS X v10.5.

  • -packetencrypt <disable | allow | require>—This supports packet encryption options for both SMB and LDAP. The default is to allow packet encryption, which is a new feature in Mac OS X v10.5.

  • -namespace <forest | domain>—The forest option enables a user to log in even if there is another user account with an identical user name in the forest. Be forewarned that if you specify forest, the Active Directory plug-in calculates each Active Directory user’s local home folder as /Users/DOMAIN\username instead of /Users/username. Toggling the namespace setting after Active Directory users have already logged in can cause confusion as Active Directory users perceive the contents of their home folder to be missing. The default is domain.

  • -passinterval <days>—This specifies how often Mac OS X changes the Active Directory computer object password, measured in days. It is common for Active Directory administrators to use Active Directory tools to look for computers that have not recently changed their passwords. The default is for Mac OS X to change its computer object password every 14 days.

Providing Managed Preferences to Active Directory Users

Using Active Directory Group Policy Objects is the traditional method for managing users, groups, and computers, but Mac OS X is not compatible with Group Policy Objects. If you want to apply Managed Preferences to Mac OS X users, you could do any of the following:

  • Augment Active Directory with an Open Directory server, and then make Active Directory users members of Open Directory groups to which you apply Managed Preferences. See “Using Workgroup Manager to Provide Managed Preferences in the Magic Triangle Configuration,” in Chapter 8, for instructions.
  • Use third-party software such as Thursby ADmitMac, Centrify DirectControl, or other similar user management utilities.
  • Extend your Active Directory schema to handle Apple-specific object classes and attributes, and then use Workgroup Manager to manage preferences for objects in the Active Directory domain. See Appendix B.
  • + Share This
  • 🔖 Save To Your Account