File and Print Services and Authentication
We're going to talk about file and print services before we talk about authentication, merely to acknowledge that it exists. We won't get heavily into it because it's pretty simple, and typical problems don't actually have much to do with the file and print services themselves. Problems getting to files and printers are usually related to protocol problems, name service problems, WINS problems, DNS problems, and authentication problems.
As Figure 12.1 shows, once service location and name resolution is finished, authentication is done, Windows file-sharing and print-sharing happens through a mechanism called server message block, or SMB. SMB exists in all versions of Windows, with some modifications that have to do with authentication, which we'll get to in a moment, and service location/name resolution, which has already been discussed. The SMB service (the "server" service in the Windows NT family) is what makes it possible to offer access to a Windows computer's files and printers. The SMB client program (the "workstation" service in the Windows NT family) on a client PC makes it possible to use SMB-offered files and printers on a server.
Figure 12.1 After a client makes a Windows Networking request, there is a very definite order of operations.
Authentication: Domains, Trees, and Forests, Oh My
Three types of authentication are performed on Windows networks:
Workgroup (password per-share)
NT Domain (username and password)
Active Directory (username and password)
There's nothing remarkable about workgroup sharing. If one share doesn't work, a good strategy is to create another and see if it works. If it does, you might have to re-create the share that isn't working.
NT domains and Active Directory are a little trickier, but they share a lot of common features. A notable one is that they implement the concept of "secure workstations;" that is, workstations that are explicitly allowed to join the domain by an administrator. In a world where physical access to a machine allows a user to decrypt passwords, there's a lot of debate about just how secure this is, but for our purposes, we just need to know a couple of things.
In particular, because part of the concept behind a secure NT workstation is the idea that you cannot access a given workstation until you've identified yourself, we as troubleshooters roll our eyes and think to ourselves, "Great, so I can't try to fix it if it's having trouble authenticating. That's just grand."
Don't sweat it if you can't get logged in; see "Non-Bootable OS Recovery Methods," later in this hour.
Because NT domains are not hierarchicalthat is, they are flat, rather than tree- structuredthere needs to be some way for a user on one NT domain to use the resources of another NT domain. The mechanism that allows users of one domain to use resources of another is called trust. Trust relationships can be a one- or two-way relationship.
Say that your boss gives you access to the file cabinet with everybody's salaries. He has placed trust in you that you won't blab everybody's salaries all over town. Similarly, you trust your boss to pay you on Friday. This is a two-way trust relationship. On the other hand, your small children must trust you to put food on the table. You do not trust the older child at the tender age of 6 years old to stay with his 2-year-old brother; his idea of fun would be to feed his dinner to the dog and to feed the dog food to his brother. This, of course, is a one-way trust relationship.
You make NT domain trust decisions in a similar fashion. If you need for folks in domain A to be able to access resources in domain B, but not vice versa, you establish a trust relationship between domains B and A. You would say that B trusts A.
If one person in one of your NT domains (domain B) cannot access a resource (a share or a printer) in another one of your NT domains (domain A), you probably want to check the trust relationship. Make sure that the domain providing the resource is trusting, and that the domain needing the resource is trusted.
If you are administering NT, you use USRMGR.EXE to generate explicit trusts (that is, trusts that you tell Windows about). Be aware that implicit trusts also exist: For example, your Windows NT Workstation implicitly trusts the Domain Controller once it joins the domain.
Here's one interesting note about how name resolution and service location can affect trust relationships and thus authentication: I was called in to troubleshoot a trust relationship that had apparently been set up correctly; but even though it had, the system administrator got the following message when he attempted to administer the remote domain:
There are no logon servers available to service the logon request
The key was in the fact that these were wide-area linked domains, and the two WINS servers were not replicating properly; once they were, the problem went away.
Active Directory: Hierarchical and Scalable Domains
I find that a lot of folks tend to be uncertain about exactly what Active Directory Services (AD) does, and if you're uncertain about its exact function, it's kind of hard to rule it in or out as a problem.
So, you already know that although AD needs DNS as a name resolution and service location mechanism, you know that DNS is a separate entity from the ADit in fact runs as a separate service on your server. Like any directory service, AD offers authentication services for more than one server in a hierarchical and distributed manner: That is, more than one server is capable of serving the database; and even within the AD namespace, sub-containers are used so that not all network objects are in the same place. Basically, AD is what you get when you hook up a bunch of NT-like domains to a DNS-like hierarchy.
A domain, like in the NT world, is a database that contains fields like usernames, passwords, and groups. In the AD world, these fields are called object classes; the sum of all these fields are called the schema of the directory. Unlike NT, the schema is not fixed; programs can add object classes to the database. The global catalog server is, among other things, responsible for the schema, which makes it the proper server to turn your gaze upon should you get schema errors.
A tree is a collection of domainsthe first of which is known as the root domain. The tree is known by the same DNS name as the root domain; other domains in the tree have child names, as shown in Figure 12.2. Domains in the same tree have a trust relationship, which works similarly to the NT 4 trusts I just discussed.
Figure 12.2 The hierarchical relationship between a forest, a tree, a domain, and a child domain.
For organizations that want to keep administration separate, separate trees are used; but, trust relationships are still allowed. A group of trees that have trust relationships between them are known as a forest.
In reality, many smaller organizations using AD use perhaps one or two servers, so they use one root domain living in one treewith no forest.
Microsoft does a pretty good job of offering a knowledgebase about common problems at support.microsoft.combut keep in mind, many AD problems are either resource related, infrastructure related, or, ultimately, design related. Whether you are trouble-shooting someone else's AD gone wild, or deploying a new system, following Microsoft's design guidelines is not only a good idea, it will likely save you many hours of trouble. One good design document is located at http://www.microsoft.com/technet/prodtechnol/ad/windows2000/plan/w2kdomar.asp.
Because AD not only supports, but integrates the LDAP (Lightweight Directory Access Protocol) into AD operations, many folks are starting to hook third-party devices to AD's LDAP, such as firewall appliances and other devices that require authentication. Pretty cool, but, alas, my experience shows that you will definitely want a troubleshooting tool to do thisthat is, the ability to tell a vendor, "Well, I'm able to use the LDAP with another tool, but your device is acting funny." Shazam! LDAP browsers come to your rescue. Plenty of LDAP browsers are out there, but my favorite is the Java-based LDAP Browser/Editor from the University of Chicago's Jarek Gawor. Check it out at http://www.iit.edu/~gawojar/ldap.
It's worth noting that AD does not allow an "anonymous bind" (where bind means "connect," in this context) to LDAP; you must specify a username and password. Most of the time, the mapping of your Active Directory name space is pretty easy; Figure 12.3 shows an LDAP browser attaching to the feldmonster.com domain, using the administrator login.
Figure 12.3 An LDAP browser attaching to the feldmonster.com domain using the administrator login.