happy.html   [plain text]


<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter 6. Making Users Happy</title><link rel="stylesheet" href="samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.64.1"><link rel="home" href="index.html" title="Samba-3 by Example"><link rel="up" href="index.html" title="Samba-3 by Example"><link rel="previous" href="Big500users.html" title="Chapter 5. The 500-User Office"><link rel="next" href="2000users.html" title="Chapter 7. A Distributed 2000 User Network"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 6. Making Users Happy</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="Big500users.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="2000users.html">Next</a></td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="happy"></a>Chapter 6. Making Users Happy</h2></div></div><div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="happy.html#id2532028">Introduction</a></span></dt><dd><dl><dt><span class="sect2"><a href="happy.html#id2532129">Assignment Tasks</a></span></dt></dl></dd><dt><span class="sect1"><a href="happy.html#id2532281">Dissection and Discussion</a></span></dt><dd><dl><dt><span class="sect2"><a href="happy.html#id2532778">Technical Issues</a></span></dt><dt><span class="sect2"><a href="happy.html#id2533807">Political Issues</a></span></dt><dt><span class="sect2"><a href="happy.html#id2533822">Installation Check-List</a></span></dt></dl></dd><dt><span class="sect1"><a href="happy.html#id2533993">Samba Server Implementation</a></span></dt><dd><dl><dt><span class="sect2"><a href="happy.html#ldapsetup">OpenLDAP Server Configuration</a></span></dt><dt><span class="sect2"><a href="happy.html#ch6-PAM-NSS">PAM and NSS Client Configuration</a></span></dt><dt><span class="sect2"><a href="happy.html#ch6-massive">Samba-3 PDC Configuration</a></span></dt><dt><span class="sect2"><a href="happy.html#id2536102">Install and Configure Idealx SMB-LDAP Scripts</a></span></dt><dt><span class="sect2"><a href="happy.html#id2536453">LDAP Initialization and Creation of User and Group Accounts</a></span></dt><dt><span class="sect2"><a href="happy.html#ch6-ptrcfg">Printer Configuration</a></span></dt></dl></dd><dt><span class="sect1"><a href="happy.html#ch6-bldg1">Samba-3 BDC Configuration</a></span></dt><dt><span class="sect1"><a href="happy.html#id2540517">Miscellaneous Server Preparation Tasks</a></span></dt><dd><dl><dt><span class="sect2"><a href="happy.html#id2540544">Configuring Directory Share Point Roots</a></span></dt><dt><span class="sect2"><a href="happy.html#id2540640">Configuring Profile Directories</a></span></dt><dt><span class="sect2"><a href="happy.html#id2540891">Preparation of Logon Scripts</a></span></dt></dl></dd><dt><span class="sect1"><a href="happy.html#id2541004">Windows Client Configuration</a></span></dt><dd><dl><dt><span class="sect2"><a href="happy.html#redirfold">Configuration of Default Profile with Folder Redirection</a></span></dt><dt><span class="sect2"><a href="happy.html#id2541760">Configuration of MS Outlook to Relocate PST File</a></span></dt><dt><span class="sect2"><a href="happy.html#id2541837">Configure Delete Cached Profiles on Logout</a></span></dt><dt><span class="sect2"><a href="happy.html#id2542020">Uploading Printer Drivers to Samba Servers</a></span></dt><dt><span class="sect2"><a href="happy.html#id2542522">Software Installation</a></span></dt><dt><span class="sect2"><a href="happy.html#id2542557">Roll-out Image Creation</a></span></dt></dl></dd><dt><span class="sect1"><a href="happy.html#id2542592">Key Points Learned</a></span></dt><dt><span class="sect1"><a href="happy.html#id2542704">Questions and Answers</a></span></dt></dl></div><p>
	It has been said, &#8220;<span class="quote"><span class="emphasis"><em>A day that is without troubles is not fulfilling.  Rather, give 
	me a day of troubles well handled so that I can be content with my achievements.</em></span></span>&#8221;
	</p><p>
	In the world of computer networks, problems are as varied as the people who create them
	or experience them. The design of the network implemented in the last chapter may 
	create problems for some network users. The following lists some of the problems that
	may occur:
	</p><div class="variablelist"><dl><dt><span class="term">Users experiencing difficulty logging onto the network</span></dt><dd><p>
	    <a class="indexterm" name="id2531673"></a>
		When a Windows client logs onto the network, many data packets are exchanged
		between the client and the server that is providing the network logon services.
		Each request between the client and the server must complete within a specific
		time limit. This is one of the primary factors that govern the installation of
	    <a class="indexterm" name="id2531690"></a>
		multiple domain controllers (usually called secondary or backup controllers).
		As a rough rule, there should be one such backup controller for every
		30 to 150 clients. The actual limits are determined by network operational
		characteristics. 
		</p><p>
		If the domain controller provides only network logon services
		and all file and print activity is handled by Domain Member servers, one Domain	
		Controller per 150 clients on a single network segment may suffice. In any
		case, it is highly recommended to have a minimum of one Domain Controller (PDC or BDC)
		per network segment. It is better to have at least one BDC on the network
		segment that has a PDC. If the Domain Controller is also used as a file and
		print server, the number of clients it can service reliably is reduced
		and a common rule is not to exceed 30 machines (Windows workstations plus
		Domain Member servers) per Domain Controller.
		</p></dd><dt><span class="term">Slow logons and log-offs</span></dt><dd><p>
	    <a class="indexterm" name="id2531729"></a>
		Slow logons and log-offs may be caused by many factors that include:

			</p><div class="itemizedlist"><ul type="disc"><li><p><a class="indexterm" name="id2531743"></a><a class="indexterm" name="id2531759"></a>
				Excessive delays in the resolution of a NetBIOS name to its IP
				address. This may be observed when an overloaded domain controller 
				is also the WINS server. Another cause may be the failure to use
				a WINS server (this assumes that there is a single network segment).
				</p></li><li><p><a class="indexterm" name="id2531779"></a><a class="indexterm" name="id2531787"></a><a class="indexterm" name="id2531795"></a>
				Network traffic collisions due to overloading of the network
				segment  one short-term workaround to this may be to replace
				network HUBs with Ether-switches.
				</p></li><li><p><a class="indexterm" name="id2531813"></a>
				Defective networking hardware. Over the past few years, we have seen
				on the Samba mailing list a significant increase in the number of
				problems that were traced to a defective network interface controller,
				a defective HUB or Etherswitch, or defective cabling. In most cases,
				it was the erratic nature of the problem that ultimately pointed to
				the cause of the problem.
				</p></li><li><p><a class="indexterm" name="id2531835"></a><a class="indexterm" name="id2531847"></a>
				Excessively large roaming profiles. This type of problem is typically
				the result of poor user eduction, as well as poor network management.
				It can be avoided by users not storing huge quantities of email in
				MS Outlook PST files, as well as by not storing files on the desktop.
				These are old bad habits that require much discipline and vigilance
				on the part of network management.
				</p></li></ul></div><p>

		<font color="red">&lt;listitem&gt;<p><a class="indexterm" name="id2531877"></a>
				You should verify that the Windows XP WebClient service is not running.
				The use of the WebClient service has been implicated in many Windows
				networking related problems.
				</p>&lt;/listitem&gt;</font>

		</p></dd><dt><span class="term">Loss of access to network drives and printer resources</span></dt><dd><p>
		Loss of access to network resources during client operation may be caused by a number
		of factors including:
		</p><div class="itemizedlist"><ul type="disc"><li><p><a class="indexterm" name="id2531908"></a>
				Network overload (typically indicated by a high network collision rate)
				</p></li><li><p>
				Server overload
				</p></li><li><p><a class="indexterm" name="id2531930"></a>
				Timeout causing the client to close a connection that is in use, but has
				been latent (no traffic) for some time (5 minutes or more)
				</p></li><li><p><a class="indexterm" name="id2531948"></a>
				Defective networking hardware
				</p></li></ul></div><p><a class="indexterm" name="id2531965"></a>
		No matter what the cause, a sudden operational loss of access to network resources can
		result in BSOD (blue screen of death) situations that necessitate rebooting of the client
		workstation. In the case of a mild problem, retrying to access the network drive of printer
		may restore operations, but in any case this is a serious problem as it may lead to the next
		problem, data corruption.
		</p></dd><dt><span class="term">Potential data corruption</span></dt><dd><p><a class="indexterm" name="id2531993"></a>
		Data corruption is one of the most serious problems. It leads to uncertainty, anger, and 
		frustration, and generally precipitates immediate corrective demands. Management response
		to this type of problem may be rational, as well as highly irrational. There have been
		cases where management has fired network staff for permitting this situation to occur without 
		immediate correction. There have been situations where perfectly functional hardware was thrown 
		out and replaced, only to find the problem caused by a low-cost network hardware item. There 
		have been cases where server operating systems were replaced, or where Samba was updated, 
		only to later isolate the problem due to defective client software.
		</p></dd></dl></div><p>
	In this chapter, you can work through a number of measures that significantly arm you to
	anticipate and to combat network performance issues. You can work through complex and thorny
	methods to improve the reliability of your network environment, but be warned that all such steps
	demand the price of complexity.
	</p><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2532028"></a>Introduction</h2></div></div><div></div></div><p>
	Mr. Bob Jordan just opened an email from Christine that reads:
	</p><p>
	Bob,
	</p><div class="blockquote"><table border="0" width="100%" cellspacing="0" cellpadding="0" class="blockquote" summary="Block quote"><tr><td width="10%" valign="top"> </td><td width="80%" valign="top"><p>
	A few months ago we sat down to design the network. We discussed the challenges ahead and we all
	agreed to compromise our design to keep it simple. We knew there would be problems, but anticipated
	that we would have some time to resolve any issues that might be encountered.
	</p><p>
	As you now know we started off on the wrong foot. We have a lot of unhappy users. One of them
	resigned yesterday afternoon because she was under duress to complete some critical projects. She
	suffered a blue screen of death situation just as she was finishing four hours of intensive work, all
	of which was lost. She has a unique requirement that involves storing large files on her desktop.
	Mary's desktop profile is nearly 1 Gigabyte in size. As a result of her desktop configuration, it
	takes her nearly 15 minutes just to log onto her workstation. But that is not enough. Because all
	network logon traffic passes over the network links between our buildings, logging on may take
	three or four attempts due to blue screen problems associated with network timeouts.
	</p><p>
	A few of us worked to help her out of trouble. We convinced her to stay and promised to fully 
	resolve the difficulties she is facing. We have no choice. We must implement LDAP and set hard 
	limits on what our users can do with their desktops. If we do not do this, we face staff losses 
	that can surely do harm to our growth, as well as to staff morale. I am sure we can better deal 
	with the consequences of what we know we must do than we can with the unrest we have now.
	</p><p>
	Stan and I have discussed the current situation. We are resolved to help our users and protect
	the well being of Abmas. Please acknowledge this advice with consent to proceed as required to
	regain control of our vital IT operations.
	</p></td><td width="10%" valign="top"> </td></tr><tr><td colspan="2" align="right" valign="top">--<span class="attribution">Christine</span></td><td width="10%" valign="top"> </td></tr></table></div><p>
	</p><p><a class="indexterm" name="id2532090"></a><a class="indexterm" name="id2532097"></a>
	Every compromise has consequences. Having a large routed (i.e., multi-segment) network with only a
	single domain controller is a poor design that has obvious operational effects that may
	frustrate users. Here is Bob's reply:
	</p><div class="blockquote"><table border="0" width="100%" cellspacing="0" cellpadding="0" class="blockquote" summary="Block quote"><tr><td width="10%" valign="top"> </td><td width="80%" valign="top"><p>
	Christine, Your diligence and attention to detail are much valued. Stan and I fully support your
	proposals to resolve the issues. I am confident that your plans fully realized will significantly
	boost staff morale. Please go ahead with your plans. If you have any problems, please let me know.
	Please let Stan know what the estimated cost will be so I can approve the expense. Do not wait
	for approval; I appreciate the urgency.
	</p></td><td width="10%" valign="top"> </td></tr><tr><td colspan="2" align="right" valign="top">--<span class="attribution">Bob</span></td><td width="10%" valign="top"> </td></tr></table></div><p>
	</p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2532129"></a>Assignment Tasks</h3></div></div><div></div></div><p>
		The priority of assigned tasks in this chapter is:
		</p><div class="orderedlist"><ol type="1"><li><p><a class="indexterm" name="id2532148"></a><a class="indexterm" name="id2532159"></a><a class="indexterm" name="id2532167"></a><a class="indexterm" name="id2532174"></a><a class="indexterm" name="id2532182"></a>
	      Implement Backup Domain Controllers (BDCs) in each building. This involves
		a change from use of a <span class="emphasis"><em>tdbsam</em></span> backend that was used in the previous
		chapter, to use an LDAP-based backend.
			</p><p>
			You can implement a single central LDAP server for this purpose.
			</p></li><li><p><a class="indexterm" name="id2532206"></a><a class="indexterm" name="id2532214"></a><a class="indexterm" name="id2532222"></a><a class="indexterm" name="id2532230"></a>
			Rectify the problem of excessive logon times. This involves redirection of
			folders to network shares as well as modification of all user desktops to
			exclude the redirected folders from being loaded at login time. You can also
			create a new default profile that can be used for all new users.
			</p></li></ol></div><p><a class="indexterm" name="id2532251"></a>
		You configure a new MS Windows XP Professional Workstation disk image that you
		roll out to all desktop users. The instructions you have created are followed on a
		staging machine from which all changes can be carefully tested before inflicting them on
		your network users.
		</p><p><a class="indexterm" name="id2532266"></a>
		This is the last network example in which specific mention of printing is made. The example
		again makes use of the CUPS printing system.
		</p></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2532281"></a>Dissection and Discussion</h2></div></div><div></div></div><p><a class="indexterm" name="id2532288"></a><a class="indexterm" name="id2532296"></a><a class="indexterm" name="id2532304"></a>
	The implementation of Samba BDCs necessitates the installation and configuration of LDAP.
	For this site, you use OpenLDAP, the open source software LDAP server platform. Commercial
	LDAP servers in current use with Samba-3 include:
	</p><div class="itemizedlist"><a class="indexterm" name="id2532319"></a><ul type="disc"><li><p>Novell <a href="http://www.novell.com/products/edirectory/" target="_top">eDirectory.</a>
		eDirectory is being successfully used by some sites. Information on how to use eDirectory can be
		obtained from the Samba mailing lists or from Novell.</p></li><li><p><a class="indexterm" name="id2532343"></a>IBM 
		<a href="http://www-306.ibm.com/software/tivoli/products/directory-server/" target="_top">Tivoli Directory Server,</a>
		can be used to provide the Samba LDAP backend. Example schema files are provided in the Samba 
		source code tarball under the directory <tt class="filename">~samba/example/LDAP.</tt></p></li><li><p><a class="indexterm" name="id2532370"></a>Sun 
		<a href="http://www.sun.com/software/sunone/identity/index.html" target="_top">ONE Identity Server.</a>
		This product suite provides an LDAP server that can be used for Samba. Example schema files are 
		provided in the Samba source code tarball under the directory
	    <tt class="filename">~samba/example/LDAP.
		</tt></p></li></ul></div><p>
	A word of caution is fully in order. OpenLDAP is purely an LDAP server and unlike commercial
	offerings, it requires that you manually edit the server configuration files and manually
	initialize the LDAP directory database. OpenLDAP itself has only command line tools to
	help you to get OpenLDAP and Samba-3 running as required, albeit with some learning curve challenges.
	</p><p><a class="indexterm" name="id2532407"></a>
	For most sites, the deployment of Microsoft Active Directory from the shrink-wrapped installation is quite
	adequate. If you are migrating from Microsoft Active Directory, be
	warned that OpenLDAP does not include
	GUI-based directory management tools. Even a simple task such as adding users to the OpenLDAP database 
	requires an understanding of what you are doing, why you are doing it, and the tools that you must use.
	</p><p><a class="indexterm" name="id2532426"></a><a class="indexterm" name="id2532434"></a><a class="indexterm" name="id2532442"></a><a class="indexterm" name="id2532453"></a><a class="indexterm" name="id2532464"></a><a class="indexterm" name="id2532472"></a><a class="indexterm" name="id2532484"></a>
	When installed and configured, an OpenLDAP Identity Management backend for Samba functions well. 
	High availability operation may be obtained through directory replication/synchronization and 
	master/slave server configurations. OpenLDAP is a mature platform to host the organizational 
	directory infrastructure that can include all UNIX accounts, directories for electronic mail, and much more. 
	The price paid through learning how to design an LDAP directory schema in implementation and configuration 
	of management tools is well rewarded by performance and flexibility, and the freedom to manage directory
	contents with greater ability to back up, restore, and modify the directory than is generally possible
	with Microsoft Active Directory.
	</p><p><a class="indexterm" name="id2532524"></a><a class="indexterm" name="id2532535"></a><a class="indexterm" name="id2532543"></a><a class="indexterm" name="id2532551"></a>
	A comparison of OpenLDAP with Microsoft Active Directory does not do justice to either. OpenLDAP is an LDAP directory
	tool-set. Microsoft Active Directory Server is an implementation of an LDAP server that is largely pre-configured
	for a specific task orientation. It comes with a set of administrative tools that is entirely customized
	for the purpose of running MS Windows applications that include file and print services, Microsoft Exchange
	server, Microsoft SQL server, and more. The complexity of OpenLDAP is highly valued by the UNIX administrator
	who wants to built a custom directory solution. Microsoft Active Directory is a generic LDAP server that has
	been pre-configured for a specific task. Microsoft provides an application called 
	<a href="http://www.microsoft.com/windowsserver2003/adam/default.mspx" target="_top">
	MS ADAM</a> that provides more-generic LDAP services, yet it does not have the vanilla-like services
	of OpenLDAP.
	</p><p><a class="indexterm" name="id2532584"></a><a class="indexterm" name="id2532595"></a>
	You may wish to consider outsourcing the development of your OpenLDAP directory to an expert, particularly
	if you find the challenge of learning about LDAP directories, schemas, configuration, and management
	tools, and the creation of shell and Perl scripts a bit
	challenging. OpenLDAP can be easily customized, though it includes
	many ready-to-use schemas. Samba-3 provides an OpenLDAP schema file
	that is required for use as a passdb backend.
	</p><p>
	For those who are willing to brave the process of installing and configuring LDAP and Samba-3 interoperability,
	there are a few nice Web-based tools that may help you to manage your users and groups more effectively.
	The Web-based tools you might like to consider include: The <a href="http://lam.sourceforge.net/" target="_top">LDAP 
	Account Manager</a> (LAM), as well as the <a href="http://www.webmin.com" target="_top">Webmin</a>-based Idealx
	<a href="http://webmin.idealx.org/index.en.html" target="_top">CGI tools.</a>
	</p><p>
	Some additional LDAP tools should be mentioned. Every so often a Samba user reports using one of 
	these so it may be useful to include passing reference to them. 
	The first is <a href="http://biot.com/gq" target="_top">GQ</a>, a GTK-ased LDAP browser; 
	LDAP <a href="http://www.iit.edu/~gawojar/ldap/" target="_top">Browser/Editor,</a> 
	<a href="http://www.jxplorer.org/" target="_top">JXplorer</a> (by Computer Associates),
	and the last is called <a href="http://phpldapadmin.sourceforge.net/" target="_top">phpLDAPadmin.</a>
	</p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>
	The following prescriptive guidance is not an LDAP tutorial. The LDAP implementation expressly lacks
	security. No form of secure LDAP communications is attempted. The LDAP configuration information provided
	is considered to consist of the barest essentials only. You are strongly encouraged to learn more about
	LDAP before attempting to deploy it in a business-critical environment.
	</p></div><p>
	Information to help you get started with OpenLDAP is available from the
	<a href="http://www.openldap.org/pub/" target="_top">
	OpenLDAP Web Site.</a> Many people have found the book <a href="http://www.booksense.com/product/info.jsp?isbn=1565924916" target="_top">
	LDAP System Administration,</a> written by Jerry Carter, quite useful.
	</p><p><a class="indexterm" name="id2532704"></a><a class="indexterm" name="id2532712"></a><a class="indexterm" name="id2532723"></a><a class="indexterm" name="id2532731"></a>
	Mary's problems are due to two factors. First, the absence of a domain controller on the local network is the
	main cause of the errors that result in blue screen crashes. Second, Mary has a large profile that must
	be loaded over the wide-area network connection. This addition of BDCs on each network segment significantly
	improves overall network performance for most users, but this is not enough. You must gain control over
	user desktops, and this must be done in a way that wins their support and does not cause further loss of
	staff morale. The following procedures solve this problem.
	</p><p><a class="indexterm" name="id2532756"></a>
	There is also an opportunity to implement smart printing features. You add this to the Samba configuration
	so that future printer changes can be managed without need to change desktop configurations.
	</p><p>
	You add the ability to automatically download new printer drivers, even if they are not installed 
	in the default desktop profile. Only one example of printing configuration is given. It is assumed that
	you can extrapolate the principles and use this to install all printers that may be needed.
	</p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2532778"></a>Technical Issues</h3></div></div><div></div></div><p><a class="indexterm" name="id2532785"></a><a class="indexterm" name="id2532796"></a><a class="indexterm" name="id2532807"></a>
	The solution provided is a minimal approach to getting OpenLDAP running as an identity management directory
	server for UNIX system accounts as well as for Samba. From the OpenLDAP perspective, UNIX system
	accounts are stored Posix schema extensions. Samba provides its own schema to permit storage of account 
	attributes Samba needs. Samba-3 can use the LDAP backend to store:
	</p><div class="itemizedlist"><ul type="disc"><li><p>Windows Networking User Accounts</p></li><li><p>Windows NT Group Accounts</p></li><li><p>Mapping Information between UNIX Groups and Windows NT Groups</p></li><li><p>ID Mappings for SIDs to UIDs (also for foreign Domain SIDs)</p></li></ul></div><p><a class="indexterm" name="id2532849"></a><a class="indexterm" name="id2532857"></a><a class="indexterm" name="id2532865"></a><a class="indexterm" name="id2532873"></a><a class="indexterm" name="id2532881"></a><a class="indexterm" name="id2532889"></a><a class="indexterm" name="id2532900"></a><a class="indexterm" name="id2532908"></a><a class="indexterm" name="id2532915"></a>
	The use of LDAP with Samba-3 makes it necessary to store UNIX accounts as well as Windows Networking
	accounts in the LDAP backend. This implies the need to use the 
	<a href="http://www.padl.com/Contents/OpenSourceSoftware.html" target="_top">PADL LDAP tools.</a> The resolution 
	of the UNIX group name to its GID must be enabled from either the
	  <tt class="filename">/etc/group</tt> 
	or from the LDAP backend. This requires the use of the PADL <tt class="filename">nss_ldap</tt> toolset
	that integrates with the name service switcher (NSS). The same requirements exist for resolution
	of the UNIX username to the UID. The relationships are demonstrated in <a href="happy.html#ch6-LDAPdiag" title="Figure 6.1. The Interaction of LDAP, UNIX Posix Accounts and Samba Accounts">???</a>.
	</p><div class="figure"><a name="ch6-LDAPdiag"></a><p class="title"><b>Figure 6.1. The Interaction of LDAP, UNIX Posix Accounts and Samba Accounts</b></p><div class="mediaobject"><img src="images/UNIX-Samba-and-LDAP.png" width="270" alt="The Interaction of LDAP, UNIX Posix Accounts and Samba Accounts"></div></div><p><a class="indexterm" name="id2533005"></a><a class="indexterm" name="id2533013"></a>
	You configure OpenLDAP so that it is operational. Before deploying the OpenLDAP, you really
	ought to learn how to configure secure communications over LDAP so that sites security is not
	at risk. This is not covered in the following guidance.
	</p><p><a class="indexterm" name="id2533032"></a><a class="indexterm" name="id2533039"></a><a class="indexterm" name="id2533051"></a><a class="indexterm" name="id2533059"></a>
	When OpenLDAP has been made operative, you configure the Primary Domain Controller (PDC)
	called <tt class="constant">MASSIVE</tt>. You initialize the Samba
	  <tt class="filename">secrets.tdb<sub></sub></tt>
	file. Then you create the LDAP Interchange Format (LDIF) file from which the LDAP database
	can be initialized. You need to decide how best to create user and group accounts. A few
	hints are, of course, provided. You can also find on the enclosed
	  CD-ROM, in the <tt class="filename">Chap06</tt>
	directory, a few tools that help to manage user and group configuration.
	</p><p><a class="indexterm" name="id2533094"></a><a class="indexterm" name="id2533102"></a><a class="indexterm" name="id2533110"></a>
	In order to effect folder redirection and to add robustness to the implementation,
	create a network Default Profile. All network users workstations are configured to use
	the new profile. Roaming profiles will automatically be deleted from the workstation
	when the user logs off.
	</p><p><a class="indexterm" name="id2533126"></a>
	The profile is configured so that users cannot change the appearance
	of their desktop. This is known as a mandatory profile. You make certain that users
	are able to use their computers efficiently.
	</p><p><a class="indexterm" name="id2533141"></a>
	A network logon script is used to deliver flexible but consistent network drive
	connections.
	</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2533152"></a>Roaming Profile Background</h4></div></div><div></div></div><p>
		As XP roaming profiles grow, so does the amount of time it takes to log in and out.
		</p><p><a class="indexterm" name="id2533164"></a><a class="indexterm" name="id2533172"></a><a class="indexterm" name="id2533180"></a><a class="indexterm" name="id2533188"></a>
		An XP Roaming Profile consists of the <tt class="constant">HKEY_CURRENT_USER</tt> hive file
		<tt class="filename">NTUSER.DAT</tt> and a number of folders (My Documents, Application Data,
		Desktop, Start Menu, Templates, NetHood, Favorites, and so on).  When a user logs onto the 
		network with the default configuration of MS Windows NT/200x/XPP, all this data is 
		copied to the local machine. By default it is copied to the local machine, under the
		<tt class="filename">C:\Documents and Settings\%USERNAME%</tt> directory. While the user is logged in, 
		any changes made to any of these folders or to the <tt class="constant">HKEY_CURRENT_USER</tt> 
		branch of the registry are made to the local copy of the profile.  At logout the profile 
		data is copied back to the server. This behavior can be changed through appropriate
		registry changes and/or through changes to the Default User profile. In the latter case,
		it updates the registry with the values that are set in the
	    profile <tt class="filename">NTUSER.DAT</tt>
		file.
		</p><p>
		The first challenge is to reduce the amount of data that must be transferred to and 
		from the profile server as roaming profiles are processed.  This includes removing 
		all the shortcuts in the Recent directory, making sure the cache used by the web browser 
		is not being dumped into the <tt class="filename">Application Data</tt> folder, removing the 
		Java plug-in's cache (the .jpi_cache directory in the profile), as well as training the 
		user to not place large files on the Desktop and to use his mapped home directory for
		saving documents instead of the <tt class="filename">My Documents</tt> folder.
		</p><p><a class="indexterm" name="id2533269"></a>
		Using a folder other than <tt class="filename">My Documents</tt> is a nuisance for 
		some users since many applications use it by default.
		</p><p><a class="indexterm" name="id2533288"></a><a class="indexterm" name="id2533296"></a><a class="indexterm" name="id2533304"></a>
	    The secret to rapid loading of roaming profiles is to prevent unnecessary data from 
		being copied back and forth, without losing any functionality. This is not difficult; 
		it can be done by making changes to the Local Group Policy on each client as well 
		as changing some paths in each user's <tt class="filename">NTUSER.DAT</tt> hive.
		</p><p><a class="indexterm" name="id2533326"></a><a class="indexterm" name="id2533334"></a>
		Every user profile has their own <tt class="filename">NTUSER.DAT</tt> file. This means
		you need to edit every user's profile, unless a better method can be
		followed. Fortunately, with the right preparations, this is not difficult.
		It is possible to remove the <tt class="filename">NTUSER.DAT</tt> file from each
		user's profile. Then just create a Network Default Profile. Of course, it is
		necessary to copy all files from redirected folders to the network share to which
		they are redirected.
		</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="ch6-locgrppol"></a>The Local Group Policy</h4></div></div><div></div></div><p><a class="indexterm" name="id2533376"></a><a class="indexterm" name="id2533384"></a><a class="indexterm" name="id2533392"></a><a class="indexterm" name="id2533399"></a>
		Without an Active Directory PDC, you cannot take full advantage of Group Policy 
		Objects. However, you can still make changes to the Local Group Policy by using 
		the Group Policy editor (<span><b class="command">gpedit.msc</b></span>).
		</p><p>
		The <span class="emphasis"><em>Exclude directories in roaming profile</em></span> settings can 
		be found under 
		<span class="guimenu">User Configuration</span>-&gt;<span class="guimenuitem">Administrative Templates</span>-&gt;<span class="guimenuitem">System</span>-&gt;<span class="guimenuitem">User Profiles</span>. 
		By default this setting contains:
		&#8220;<span class="quote"><span class="emphasis"><em>Local Settings;Temporary Internet Files;History;Temp</em></span></span>&#8221;.
		</p><p>
		Simply add the folders you do not wish to be copied back and forth to this 
		semi-colon separated list. Note that this change must be made on all clients 
		that are using roaming profiles.
		</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2533470"></a>Profile Changes</h4></div></div><div></div></div><p><a class="indexterm" name="id2533477"></a><a class="indexterm" name="id2533485"></a>
		There are two changes that should be done to each user's profile. Move each of 
		the directories that you have excluded from being copied back and forth out of 
		the usual profile path. Modify each user's <tt class="filename">NTUSER.DAT</tt> file 
		to point to the new paths that are shared over the network, instead of the default
		path (<tt class="filename">C:\Documents and Settings\%USERNAME%</tt>).
		</p><p><a class="indexterm" name="id2533514"></a><a class="indexterm" name="id2533522"></a>
		The above modifies existing user profiles. So that newly created profiles have 
		these settings, you will need to modify the <tt class="filename">NTUSER.DAT</tt> in 
		the <tt class="filename">C:\Documents and Settings\Default User</tt> folder on each 
		client machine, changing the same registry keys.  You could do this by copying 
		<tt class="filename">NTUSER.DAT</tt> to a Linux box and using
	    <span><b class="command">regedt32</b></span>.
		The basic method is described under <a href="happy.html#redirfold" title="Configuration of Default Profile with Folder Redirection">???</a>.
		</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2533569"></a>Using a Network Default User Profile</h4></div></div><div></div></div><p><a class="indexterm" name="id2533576"></a><a class="indexterm" name="id2533584"></a>
		If you are using Samba as your PDC, you should create a file-share called 
		<tt class="constant">NETLOGON</tt> and within that create a directory called 
		<tt class="filename">Default User</tt>, which is a copy of the desired default user 
		configuration (including a copy of <tt class="filename">NTUSER.DAT</tt>.
		If this share exists and the <tt class="filename">Default User</tt> folder exists, 
		the first login from a new account pulls its configuration from it.
		See also: <a href="http://isg.ee.ethz.ch/tools/realmen/det/skel.en.html" target="_top">
		the Real Men Don't Click</a> Web site.
		</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2533630"></a>Installation of Printer Driver Auto-Download</h4></div></div><div></div></div><p><a class="indexterm" name="id2533637"></a><a class="indexterm" name="id2533648"></a><a class="indexterm" name="id2533656"></a>
		The subject of printing is quite topical. Printing problems run second place to name
		resolution issues today. So far in this book, you have experienced only what is generally
		known as &#8220;<span class="quote"><span class="emphasis"><em>dumb</em></span></span>&#8221; printing. Dumb printing is the arrangement where all drivers
		are manually installed on each client and the printing subsystems perform no filtering
		or intelligent processing. Dumb printing is easily understood. It usually works without
		many problems, but it has its limitations also. Dumb printing is better known as
		<span><b class="command">Raw Print Through</b></span> printing.
		</p><p><a class="indexterm" name="id2533687"></a><a class="indexterm" name="id2533699"></a>
		Samba permits the configuration of <span><b class="command">Smart</b></span> printing using the Microsoft
		Windows point-and-click (also called drag-and-drop) printing. What this provides is
		essentially the ability to print to any printer. If the local client does not yet have a
		driver installed, the driver is automatically downloaded from the Samba server and
		installed on the client. Drag-and-drop printing is neat; it means the user never needs
		to fuss with driver installation, and that is a <span class="trademark">Good Thing</span>&#8482;,
		isn't it?
		</p><p>
		There is a further layer of print job processing that is known as <span><b class="command">Intelligent</b></span>
		printing that automatically senses the file format of data submitted for printing and
		then invokes a suitable print filter to convert the incoming data stream into a format
		suited to the printer to which the job is dispatched.
		</p><p><a class="indexterm" name="id2533748"></a><a class="indexterm" name="id2533756"></a>
		The CUPS printing subsystem is capable of intelligent printing. It has the capacity to
		detect the data format and apply a print filter. This means that it is feasible to install
		on all Windows clients a single printer driver for use with all printers that are routed
		through CUPS. The most sensible driver to use is one for a Postscript printer. Fortunately,
		<a href="http://www.easysw.com" target="_top">Easy Software Products,</a> the authors of CUPS have
		released a Postscript printing driver for Windows. It can be installed into the Samba
		printing backend so that it automatically downloads to the client when needed. 
		</p><p>
		This means that so long as there is a CUPS driver for the printer, all printing from Windows 
		software can use Postscript, no matter what the actual printer language for the physical 
		device is. It also means that the administrator can swap out a printer with a totally 
		different type of device without ever needing to change a client workstation driver.
		</p><p>
		This book is about Samba-3, so you can confine the printing style to just the smart
		style of installation. Those interested in further information regarding intelligent
		printing should review documentation on the Easy Software Products Web site.
		</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2533807"></a>Political Issues</h3></div></div><div></div></div><p>
		MS Windows network users are generally very sensitive to limits that may be imposed when 
		confronted with locked-down workstation configurations. The challenge you face must 
		be promoted as a choice between reliable and fast network operation, and a constant flux 	
		of problems that result in user irritation.
		</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2533822"></a>Installation Check-List</h3></div></div><div></div></div><p>
	You are starting a complex project. Even though you have gone through the installation
	of a complex network in chapter 5, this network is a bigger challenge because of the
	large number of complex applications that must be configured before the first few steps
	can be validated. Take stock of what you are about to undertake, prepare yourself, and
	frequently review the steps ahead while making at least a mental note of what has already
	been completed. The following task list may help you to keep track of the task items
	that are covered:
	</p><div class="itemizedlist"><ul type="disc"><li><p>Samba-3 PDC Server Configuration</p><div class="orderedlist"><ol type="1"><li><p>DHCP and DNS Servers</p></li><li><p>OpenLDAP Server</p></li><li><p>PAM and NSS Client Tools</p></li><li><p>Samba-3 PDC</p></li><li><p>Idealx SMB-LDAP Scripts</p></li><li><p>LDAP Initialization</p></li><li><p>Create User and Group Accounts</p></li><li><p>Printers</p></li><li><p>Share Point Directory Roots</p></li><li><p>Profile Directories</p></li></ol></div></li><li><p>Samba-3 BDC Server Configuration</p><div class="orderedlist"><ol type="1"><li><p>DHCP and DNS Servers</p></li><li><p>PAM and NSS Client Tools</p></li><li><p>Printers</p></li><li><p>Share Point Directory Roots</p></li><li><p>Profiles Directories</p></li></ol></div></li><li><p>Samba-3 BDC Server Configuration</p></li><li><p>Windows XP Client Configuration</p><div class="orderedlist"><ol type="1"><li><p>Default Profile Folder Redirection</p></li><li><p>MS Outlook PST File Relocation</p></li><li><p>Delete Roaming Profile on Logout</p></li><li><p>Upload Printer Drivers to Samba Servers</p></li><li><p>Install Software</p></li><li><p>Creation of Roll-out Images</p></li></ol></div></li></ul></div></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2533993"></a>Samba Server Implementation</h2></div></div><div></div></div><p><a class="indexterm" name="id2534000"></a><a class="indexterm" name="id2534008"></a>
	The network design shown in <a href="happy.html#chap6net" title="Figure 6.2. Network Topology  500 User Network Using ldapsam passdb backend.">???</a> is not comprehensive. It is assumed
	that you will install additional file servers, and possibly additional BDCs.
	</p><div class="figure"><a name="chap6net"></a><p class="title"><b>Figure 6.2. Network Topology  500 User Network Using ldapsam passdb backend.</b></p><div class="mediaobject"><img src="images/chap6-net.png" width="270" alt="Network Topology 500 User Network Using ldapsam passdb backend."></div></div><p><a class="indexterm" name="id2534070"></a><a class="indexterm" name="id2534078"></a>
	All configuration files and locations are shown for SUSE Linux 9.0. The file locations for
	Red Hat Linux are similar. You may need to adjust the locations for your particular
	Linux system distribution/implementation.
	</p><p>
	The steps in the process involve changes from the network configuration
	shown in <a href="Big500users.html" title="Chapter 5. The 500-User Office">???</a>.
	Before implementing the following steps, you must have completed the network implementation shown
	in that chapter. If you are starting with newly installed Linux servers, you must complete
	the steps shown in <a href="Big500users.html#ch5-dnshcp-setup" title="Installation of DHCP, DNS, and Samba Control Files">???</a> before commencing
	at <a href="happy.html#ldapsetup" title="OpenLDAP Server Configuration">???</a>:
	</p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="ldapsetup"></a>OpenLDAP Server Configuration</h3></div></div><div></div></div><p><a class="indexterm" name="id2534130"></a><a class="indexterm" name="id2534138"></a><a class="indexterm" name="id2534146"></a>
	Confirm that the packages shown in <a href="happy.html#oldapreq" title="Table 6.1. Required OpenLDAP Linux Packages">???</a> are installed on your system.
	</p><div class="table"><a name="oldapreq"></a><p class="title"><b>Table 6.1. Required OpenLDAP Linux Packages</b></p><table summary="Required OpenLDAP Linux Packages" border="1"><colgroup><col align="left"><col align="left"><col align="left"></colgroup><thead><tr><th align="center">SUSE Linux 8.x</th><th align="center">SUSE Linux 9</th><th align="center">Red Hat Linux 9</th></tr></thead><tbody><tr><td align="left">nss_ldap</td><td align="left">nss_ldap</td><td align="left">nss_ldap</td></tr><tr><td align="left">pam_ldap</td><td align="left">pam_ldap</td><td align="left">pam_ldap</td></tr><tr><td align="left">openldap2</td><td align="left">openldap2</td><td align="left">openldap</td></tr><tr><td align="left">openldap2-client</td><td align="left">openldap2-client</td><td align="left"> </td></tr><tr><td align="left"> </td><td align="left">openldap2-back-perl</td><td align="left"> </td></tr><tr><td align="left"> </td><td align="left">openldap2-back-monitor</td><td align="left"> </td></tr><tr><td align="left"> </td><td align="left">openldap2-back-ldap</td><td align="left"> </td></tr><tr><td align="left"> </td><td align="left">openldap2-back-meta</td><td align="left"> </td></tr></tbody></table></div><p>
	Samba-3 and OpenLDAP will have a degree of inter-dependence that is unavoidable. The method
	for boot-strapping the LDAP and Samba-3 configuration is relatively straight forward. If you
	follow these guidelines, the resulting system should work fine.
	</p><div class="procedure"><ol type="1"><li><p><a class="indexterm" name="id2534335"></a>
		Install the file shown in <a href="happy.html#ch6-slapdconf" title="Example 6.1. LDAP Master Configuration File  /etc/openldap/slapd.conf">???</a> in the directory
		<tt class="filename">/etc/openldap</tt>.
		</p></li><li><p><a class="indexterm" name="id2534363"></a><a class="indexterm" name="id2534371"></a><a class="indexterm" name="id2534379"></a>
		Remove all files from the directory <tt class="filename">/var/lib/ldap</tt>, making certain that
		the directory exists with permissions:
</p><pre class="screen">
<tt class="prompt">root# </tt> ls -al /var/lib | grep ldap
drwx------   2 ldap    ldap       48 Dec 15 22:11 ldap
</pre><p>
		This may require you to add a user and a group account for LDAP if they do not exist.
		</p></li></ol></div><div class="example"><a name="ch6-slapdconf"></a><p class="title"><b>Example 6.1. LDAP Master Configuration File  <tt class="filename">/etc/openldap/slapd.conf</tt></b></p><pre class="screen">
include		/etc/openldap/schema/core.schema
include		/etc/openldap/schema/cosine.schema
include		/etc/openldap/schema/inetorgperson.schema
include		/etc/openldap/schema/nis.schema
include		/etc/openldap/schema/samba.schema

pidfile		/var/run/slapd/slapd.pid
argsfile	/var/run/slapd/slapd.args

database	ldbm
suffix		"dc=abmas,dc=biz"
rootdn		"cn=Manager,dc=abmas,dc=biz"

# rootpw = not24get
rootpw          {SSHA}86kTavd9Dw3FAz6qzWTrCOKX/c0Qe+UV

directory	/var/lib/ldap

# Indices to maintain
index objectClass           eq
index cn                    pres,sub,eq
index sn                    pres,sub,eq
index uid                   pres,sub,eq
index displayName           pres,sub,eq
index uidNumber             eq
index gidNumber             eq
index memberUID             eq
index sambaSID              eq
index sambaPrimaryGroupSID  eq
index sambaDomainName       eq
index default               sub
</pre></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="ch6-PAM-NSS"></a>PAM and NSS Client Configuration</h3></div></div><div></div></div><p><a class="indexterm" name="id2534464"></a><a class="indexterm" name="id2534472"></a><a class="indexterm" name="id2534479"></a>
	The steps that follow involve configuration of LDAP, Name Service Switch (NSS) LDAP-based resolution
	of users and groups. Also, so that LDAP-based accounts can log onto the system, the steps ahead
	configure the Pluggable Authentication Modules (PAM) to permit LDAP-based authentication.
	</p><p>
	Since you have chosen to put UNIX user and group accounts into the LDAP database, it is likely
	that you may want to use them for UNIX system (Linux) local machine logons. This necessitates
	  correct configuration of the Pluggable Authentication
	  Modules<a class="indexterm" name="id2534500"></a><a class="indexterm" name="id2534512"></a>
	  (PAM). The <span><b class="command">pam_ldap</b></span>
	open source package provides the PAM modules that most people would use. On SUSE Linux systems,
	the <span><b class="command">pam_unix2.so</b></span> module also has the ability to redirect authentication requests
	through LDAP.
	</p><p><a class="indexterm" name="id2534538"></a><a class="indexterm" name="id2534546"></a><a class="indexterm" name="id2534554"></a><a class="indexterm" name="id2534562"></a>
	You have chosen to configure these services by directly editing the system files but, of course, you
	know that this configuration can be done using system tools provided by the Linux system vendor.
	  SUSE Linux has a facility in YaST (the system admin tool) through <span class="guimenu">yast</span>-&gt;<span class="guimenuitem">system</span>-&gt;<span class="guimenuitem">ldap-client</span> that permits
	configuration of SUSE Linux as an LDAP client. Red Hat Linux provides
	  the <span><b class="command">authconfig</b></span>
	tool for this.
	</p><div class="procedure"><div class="example"><a name="ch6-nss01"></a><p class="title"><b>Example 6.2. Configuration File for NSS LDAP Support  <tt class="filename">/etc/ldap.conf</tt></b></p><pre class="screen">
SIZELIMIT	200
TIMELIMIT	15
DEREF		never

host 127.0.0.1
base dc=abmas,dc=biz
binddn cn=Manager,dc=abmas,dc=biz
bindpw not24get

pam_password exop

nss_base_passwd	ou=People,dc=abmas,dc=biz?one
nss_base_shadow	ou=People,dc=abmas,dc=biz?one
nss_base_group  ou=Groups,dc=abmas,dc=biz?one
</pre></div><div class="example"><a name="ch6-nss02"></a><p class="title"><b>Example 6.3. Configuration File for NSS LDAP Clients Support  <tt class="filename">/etc/ldap.conf</tt></b></p><pre class="screen">
SIZELIMIT	200
TIMELIMIT	15
DEREF		never

host  172.16.0.1
base dc=abmas,dc=biz
binddn cn=Manager,dc=abmas,dc=biz
bindpw not24get

pam_password exop

nss_base_passwd ou=People,dc=abmas,dc=biz?one
nss_base_shadow ou=People,dc=abmas,dc=biz?one
nss_base_group  ou=Groups,dc=abmas,dc=biz?one
</pre></div><ol type="1"><li><p><a class="indexterm" name="id2534611"></a><a class="indexterm" name="id2534619"></a><a class="indexterm" name="id2534627"></a>
		Execute the following command to find where the <tt class="filename">nss_ldap</tt> module
		expects to find its control file:
</p><pre class="screen">
<tt class="prompt">root# </tt> strings /lib/libnss_ldap.so.2 | grep conf
</pre><p>
		The preferred and usual location is <tt class="filename">/etc/ldap.conf</tt>.
		</p></li><li><p>
		On the server <tt class="constant">MASSIVE</tt>, install the file shown in 
		<a href="happy.html#ch6-nss01" title="Example 6.2. Configuration File for NSS LDAP Support  /etc/ldap.conf">???</a> into the path that was obtained from the step above.
		On the servers called <tt class="constant">BLDG1</tt> and <tt class="constant">BLDG2</tt>, install the file shown in
		<a href="happy.html#ch6-nss02" title="Example 6.3. Configuration File for NSS LDAP Clients Support  /etc/ldap.conf">???</a> into the path that was obtained from the step above.
		</p></li><li><p><a class="indexterm" name="id2534760"></a>
		Edit the NSS control file (<tt class="filename">/etc/nsswitch.conf</tt>) so that the lines that
		control user and group resolution will obtain information from the normal system files as
		well as from <span><b class="command">ldap</b></span> as follows:
</p><pre class="screen">
passwd: files ldap
shadow: files ldap
group:  files ldap
hosts:  files dns wins
</pre><p>
		Later, when the LDAP database has been initialized and user and group accounts have been
		added, you can validate resolution of the LDAP resolver process. The inclusion of 
		WINS-based hostname resolution is deliberate so that all MS Windows client hostnames can be 
		resolved to their IP addresses, whether or not they are DHCP clients.
		</p></li><li><p><a class="indexterm" name="id2534803"></a>
		For PAM LDAP configuration on this SUSE Linux 9.0 system, the simplest solution is to edit the following
		files in the <tt class="filename">/etc/pam.d</tt> directory:
	      <span><b class="command">login, password, samba, sshd</b></span>.
		In each file, locate every entry that has the <span><b class="command">pam_unix2.so</b></span> entry and add to the
		line the entry <span><b class="command">use_ldap</b></span> as shown for the
	      <span><b class="command">login</b></span> module in
		this example:
</p><pre class="screen">
#%PAM-1.0
auth      requisite  pam_unix2.so   nullok use_ldap #set_secrpc
auth      required   pam_securetty.so
auth      required   pam_nologin.so
#auth     required   pam_homecheck.so
auth      required   pam_env.so
auth      required   pam_mail.so
account   required   pam_unix2.so   use_ldap
password  required   pam_pwcheck.s  nullok
password  required   pam_unix2.so   nullok use_first_pass \
                                    use_authtok use_ldap
session   required   pam_unix2.so   none use_ldap # debug or trace
session   required   pam_limits.so
</pre><p>
		</p><p><a class="indexterm" name="id2534867"></a>
		On other Linux systems that do not have an LDAP-enabled <span><b class="command">pam_unix2.so</b></span> module,
		you must edit these files by adding the <span><b class="command">pam_ldap.so</b></span> modules as shown here:
</p><pre class="screen">
#%PAM-1.0
auth     required    pam_securetty.so
auth     required    pam_nologin.so
auth     sufficient  pam_ldap.so
auth     required    pam_unix2.so   nullok try_first_pass #set_secrpc
account  sufficient  pam_ldap.so
account  required    pam_unix2.so
password required    pam_pwcheck.so nullok
password required    pam_ldap.so    use_first_pass use_authtok
password required    pam_unix2.so   nullok use_first_pass use_authtok
session  required    pam_unix2.so   none # debug or trace
session  required    pam_limits.so
session  required    pam_env.so
session  optional    pam_mail.so
</pre><p>
		This example does have the LDAP-enabled <span><b class="command">pam_unix2.so</b></span>, but simply
		demonstrates the use of the <span><b class="command">pam_ldap.so</b></span> module. You can use either
		implementation, but if the <span><b class="command">pam_unix2.so</b></span> on your system supports
		LDAP, you probably want to use it, rather than add an additional module.
		</p></li></ol></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="ch6-massive"></a>Samba-3 PDC Configuration</h3></div></div><div></div></div><p><a class="indexterm" name="id2534942"></a>
	Verify that the Samba-3.0.2 (or later) packages are installed on each SUSE Linux server 
	before following the steps below. If Samba-3.0.2 (or later) is not installed, you have the
	choice to either build your own or to obtain the packages from a dependable source.
	Packages for SUSE Linux 8.2 and 9.0, and Red Hat 9.0 are included on the CD-ROM that
	is included at the back of this book.
	</p><div class="procedure"><p class="title"><b>Procedure 6.3. Configuration of PDC Called: <tt class="constant">MASSIVE</tt></b></p><ol type="1"><li><p>
		Install the files in <a href="happy.html#ch6-massive-smbconfa" title="Example 6.4. LDAP Based smb.conf File, Server: MASSIVE  global Section: Part A">???</a>, 
		<a href="happy.html#ch6-massive-smbconfb" title="Example 6.5. LDAP Based smb.conf File, Server: MASSIVE  global Section: Part B">???</a>, <a href="happy.html#ch6-shareconfa" title="Example 6.8. LDAP Based smb.conf File, Shares Section  Part A">???</a>, 
		and <a href="happy.html#ch6-shareconfb" title="Example 6.9. LDAP Based smb.conf File, Shares Section  Part B">???</a> into the <tt class="filename">/etc/samba/</tt> 
		directory. The three files should be added together to form the <tt class="filename">smb.conf</tt> 
		file.
		</p></li><li><p><a class="indexterm" name="id2535020"></a>
		Verify the contents of the <tt class="filename">smb.conf</tt> file that is generated by Samba
		as it collates all the included files. You do this by executing:
</p><pre class="screen">
<tt class="prompt">root# </tt> testparm -s &gt; test.conf
</pre><p>
		The output that is created should be free from errors, as shown here:

</p><pre class="screen">
Processing section "[homes]"
Processing section "[printers]"
Processing section "[apps]"
Processing section "[netlogon]"
Processing section "[profiles]"
Processing section "[profdata]"
Processing section "[IPC$]"
Processing section "[accounts]"
Processing section "[service]"
Processing section "[pidata]"
Loaded services file OK.
</pre><p>
		</p></li><li><p>
		Delete all run-time files from prior Samba operation by executing (for SUSE
		Linux):
</p><pre class="screen">
<tt class="prompt">root# </tt> rm /etc/samba/*tdb
<tt class="prompt">root# </tt> rm /var/lib/samba/*tdb
<tt class="prompt">root# </tt> rm /var/lib/samba/*dat
<tt class="prompt">root# </tt> rm /var/log/samba/*
</pre><p>
		</p></li><li><p><a class="indexterm" name="id2535106"></a><a class="indexterm" name="id2535114"></a>
		Samba-3 communicates with the LDAP server. The password that it uses to
		authenticate to the LDAP server must be stored in the <tt class="filename">secrets.tdb</tt>
		file. Execute the following to create the new <tt class="filename">secrets.tdb</tt> files
		and store the password for the LDAP Manager:
</p><pre class="screen">
<tt class="prompt">root# </tt> smbpasswd -w not24get
</pre><p>
		The expected output from this command is:
</p><pre class="screen">
Setting stored password for "cn=Manager,dc=abmas,dc=biz" in secrets.tdb
</pre><p>
		</p></li><li><p><a class="indexterm" name="id2535163"></a><a class="indexterm" name="id2535171"></a>
		Samba-3 generates a Windows Security Identifier only when <span><b class="command">smbd</b></span>
		has been started. For this reason, you start Samba. After a few seconds delay,
		execute:
</p><pre class="screen">
<tt class="prompt">root# </tt> smbclient -L localhost -U%
<tt class="prompt">root# </tt> net getlocalsid
</pre><p>
		A report such as the following means that the Domain Security Identifier (SID) has not yet
		been written to the <tt class="filename">secrets.tdb</tt> or to the LDAP backend:
</p><pre class="screen">
[2003/12/16 22:32:20, 0] utils/net.c:net_getlocalsid(414)
  Can't fetch domain SID for name: MASSIVE
</pre><p>
		When the Domain has been created and written to the <tt class="filename">secrets.tdb</tt>
		file, the output should look like this:
</p><pre class="screen">
SID for domain MASSIVE is: S-1-5-21-3504140859-1010554828-2431957765
</pre><p>
		If, after a short delay (a few seconds), the Domain SID has still not been written to 
		the <tt class="filename">secrets.tdb</tt> file, it is necessary to investigate what 
		may be mis-configured. In this case, carefully check the <tt class="filename">smb.conf</tt> file for typographical 
		errors (the most common problem).  The use of the <span><b class="command">testparm</b></span> is highly 
		recommended to validate the contents of this file.
		</p></li><li><p>
		When a positive Domain SID has been reported, stop Samba.
		</p></li><li><p>
		<a class="indexterm" name="id2535278"></a>
		<a class="indexterm" name="id2535287"></a>
		<a class="indexterm" name="id2535296"></a>
		<a class="indexterm" name="id2535305"></a>
		Configure the NFS server for your Linux system. So you can complete the steps that
		follow, enter into the <tt class="filename">/etc/exports</tt> the following entry:
</p><pre class="screen">
/home   *(rw,root_squash,sync)
</pre><p>
		This permits the user home directories to be used on the BDC servers for testing
		purposes. You, of course, decide what is the best way for your site to distribute
		data drives, as well as creating suitable backup and restore procedures for Abmas Inc.
		I'd strongly recommend that for normal operation the BDC is completely independent 
		of the PDC. rsync is a useful tool here as it resembles the NT replication service quite 
		closely. If you do use NFS, do not forget to start the NFS server as follows:
</p><pre class="screen">
<tt class="prompt">root# </tt> rcnfs start
</pre><p>
		</p></li></ol></div><p>
	Your Samba-3 PDC is now ready to communicate with the LDAP password backend. Let's get on with
	configuration of the LDAP server.
	</p><div class="example"><a name="ch6-massive-smbconfa"></a><p class="title"><b>Example 6.4. LDAP Based smb.conf File, Server: MASSIVE  global Section: Part A</b></p><table class="simplelist" border="0" summary="Simple list"><tr><td># Global parameters</td></tr><tr><td> </td></tr><tr><td><i class="parameter"><tt>[global]</tt></i></td></tr><tr><td><a class="indexterm" name="id2535387"></a><i class="parameter"><tt>
					
				unix charset = LOCALE</tt></i></td></tr><tr><td><a class="indexterm" name="id2535402"></a><i class="parameter"><tt>
					
				workgroup = MEGANET2</tt></i></td></tr><tr><td><a class="indexterm" name="id2535418"></a><i class="parameter"><tt>
					
				netbios name = MASSIVE</tt></i></td></tr><tr><td><a class="indexterm" name="id2535434"></a><i class="parameter"><tt>
					
				interfaces = eth1, lo</tt></i></td></tr><tr><td><a class="indexterm" name="id2535449"></a><i class="parameter"><tt>
					
				bind interfaces only = Yes</tt></i></td></tr><tr><td><a class="indexterm" name="id2535465"></a><i class="parameter"><tt>
					
				passdb backend = ldapsam:ldap://massive.abmas.biz</tt></i></td></tr><tr><td><a class="indexterm" name="id2535482"></a><i class="parameter"><tt>
					
				username map = /etc/samba/smbusers</tt></i></td></tr><tr><td><a class="indexterm" name="id2535498"></a><i class="parameter"><tt>
					
				log level = 1</tt></i></td></tr><tr><td><a class="indexterm" name="id2535513"></a><i class="parameter"><tt>
					
				syslog = 0</tt></i></td></tr><tr><td><a class="indexterm" name="id2535529"></a><i class="parameter"><tt>
					
				log file = /var/log/samba/%m</tt></i></td></tr><tr><td><a class="indexterm" name="id2535544"></a><i class="parameter"><tt>
					
				max log size = 50</tt></i></td></tr><tr><td><a class="indexterm" name="id2535560"></a><i class="parameter"><tt>
					
				smb ports = 139 445</tt></i></td></tr><tr><td><a class="indexterm" name="id2535576"></a><i class="parameter"><tt>
					
				name resolve order = wins bcast hosts</tt></i></td></tr><tr><td><a class="indexterm" name="id2535593"></a><i class="parameter"><tt>
					
				time server = Yes</tt></i></td></tr><tr><td><a class="indexterm" name="id2535608"></a><i class="parameter"><tt>
					
				printcap name = CUPS</tt></i></td></tr><tr><td><a class="indexterm" name="id2535624"></a><i class="parameter"><tt>
					
				show add printer wizard = No</tt></i></td></tr><tr><td><a class="indexterm" name="id2535640"></a><i class="parameter"><tt>
					
				add user script = /var/lib/samba/sbin/smbldap-useradd.pl -a -m '%u'</tt></i></td></tr><tr><td><a class="indexterm" name="id2535657"></a><i class="parameter"><tt>
					
				delete user script = /var/lib/samba/sbin/smbldap-userdel.pl '%u'</tt></i></td></tr><tr><td><a class="indexterm" name="id2535673"></a><i class="parameter"><tt>
					
				add group script = /var/lib/samba/sbin/smbldap-groupadd.pl -p '%g'</tt></i></td></tr><tr><td><a class="indexterm" name="id2535690"></a><i class="parameter"><tt>
					
				delete group script = /var/lib/samba/sbin/smbldap-groupdel.pl '%g'</tt></i></td></tr><tr><td><a class="indexterm" name="id2535706"></a><i class="parameter"><tt>
					
				add user to group script = /var/lib/samba/sbin/</tt></i></td></tr><tr><td><i class="parameter"><tt>smbldap-groupmod.pl -m '%u' '%g'</tt></i></td></tr><tr><td><a class="indexterm" name="id2535730"></a><i class="parameter"><tt>
					
				delete user from group script = /var/lib/samba/sbin/</tt></i></td></tr><tr><td><i class="parameter"><tt>smbldap-groupmod.pl -x '%u' '%g'</tt></i></td></tr><tr><td><a class="indexterm" name="id2535754"></a><i class="parameter"><tt>
					
				set primary group script = /var/lib/samba/sbin/</tt></i></td></tr><tr><td><i class="parameter"><tt>smbldap-usermod.pl -g '%g' '%u'</tt></i></td></tr><tr><td><a class="indexterm" name="id2535778"></a><i class="parameter"><tt>
					
				add machine script = /var/lib/samba/sbin/</tt></i></td></tr><tr><td><i class="parameter"><tt>smbldap-useradd.pl -w '%u'</tt></i></td></tr><tr><td><a class="indexterm" name="id2535801"></a><i class="parameter"><tt>
					
				logon script = scripts\logon.bat</tt></i></td></tr><tr><td><a class="indexterm" name="id2535817"></a><i class="parameter"><tt>
					
				logon path = \\%L\profiles\%U</tt></i></td></tr><tr><td><a class="indexterm" name="id2535832"></a><i class="parameter"><tt>
					
				logon drive = X:</tt></i></td></tr><tr><td><a class="indexterm" name="id2535848"></a><i class="parameter"><tt>
					
				domain logons = Yes</tt></i></td></tr><tr><td><a class="indexterm" name="id2535864"></a><i class="parameter"><tt>
					
				preferred master = Yes</tt></i></td></tr><tr><td><a class="indexterm" name="id2535880"></a><i class="parameter"><tt>
					
				wins support = Yes</tt></i></td></tr><tr><td><a class="indexterm" name="id2535896"></a><i class="parameter"><tt>
					
				ldap suffix = dc=abmas,dc=biz</tt></i></td></tr><tr><td><a class="indexterm" name="id2535912"></a><i class="parameter"><tt>
					
				ldap machine suffix = ou=People</tt></i></td></tr><tr><td><a class="indexterm" name="id2535928"></a><i class="parameter"><tt>
					
				ldap user suffix = ou=People</tt></i></td></tr><tr><td><a class="indexterm" name="id2535943"></a><i class="parameter"><tt>
					
				ldap group suffix = ou=Groups</tt></i></td></tr></table></div><div class="example"><a name="ch6-massive-smbconfb"></a><p class="title"><b>Example 6.5. LDAP Based smb.conf File, Server: MASSIVE  global Section: Part B</b></p><table class="simplelist" border="0" summary="Simple list"><tr><td><a class="indexterm" name="id2535974"></a><i class="parameter"><tt>
					
				ldap idmap suffix = ou=Idmap</tt></i></td></tr><tr><td><a class="indexterm" name="id2535990"></a><i class="parameter"><tt>
					
				ldap admin dn = cn=Manager,dc=abmas,dc=biz</tt></i></td></tr><tr><td><a class="indexterm" name="id2536006"></a><i class="parameter"><tt>
					
				idmap backend = ldap:ldap://massive.abmas.biz</tt></i></td></tr><tr><td><a class="indexterm" name="id2536023"></a><i class="parameter"><tt>
					
				idmap uid = 10000-20000</tt></i></td></tr><tr><td><a class="indexterm" name="id2536038"></a><i class="parameter"><tt>
					
				idmap gid = 10000-20000</tt></i></td></tr><tr><td><a class="indexterm" name="id2536054"></a><i class="parameter"><tt>
					
				map acl inherit = Yes</tt></i></td></tr><tr><td><a class="indexterm" name="id2536069"></a><i class="parameter"><tt>
					
				printing = cups</tt></i></td></tr><tr><td><a class="indexterm" name="id2536085"></a><i class="parameter"><tt>
					
				printer admin = Administrator, chrisr</tt></i></td></tr></table></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2536102"></a>Install and Configure Idealx SMB-LDAP Scripts</h3></div></div><div></div></div><p><a class="indexterm" name="id2536110"></a>
	The Idealx scripts, or equivalent, are necessary to permit Samba-3 to manage accounts
	on the LDAP server. You have chosen the Idealx scripts since they are part of the
	Samba-3 package distribution. On your SUSE Linux system, you find these scripts in the
	<tt class="filename">/usr/share/doc/packages/samba3/Examples/LDAP/smbldap-tools</tt>
	directory. On a Red Hat Linux system, they are in a similar path. If you cannot find
	the scripts on your system, it is easy enough to download them from the Idealx
	<a href="http://samba.idealx.org/index.en.html" target="_top">Web Site.</a> The tarball may
	be directly <a href="http://samba.idealx.org/dist/smbldap-tools-0.8.2.tgz" target="_top">downloaded</a>
	for this site, also.
	</p><p>
	In your installation, the smbldap-tools are located in <tt class="filename">/var/lib/samba/sbin</tt>.
	They can be installed in any convenient directory of your choice, in which case you must
	change the path to them in your <tt class="filename">smb.conf</tt> file on the PDC (<tt class="constant">MASSIVE</tt>).
	</p><p>
	The scripts are not needed on BDC machines because all LDAP updates are handled by
	the PDC alone.
	</p><div class="procedure"><a name="idealxscript"></a><ol type="1"><li><p>
		Create the <tt class="filename">/var/lib/samba/sbin</tt> directory, and set its permissions
		and ownership as shown here:
</p><pre class="screen">
<tt class="prompt">root# </tt> mkdir -p /var/lib/samba/sbin
<tt class="prompt">root# </tt> chown root.root /var/lib/samba/sbin
<tt class="prompt">root# </tt> chmod 755 /var/lib/samba/sbin
</pre><p>
		</p></li><li><p>
		If you wish to use the downloaded tarball, unpack the smbldap-tools in a suitable temporary location.
		Change into either the directory extracted from the tarball, or else into the smbldap-tools
		directory in your <tt class="filename">/usr/share/doc/packages</tt> directory tree.
		</p></li><li><p>
		Copy all the <tt class="filename">.pl</tt> and <tt class="filename">.pm</tt> files into the 
		<tt class="filename">/var/lib/samba/sbin</tt> directory, as shown here:
</p><pre class="screen">
<tt class="prompt">root# </tt> cd /usr/share/doc/packages/samba3/Examples/LDAP/smbldap-tools
<tt class="prompt">root# </tt> cp *.pl *.pm /var/lib/samba/sbin
</pre><p>
		</p></li><li><p><a class="indexterm" name="id2536288"></a>
		You must compile the <span><b class="command">mkntpasswd</b></span> tool and then install it into
		the <tt class="filename">/var/lib/samba/sbin</tt> directory, as shown here:
</p><pre class="screen">
<tt class="prompt">root# </tt> cd mkntpwd
<tt class="prompt">root# </tt> make
gcc  -O2 -DMPU8086  -c -o getopt.o getopt.c
gcc  -O2 -DMPU8086  -c -o md4.o md4.c
gcc  -O2 -DMPU8086  -c -o mkntpwd.o mkntpwd.c
mkntpwd.c: In function `main':
mkntpwd.c:37: warning: return type of `main' is not `int'
gcc  -O2 -DMPU8086  -c -o smbdes.o smbdes.c
gcc  -O2 -DMPU8086  -o mkntpwd getopt.o md4.o mkntpwd.o smbdes.o
<tt class="prompt">root# </tt> cp mkntpwd /var/lib/samba/sbin
</pre><p>
		The smbldap-tools scripts must now be configured.
		</p></li><li><p>
		Change to the <tt class="filename">/var/lib/samba/sbin</tt> directory, and edit the
		<tt class="filename">/var/lib/samba/sbin/smbldap_conf.pm</tt> to affect the changes
		shown here:
</p><pre class="screen">
# Put your own SID
# to obtain this number do: "net getlocalsid"
#$SID='S-1-5-21-1671648649-242858427-2873575837';
$SID='S-1-5-21-3504140859-1010554828-2431957765';
...
# LDAP Suffix
# Ex: $suffix = "dc=IDEALX,dc=ORG";
$suffix = "dc=abmas,dc=biz";
...
# Where are stored Users
# Ex: $usersdn = "ou=Users,$suffix"; ...
$usersou = q(People);
$usersdn = "ou=$usersou,$suffix";

# Where are stored Computers
# Ex: $computersdn = "ou=Computers,$suffix"; ...
$computersou = q(People);
$computersdn = "ou=$computersou,$suffix";

# Where are stored Groups
# Ex $groupsdn = "ou=Groups,$suffix"; ...
$groupsou = q(Groups);
$groupsdn = "ou=$groupsou,$suffix";

# Default scope Used
$scope = "sub";

# Unix password encryption (CRYPT, MD5, SMD5, SSHA, SHA)
$hash_encrypt="MD5";
...
############################
# Credential Configuration #
############################
# Bind DN used
# Ex: $binddn = "cn=admin,$suffix"; ...
$binddn = "cn=Manager,$suffix";

# Bind DN passwd used
# Ex: $bindpasswd = 'secret'; for 'secret'
$bindpasswd = 'not24get';
...
# Login defs
# Default Login Shell
# Ex: $_userLoginShell = q(/bin/bash);
#$_userLoginShell = q(_LOGINSHELL_);
$_userLoginShell = q(/bin/bash);

# Home directory prefix (without username)
# Ex: $_userHomePrefix = q(/home/);
#$_userHomePrefix = q(_HOMEPREFIX_);
$_userHomePrefix = q(/home/);
...
# The UNC path to home drives location without the 
# username last extension (will be dynamically prepended)
# Ex: q(\\\\My-PDC-netbios-name\\homes)
# Just comment this if you want to use the smb.conf 
# 'logon home' directive # and/or desabling roaming profiles
#$_userSmbHome = q(\\\\_PDCNAME_\\homes);
$_userSmbHome = q(\\\\MASSIVE\\homes);

# The UNC path to profiles locations without the username 
# last extension (will be dynamically prepended)
# Ex: q(\\\\My-PDC-netbios-name\\profiles\\)
# Just comment this if you want to use the smb.conf 
# 'logon path' directive and/or desabling roaming profiles
$_userProfile = q(\\\\MASSIVE\\profiles\\);

# The default Home Drive Letter mapping
# (automatically mapped at logon time if home directory exists)
# Ex: q(U:) for U:
#$_userHomeDrive = q(_HOMEDRIVE_);
$_userHomeDrive = q(H:);
...
# Allows not to use smbpasswd 
# (if $with_smbpasswd == 0 in smbldap_conf.pm) but
# prefer mkntpwd... most of the time, it's a wise choice :-)
$with_smbpasswd = 0;
$smbpasswd = "/usr/bin/smbpasswd";
$mk_ntpasswd = "/var/lib/samba/sbin/mkntpwd";
...
</pre><p>
		</p></li><li><p>
		To complete the configuration of the smbldap-tools, set the permissions and ownership
		by executing the following commands:
</p><pre class="screen">
<tt class="prompt">root# </tt> chown root.root /var/lib/samba/sbin/* 
<tt class="prompt">root# </tt> chmod 755 /var/lib/samba/sbin/smb*pl 
<tt class="prompt">root# </tt> chmod 640 /var/lib/samba/sbin/smb*pm 
<tt class="prompt">root# </tt> chmod 555 /var/lib/samba/sbin/mkntpwd
</pre><p>
		The smbldap-tools scripts are now ready for use.
		</p></li></ol></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2536453"></a>LDAP Initialization and Creation of User and Group Accounts</h3></div></div><div></div></div><p>
	The LDAP database must be populated with well-known Windows Domain user accounts and Domain Group 
	accounts before Samba can be used. The following procedures step you through the process.
	</p><p>
	At this time, Samba-3 requires that on a PDC all UNIX (Posix) group accounts that are
	mapped (linked) to Windows Domain Group accounts must be in the LDAP database. It does not
	hurt to have UNIX user and group accounts in both the system files as well as in the LDAP
	database. From a UNIX system perspective, the NSS resolver checks system files before
	referring to LDAP. If the UNIX system can resolve (find) an account in the system file, it
	does not need to ask LDAP.
	</p><p>
	Addition of an account to the LDAP backend can be done in a number of ways:
	</p><div class="blockquote"><blockquote class="blockquote"><p><a class="indexterm" name="id2536484"></a><a class="indexterm" name="id2536492"></a><a class="indexterm" name="id2536500"></a><a class="indexterm" name="id2536508"></a><a class="indexterm" name="id2536516"></a><a class="indexterm" name="id2536524"></a>
	If you always have a user account in the <tt class="filename">/etc/passwd</tt> on every 
	server or in a NIS(+) backend, it is not necessary to add Posix accounts for them in 
	LDAP. In this case, you can add Windows Domain user accounts using the 
	<span><b class="command">pdbedit</b></span> utility. Use of this tool from the command line adds the 
	SambaSamAccount entry for the user, but does not add the PosixAccount entry for the user.
	</p><p>
	If you decide that it is probably a good idea to add both the PosixAccount attributes
	as well as the SambaSamAccount attributes for each user, then a suitable script is needed.
	In the example system you are installing in this exercise, you are making use of the
	Idealx smbldap-tools scripts. A copy of these tools, pre-configured for this system,
	is included on the enclosed CD-ROM under <tt class="filename">Chap06/Tools.</tt>
	</p></blockquote></div><p><a class="indexterm" name="id2536568"></a>
	If you wish to have more control over how the LDAP database is initialized or 
	want not to use the Idealx smbldap-tools, you should refer to <a href="appendix.html#altldapcfg" title="Alternative LDAP Database Initialization">???</a>.
	</p><p><a class="indexterm" name="id2536592"></a>
	The following steps initialize the LDAP database, and then you can add user and group
	accounts that Samba can use. You use the <span><b class="command">smbldap-populate.pl</b></span> to
	seed the LDAP database. You then manually add the accounts shown in <a href="happy.html#ch6-bigacct" title="Table 6.2. Abmas Network Users and Groups">???</a>. 
	The list of users does not cover all 500 network users; it provides examples only.
	</p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p><a class="indexterm" name="id2536622"></a><a class="indexterm" name="id2536633"></a><a class="indexterm" name="id2536644"></a>
	In the following examples, as the LDAP database is initialized, we do create a container
	for Computer (machine) accounts. In the Samba-3 <tt class="filename">smb.conf</tt> files, specific use is made
	of the People container, not the Computers container, for domain member accounts. This is not a
	mistake; it is a deliberate action that is necessitated by the fact that there is a bug in Samba-3
	that prevents it from being able to search the LDAP database for computer accounts if they are
	placed in the Computers container. By placing all machine accounts in the People container, we
	are able to side-step this bug. It is expected that at some time in the future this problem will
	be resolved. At that time, it will be possible to use the Computers container in order to keep
	machine accounts separate from user accounts.
	</p></div><div class="table"><a name="ch6-bigacct"></a><p class="title"><b>Table 6.2. Abmas Network Users and Groups</b></p><table summary="Abmas Network Users and Groups" border="1"><colgroup><col align="left"><col align="left"><col align="left"><col align="left"></colgroup><thead><tr><th align="center">Account Name</th><th align="center">Type</th><th align="center">ID</th><th align="center">Password</th></tr></thead><tbody><tr><td align="left">Robert Jordan</td><td align="left">User</td><td align="left">bobj</td><td align="left">n3v3r2l8</td></tr><tr><td align="left">Stanley Soroka</td><td align="left">User</td><td align="left">stans</td><td align="left">impl13dst4r</td></tr><tr><td align="left">Christine Roberson</td><td align="left">User</td><td align="left">chrisr</td><td align="left">S9n0nw4ll</td></tr><tr><td align="left">Mary Vortexis</td><td align="left">User</td><td align="left">maryv</td><td align="left">kw13t0n3</td></tr><tr><td align="left">Accounts</td><td align="left">Group</td><td align="left">Accounts</td><td align="left"> </td></tr><tr><td align="left">Finances</td><td align="left">Group</td><td align="left">Finances</td><td align="left"> </td></tr><tr><td align="left">Insurance</td><td align="left">Group</td><td align="left">PIOps</td><td align="left"> </td></tr></tbody></table></div><div class="procedure"><a name="creatacc"></a><ol type="1"><li><p>
		Start the LDAP server by executing:
</p><pre class="screen">
<tt class="prompt">root# </tt> rcldap start
Starting ldap-server                           done
</pre><p>
		</p></li><li><p>
		Change to the <tt class="filename">/var/lib/samba/sbin</tt> directory.
		</p></li><li><p>
		Execute the script that will populate the LDAP database as shown here:
</p><pre class="screen">
<tt class="prompt">root# </tt> ./smbldap-populate.pl
Using builtin directory structure
adding new entry: dc=abmas,dc=biz
adding new entry: ou=People,dc=abmas,dc=biz
adding new entry: ou=Groups,dc=abmas,dc=biz
adding new entry: ou=Computers,dc=abmas,dc=biz
adding new entry: uid=Administrator,ou=People,dc=abmas,dc=biz
adding new entry: uid=nobody,ou=People,dc=abmas,dc=biz
adding new entry: cn=Domain Admins,ou=Groups,dc=abmas,dc=biz
adding new entry: cn=Domain Users,ou=Groups,dc=abmas,dc=biz
adding new entry: cn=Domain Guests,ou=Groups,dc=abmas,dc=biz
adding new entry: cn=Administrators,ou=Groups,dc=abmas,dc=biz
adding new entry: cn=Users,ou=Groups,dc=abmas,dc=biz
adding new entry: cn=Guests,ou=Groups,dc=abmas,dc=biz
adding new entry: cn=Power Users,ou=Groups,dc=abmas,dc=biz
adding new entry: cn=Account Operators,ou=Groups,dc=abmas,dc=biz
adding new entry: cn=Server Operators,ou=Groups,dc=abmas,dc=biz
adding new entry: cn=Print Operators,ou=Groups,dc=abmas,dc=biz
adding new entry: cn=Backup Operators,ou=Groups,dc=abmas,dc=biz
adding new entry: cn=Replicator,ou=Groups,dc=abmas,dc=biz
adding new entry: cn=Domain Computers,ou=Groups,dc=abmas,dc=biz
</pre><p>
		</p></li><li><p>
		It is necessary to restart the LDAP server as shown here:
</p><pre class="screen">
<tt class="prompt">root# </tt> rcldap restart
Shutting down ldap-server                            done
Starting ldap-server                                 done
</pre><p>
		</p></li><li><p><a class="indexterm" name="id2536963"></a>
		So that we can use a global IDMAP repository the LDAP directory must have a container object for IDMAP data. 
		There are several ways you can check that your LDAP database is able to receive IDMAP information. One of 
		the simplest is to execute:
</p><pre class="screen">
<tt class="prompt">root# </tt> slapcat | grep -i idmap
dn: ou=Idmap,dc=abmas,dc=biz
ou: idmap
</pre><p>
	      <a class="indexterm" name="id2536989"></a>
	        If the execution of this command does not return IDMAP entries, you need to create an LDIF
		template file (see <a href="happy.html#ch6-ldifadd" title="Example 6.10. LDIF IDMAP Add-On Load File  File: /etc/openldap/idmap.LDIF">???</a>). You can add the required entries using 
		the following command:
</p><pre class="screen">
<tt class="prompt">root# </tt> ldapadd -x -D "cn=Manager,dc=abmas,dc=biz" \
		-w not24get &lt; /etc/openldap/idmap.LDIF
</pre><p>
		Samba automatically populates this LDAP directory container when it needs to.
		</p></li><li><p><a class="indexterm" name="id2537028"></a>
		It looks like all has gone well, as expected. Let's confirm that this is the case
		by running a few tests. First we check the contents of the database directly
		by running <span><b class="command">slapcat</b></span> as follows (the output has been cut down):
</p><pre class="screen">
<tt class="prompt">root# </tt> slapcat
dn: dc=abmas,dc=biz
objectClass: dcObject
objectClass: organization
dc: abmas
o: abmas
structuralObjectClass: organization
entryUUID: 5ab02bf6-c536-1027-9d29-b1f32350fb43
creatorsName: cn=Manager,dc=abmas,dc=biz
createTimestamp: 20031217234200Z
entryCSN: 2003121723:42:00Z#0x0001#0#0000
modifiersName: cn=Manager,dc=abmas,dc=biz
modifyTimestamp: 20031217234200Z
...
dn: cn=Domain Computers,ou=Groups,dc=abmas,dc=biz
objectClass: posixGroup
objectClass: sambaGroupMapping
gidNumber: 553
cn: Domain Computers
description: Netbios Domain Computers accounts
sambaSID: S-1-5-21-3504140859-1010554828-2431957765-553
sambaGroupType: 2
displayName: Domain Computers
structuralObjectClass: posixGroup
entryUUID: 5e0a41d8-c536-1027-9d3b-b1f32350fb43
creatorsName: cn=Manager,dc=abmas,dc=biz
createTimestamp: 20031217234206Z
entryCSN: 2003121723:42:06Z#0x0002#0#0000
modifiersName: cn=Manager,dc=abmas,dc=biz
modifyTimestamp: 20031217234206Z
</pre><p>
		This looks good so far.
		</p></li><li><p><a class="indexterm" name="id2537080"></a>
		The next step is to prove that the LDAP server is running and responds to a
		search request. Execute the following as shown (output has been cut to save space):
</p><pre class="screen">
<tt class="prompt">root# </tt> ldapsearch -x -b "dc=abmas,dc=biz" "(ObjectClass=*)"
# extended LDIF
#
# LDAPv3
# base &lt;dc=abmas,dc=biz&gt; with scope sub
# filter: (ObjectClass=*)
# requesting: ALL
#

# abmas.biz
dn: dc=abmas,dc=biz
objectClass: dcObject
objectClass: organization
dc: abmas
o: abmas

# People, abmas.biz
dn: ou=People,dc=abmas,dc=biz
objectClass: organizationalUnit
ou: People
...
# Domain Computers, Groups, abmas.biz
dn: cn=Domain Computers,ou=Groups,dc=abmas,dc=biz
objectClass: posixGroup
objectClass: sambaGroupMapping
gidNumber: 553
cn: Domain Computers
description: Netbios Domain Computers accounts
sambaSID: S-1-5-21-3504140859-1010554828-2431957765-553
sambaGroupType: 2
displayName: Domain Computers

# search result
search: 2
result: 0 Success

# numResponses: 20
# numEntries: 19
</pre><p>
		Good. It is all working just fine.
		</p></li><li><p><a class="indexterm" name="id2537138"></a>
		You must now make certain that the NSS resolver can interrogate LDAP also.
		Execute the following commands:
</p><pre class="screen">
<tt class="prompt">root# </tt> getent passwd | grep Administrator
Administrator:x:998:512:Netbios Domain Administrator:/home:/bin/false

<tt class="prompt">root# </tt> getent group | grep Domain
Domain Admins:x:512:Administrator
Domain Users:x:513:
Domain Guests:x:514:
Domain Computers:x:553:
</pre><p><a class="indexterm" name="id2537169"></a>
		This demonstrates that the <span><b class="command">nss_ldap</b></span> library is functioning
		as it should.
		</p></li><li><p><a class="indexterm" name="id2537190"></a><a class="indexterm" name="id2537198"></a><a class="indexterm" name="id2537206"></a>
		Our database is now ready for the addition of network users. For each user for
		whom an account must be created, execute the following:
</p><pre class="screen">
<tt class="prompt">root# </tt> ./smbldap-useradd.pl -m -a <tt class="constant">username</tt>
<tt class="prompt">root# </tt> ./smbldap-passwd.pl <tt class="constant">username</tt>
Changing password for <tt class="constant">username</tt>
New password : XXXXXXXX
Retype new password : XXXXXXXX

<tt class="prompt">root# </tt> smbpasswd <tt class="constant">username</tt>
New SMB password: XXXXXXXX
Retype new SMB password: XXXXXXXX
</pre><p>
		Where <tt class="constant">username</tt> is the login ID for each user.
		</p></li><li><p><a class="indexterm" name="id2537268"></a>
		Now verify that the UNIX (Posix) accounts can be resolved via NSS by executing the
		following:
</p><pre class="screen">
<tt class="prompt">root# </tt> getent passwd
...
Administrator:x:998:512:Netbios Domain Administrator:/home:/bin/false
nobody:x:999:514:nobody:/dev/null:/bin/false
bobj:x:1000:513:System User:/home/bobj:/bin/bash
stans:x:1001:513:System User:/home/stans:/bin/bash
chrisr:x:1002:513:System User:/home/chrisr:/bin/bash
maryv:x:1003:513:System User:/home/maryv:/bin/bash

<tt class="prompt">root# </tt> id chrisr
uid=1002(chrisr) gid=513(Domain Users) groups=513(Domain Users)
</pre><p>
		This confirms that the UNIX (Posix) user accounts can be resolved from LDAP.
		</p></li><li><p><a class="indexterm" name="id2537310"></a>
		In the above listing, you can see that the user <tt class="constant">Administrator</tt>
		has been given UID=998. This means that operations conducted from a Windows client
		using tools such as the Domain User Manager fails under UNIX because the
		management of user and group accounts requires that the UID=0. You decide to rectify 
		this immediately as demonstrated here:
</p><pre class="screen">
<tt class="prompt">root# </tt> cd /var/lib/samba/sbin
<tt class="prompt">root# </tt> ./smbldap-usermod.pl -u 0 Administrator
</pre><p>
		</p></li><li><p>
		Make certain that a home directory has been created for every user by listing the
		directories in <tt class="filename">/home</tt> as follows:
</p><pre class="screen">
<tt class="prompt">root# </tt> ls -al /home
drwxr-xr-x   8 root   root         176 Dec 17 18:50 ./
drwxr-xr-x  21 root   root         560 Dec 15 22:19 ../
drwx------   7 bobj   Domain Users     568 Dec 17 01:16 bobj/
drwx------   7 chrisr Domain Users     568 Dec 17 01:19 chrisr/
drwx------   7 maryv  Domain Users     568 Dec 17 01:27 maryv/
drwx------   7 stans  Domain Users     568 Dec 17 01:43 stans/
</pre><p>
		This is precisely what we want to see.
		</p></li><li><p><a class="indexterm" name="id2537386"></a><a class="indexterm" name="id2537394"></a>
		The final validation step involves making certain that Samba-3 can obtain the user
		accounts from the LDAP ldapsam passwd backend. Execute the following command as shown:
</p><pre class="screen">
<tt class="prompt">root# </tt> pdbedit -Lv chrisr
Unix username:        chrisr
NT username:          chrisr
Account Flags:        [U          ]
User SID:             S-1-5-21-3504140859-1010554828-2431957765-3004
Primary Group SID:    S-1-5-21-3504140859-1010554828-2431957765-513
Full Name:            System User
Home Directory:       \\MASSIVE\homes
HomeDir Drive:        H:
Logon Script:         chrisr.cmd
Profile Path:         \\MASSIVE\profiles\chrisr
Domain:               MEGANET2
Account desc:         System User
Workstations:
Munged dial:
Logon time:           0
Logoff time:          Mon, 18 Jan 2038 20:14:07 GMT
Kickoff time:         Mon, 18 Jan 2038 20:14:07 GMT
Password last set:    Wed, 17 Dec 2003 17:17:40 GMT
Password can change:  Wed, 17 Dec 2003 17:17:40 GMT
Password must change: Mon, 18 Jan 2038 20:14:07 GMT
</pre><p>
		This looks good. Of course, you fully expected that it would all work, didn't you?
		</p></li><li><p><a class="indexterm" name="id2537438"></a>
		Now you add the group accounts that are used on the Abmas network. Execute
		the following exactly as shown:
</p><pre class="screen">
<tt class="prompt">root# </tt> ./smbldap-groupadd.pl -a Accounts
<tt class="prompt">root# </tt> ./smbldap-groupadd.pl -a Finances
<tt class="prompt">root# </tt> ./smbldap-groupadd.pl -a PIOps
</pre><p>
		The addition of groups does not involve keyboard interaction, so the lack of console
		output is of no concern.
		</p></li><li><p><a class="indexterm" name="id2537481"></a>
		You really do want to confirm that UNIX group resolution from LDAP is functioning 
		as it should. Let's do this as shown here:
</p><pre class="screen">
<tt class="prompt">root# </tt> getent group
...
Domain Admins:x:512:Administrator
Domain Users:x:513:bobj,stans,chrisr,maryv
Domain Guests:x:514:
...
Accounts:x:1000:
Finances:x:1001:
PIOps:x:1002:
</pre><p>
		The well-known special accounts (Domain Admins, Domain Users, Domain Guests), as well
		as our own site-specific group accounts, are correctly listed. This is looking good.
		</p></li><li><p><a class="indexterm" name="id2537515"></a>
		The final step we need to validate is that Samba can see all the Windows Domain Groups
		and that they are correctly mapped to the respective UNIX group account. To do this,
		just execute the following command:
</p><pre class="screen">
<tt class="prompt">root# </tt> net groupmap list
Domain Admins (S-1-5-21-3504140859-...-2431957765-512) -&gt; Domain Admins
Domain Users (S-1-5-21-3504140859-...-2431957765-513) -&gt; Domain Users
Domain Guests (S-1-5-21-3504140859-...-2431957765-514) -&gt; Domain Guests
...
Accounts (S-1-5-21-3504140859-1010554828-2431957765-3001) -&gt; Accounts
Finances (S-1-5-21-3504140859-1010554828-2431957765-3003) -&gt; Finances
PIOps (S-1-5-21-3504140859-1010554828-2431957765-3005) -&gt; PIOps
</pre><p>
		This is looking good. Congratulations  it works! Note that in the above output
		the lines where shortened by replacing the middle value (1010554828) of the SID with the 
		elipsis (...).
		</p></li><li><p>
		The server you have so carefully built is now ready for another important step. You 
		start the Samba-3 server and validate its operation. Execute the following to render all 
		the processes needed fully operative so that, on system reboot, they are automatically 
		started:
</p><pre class="screen">
<tt class="prompt">root# </tt> chkconfig named on
<tt class="prompt">root# </tt> chkconfig dhcpd on
<tt class="prompt">root# </tt> chkconfig ldap on
<tt class="prompt">root# </tt> chkconfig nmb on
<tt class="prompt">root# </tt> chkconfig smb on
<tt class="prompt">root# </tt> chkconfig winbind on
<tt class="prompt">root# </tt> rcnmb start
<tt class="prompt">root# </tt> rcsmb start
<tt class="prompt">root# </tt> rcwinbind start
</pre><p>
		</p></li><li><p>
		The next step might seem a little odd at this point, but take note that you are about to
		start <span><b class="command">winbindd</b></span> which must be able to authenticate to the PDC via the
		localhost interface. This requires a Domain account for the PDC. This account can be
		easily created by joining the PDC to the Domain by executing the following command:
</p><pre class="screen">
<tt class="prompt">root# </tt> net rpc join -U Administrator%not24get
Joined domain MEGANET2.
</pre><p>
		This indicates that the Domain security account for the BDC has been correctly created.
		</p></li><li><p>
		At this time it is necessary to restart <span><b class="command">winbindd</b></span> so that it can
		correctly authenticate to the PDC. The following command achieves that:
</p><pre class="screen">
<tt class="prompt">root# </tt> rcwinbind restart
</pre><p>
		</p></li><li><p><a class="indexterm" name="id2537696"></a>
		You may now check Samba-3 operation as follows:
</p><pre class="screen">
<tt class="prompt">root# </tt> smbclient -L massive -U%

        Sharename      Type      Comment
        ---------      ----      -------
        IPC$           IPC       IPC Service (Samba 3.0.1)
        accounts       Disk      Accounting Files
        service        Disk      Financial Services Files
        pidata         Disk      Property Insurance Files
        apps           Disk      Application Files
        netlogon       Disk      Network Logon Service
        profiles       Disk      Profile Share
        profdata       Disk      Profile Data Share
        ADMIN$         IPC       IPC Service (Samba 3.0.1)

        Server               Comment
        ---------            -------
        MASSIVE              Samba 3.0.1

        Workgroup            Master
        ---------            -------
        MEGANET2             MASSIVE
</pre><p>
	This shows that an anonymous connection is working.
		</p></li><li><p>
		For your finale, let's try an authenticated connection. Follow this as shown:
</p><pre class="screen">
<tt class="prompt">root# </tt> smbclient //massive/bobj -Ubobj%n3v3r2l8
smb: \&gt; dir
  .                    D        0  Wed Dec 17 01:16:19 2003
  ..                   D        0  Wed Dec 17 19:04:42 2003
  bin                  D        0  Tue Sep  2 04:00:57 2003
  Documents            D        0  Sun Nov 30 07:28:20 2003
  public_html          D        0  Sun Nov 30 07:28:20 2003
  .urlview             H      311  Fri Jul  7 06:55:35 2000
  .dvipsrc             H      208  Fri Nov 17 11:22:02 1995

          57681 blocks of size 524288. 57128 blocks available
smb: \&gt; q
</pre><p>
		Well done. All is working fine.
		</p></li></ol></div><p>
	The server <tt class="constant">MASSIVE</tt> is now configured, and it is time to move onto the next task.
	</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="ch6-ptrcfg"></a>Printer Configuration</h3></div></div><div></div></div><p><a class="indexterm" name="id2537794"></a>
	The configuration for Samba-3 to enable CUPS raw-print-through printing has already been
	taken care of in the <tt class="filename">smb.conf</tt> file. The only preparation needed for
	  <tt class="constant">smart</tt>
	printing to be possible involves creation of the directories in which Samba-3 stores
	Windows printing driver files.
	</p><div class="procedure"><ol type="1"><li><p>
                Configure all network attached printers to have a fixed IP address.
                </p></li><li><p>
                Create an entry in the DNS database on the server <tt class="constant">MASSIVE</tt>
                in both the forward lookup database for the zone <tt class="constant">abmas.biz.hosts</tt>
                and in the reverse lookup database for the network segment that the printer is to
                be located in. Example configuration files for similar zones were presented in
                <a href="secure.html#abmasbiz" title="Example 4.14. DNS Abmas.biz Forward Zone File">???</a> and in <a href="secure.html#eth2zone" title="Example 4.13. DNS 192.168.2 Reverse Zone File">???</a>.
                </p></li><li><p>
                Follow the instructions in the printer manufacturers' manuals to permit printing
                to port 9100.  Use any other port the manufacturer specifies for direct mode,
                raw printing.  This allows the CUPS spooler to print using raw mode protocols.
                <a class="indexterm" name="id2537870"></a>
                <a class="indexterm" name="id2537877"></a>
                </p></li><li><p><a class="indexterm" name="id2537890"></a>
                <a class="indexterm" name="id2537899"></a>
                Only on the server to which the printer is attached, configure the CUPS Print
                Queues as follows:
</p><pre class="screen">
<tt class="prompt">root# </tt> lpadmin -p <i class="parameter"><tt>printque</tt></i> -v socket://<i class="parameter"><tt>printer-name</tt></i>.abmas.biz:9100 -E
</pre><p>
                <a class="indexterm" name="id2537934"></a>
                This step creates the necessary print queue to use no assigned print filter. This
                is ideal for raw printing, i.e., printing without use of filters.
                The name <i class="parameter"><tt>printque</tt></i> is the name you have assigned for
                the particular printer.
                </p></li><li><p>
                Print queues may not be enabled at creation. Make certain that the queues
                you have just created are enabled by executing the following:
</p><pre class="screen">
<tt class="prompt">root# </tt> /usr/bin/enable <i class="parameter"><tt>printque</tt></i>
</pre><p>
                </p></li><li><p>
                Even though your print queue may be enabled, it is still possible that it
                may not accept print jobs. A print queue will service incoming printing
                requests only when configured to do so. Ensure that your print queue is
                set to accept incoming jobs by executing the following commands:
</p><pre class="screen">
<tt class="prompt">root# </tt> /usr/bin/accept <i class="parameter"><tt>printque</tt></i>
</pre><p>
                </p></li><li><p>
                <a class="indexterm" name="id2538016"></a>
                <a class="indexterm" name="id2538022"></a>
                <a class="indexterm" name="id2538029"></a>
                Edit the file <tt class="filename">/etc/cups/mime.convs</tt> to uncomment the line:
</p><pre class="screen">
application/octet-stream     application/vnd.cups-raw      0     -
</pre><p>
		</p></li><li><p>
		 <a class="indexterm" name="id2538057"></a>
		 Edit the file <tt class="filename">/etc/cups/mime.types</tt> to uncomment the line:
</p><pre class="screen">
application/octet-stream
</pre><p>
	        </p></li><li><p>
	        Refer to the CUPS printing manual for instructions regarding how to configure
	        CUPS so that print queues that reside on CUPS servers on remote networks
	        route print jobs to the print server that owns that queue. The default setting
	        on your CUPS server may automatically discover remotely installed printers and
	        may permit this functionality without requiring specific configuration.
	        </p></li><li><p>
		The following action creates the necessary directory sub-system. Follow these 
		steps to printing heaven:
</p><pre class="screen">
<tt class="prompt">root# </tt> mkdir -p /var/lib/samba/drivers/{W32ALPHA,W32MIPS,W32X86,WIN40}
<tt class="prompt">root# </tt> chown -R root.root /var/lib/samba/drivers
<tt class="prompt">root# </tt> chmod -R ug=rwx,o=rx /var/lib/samba/drivers
</pre><p>
		</p></li></ol></div></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="ch6-bldg1"></a>Samba-3 BDC Configuration</h2></div></div><div></div></div><div class="procedure"><p class="title"><b>Procedure 6.7. Configuration of BDC Called: <tt class="constant">BLDG1</tt></b></p><ol type="1"><li><p>
		Install the files in <a href="happy.html#ch6-bldg1-smbconf" title="Example 6.6. LDAP Based smb.conf File, Server: BLDG1">???</a>,
		<a href="happy.html#ch6-shareconfa" title="Example 6.8. LDAP Based smb.conf File, Shares Section  Part A">???</a>, and <a href="happy.html#ch6-shareconfb" title="Example 6.9. LDAP Based smb.conf File, Shares Section  Part B">???</a>
		into the <tt class="filename">/etc/samba/</tt> directory. The three files
		should be added together to form the <tt class="filename">smb.conf</tt> file.
		</p></li><li><p>
		Verify the <tt class="filename">smb.conf</tt> file as in step 2 of <a href="happy.html#ch6-massive" title="Samba-3 PDC Configuration">???</a>.
		</p></li><li><p>
		Carefully follow the steps outlined in <a href="happy.html#ch6-PAM-NSS" title="PAM and NSS Client Configuration">???</a>, taking
		particular note to install the correct <tt class="filename">ldap.conf</tt>.
		</p></li><li><p>
		Verify that the NSS resolver is working. You may need to cycle the run level
		to 1 and back to 5 before the NSS LDAP resolver functions. Follow these
		commands:
</p><pre class="screen">
<tt class="prompt">root# </tt> init 1
</pre><p>
		After the run level has been achieved, you are prompted to provide the
		<tt class="constant">root</tt> password. Log on, and then execute:
</p><pre class="screen">
<tt class="prompt">root# </tt> init 5
</pre><p>
		When the normal logon prompt appears, log into the system as
	    <tt class="constant">root</tt>
		and then execute these commands:
</p><pre class="screen">
<tt class="prompt">root# </tt> getent passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/bin/bash
daemon:x:2:2:Daemon:/sbin:/bin/bash
lp:x:4:7:Printing daemon:/var/spool/lpd:/bin/bash
mail:x:8:12:Mailer daemon:/var/spool/clientmqueue:/bin/false
...
Administrator:x:0:512:Netbios Domain Administrator:/home:/bin/false
nobody:x:999:514:nobody:/dev/null:/bin/false
bobj:x:1000:513:System User:/home/bobj:/bin/bash
stans:x:1001:513:System User:/home/stans:/bin/bash
chrisr:x:1002:513:System User:/home/chrisr:/bin/bash
maryv:x:1003:513:System User:/home/maryv:/bin/bash
vaioboss$:x:1005:553:vaioboss$:/dev/null:/bin/false
bldg1$:x:1006:553:bldg1$:/dev/null:/bin/false
</pre><p>
		This is the correct output. If the accounts that have UIDs above 512 are not shown, there is a problem.
		</p></li><li><p><a class="indexterm" name="id2538299"></a>
		The next step in the verification process involves testing the operation of UNIX group
		resolution via the NSS LDAP resolver. Execute these commands:
</p><pre class="screen">
<tt class="prompt">root# </tt> getent group
root:x:0:
bin:x:1:daemon
daemon:x:2:
sys:x:3:
...
Domain Admins:x:512:Administrator
Domain Users:x:513:bobj,stans,chrisr,maryv,jht
Domain Guests:x:514:
Administrators:x:544:
Users:x:545:
Guests:x:546:nobody
Power Users:x:547:
Account Operators:x:548:
Server Operators:x:549:
Print Operators:x:550:
Backup Operators:x:551:
Replicator:x:552:
Domain Computers:x:553:
Accounts:x:1000:
Finances:x:1001:
PIOps:x:1002:
</pre><p>
		This is also the correct and desired output, because it demonstrates that the LDAP client
		is able to communicate correctly with the LDAP server
	    (<tt class="constant">MASSIVE</tt>).
		</p></li><li><p><a class="indexterm" name="id2538341"></a>
		You must now set the LDAP administrative password into the
	    Samba-3 <tt class="filename">secrets.tdb</tt>
		file by executing this command:
</p><pre class="screen">
<tt class="prompt">root# </tt> smbpasswd -w not24get
Setting stored password for "cn=Manager,dc=abmas,dc=biz" in secrets.tdb
</pre><p>
		</p></li><li><p>
		Now you must obtain the Domain Security Identifier from the PDC and store it into the
		<tt class="filename">secrets.tdb</tt> file also. This step is not necessary with an LDAP
		passdb backend because Samba-3 obtains the Domain SID from the 
		sambaDomain object it automatically stores in the LDAP backend. It does not hurt to
		add the SID to the <tt class="filename">secrets.tdb</tt>, and if you wish to do so, this 
		command can achieve that:
</p><pre class="screen">
<tt class="prompt">root# </tt> net rpc getsid MEGANET2
Storing SID S-1-5-21-3504140859-1010554828-2431957765 \
                           for Domain MEGANET2 in secrets.tdb
</pre><p>
		When configuring a Samba-3 BDC that has an LDAP backend, there is no need to take
		any special action to join it to the Domain. However, winbind communicates with the
		Domain Controller that is running on the localhost and must be able to authenticate,
		thus requiring that the BDC should be joined to the Domain. The process of joining
		the Domain creates the necessary authentication accounts.
		</p></li><li><p>
		To join the Samba BDC to the Domain execute the following:
</p><pre class="screen">
<tt class="prompt">root# </tt> net rpc join -U Administrator%not24get
Joined domain MEGANET2.
</pre><p>
		This indicates that the Domain security account for the BDC has been correctly created.
		</p></li><li><p>
		<a class="indexterm" name="id2538445"></a>
		Verify that user and group account resolution works via Samba-3 tools as follows:
</p><pre class="screen">
<tt class="prompt">root# </tt> pdbedit -L
Administrator:0:Administrator
nobody:65534:nobody
bobj:1000:System User
stans:1001:System User
chrisr:1002:System User
maryv:1003:System User
bldg1$:1006:bldg1$

<tt class="prompt">root# </tt> net groupmap list
Domain Admins (S-1-5-21-3504140859-...-2431957765-512) -&gt; Domain Admins
Domain Users (S-1-5-21-3504140859-...-2431957765-513) -&gt; Domain Users
Domain Guests (S-1-5-21-3504140859-...-2431957765-514) -&gt; Domain Guests
Administrators (S-1-5-21-3504140859-...-2431957765-544) -&gt; Administrators
...
Accounts (S-1-5-21-3504140859-1010554828-2431957765-3001) -&gt; Accounts
Finances (S-1-5-21-3504140859-1010554828-2431957765-3003) -&gt; Finances
PIOps (S-1-5-21-3504140859-1010554828-2431957765-3005) -&gt; PIOps
</pre><p>
		The above results show that all things are in order.
		</p></li><li><p>
                The server you have so carefully built is now ready for another important step. Now
                start the Samba-3 server and validate its operation. Execute the following to render all
                the processes needed fully operative so that, upon system reboot, they are automatically
                started:
</p><pre class="screen">
<tt class="prompt">root# </tt> chkconfig named on
<tt class="prompt">root# </tt> chkconfig dhcpd on
<tt class="prompt">root# </tt> chkconfig nmb on
<tt class="prompt">root# </tt> chkconfig smb on
<tt class="prompt">root# </tt> chkconfig winbind on
<tt class="prompt">root# </tt> rcnmb start
<tt class="prompt">root# </tt> rcsmb start
<tt class="prompt">root# </tt> rcwinbind start
</pre><p>
		Samba-3 should now be running and is ready for a quick test. But not quite yet!
                </p></li><li><p>
		Your new <tt class="constant">BLDG1, BLDG2</tt> servers do not have home directories for users.
		To rectify this using the SUSE yast2 utility or by manually
	    editing the <tt class="filename">/etc/fstab</tt>
		file, add a mount entry to mount the <tt class="constant">home</tt> directory that has been exported
		from the <tt class="constant">MASSIVE</tt> server. Mount this resource before proceeding. An alternate
		approach could be to create local home directories for users who are to use these machines.
		This is a choice that you, as system administrator, must make. The following entry in the
		<tt class="filename">/etc/fstab</tt> file suffices for now:
</p><pre class="screen">
massive.abmas.biz:/home  /home  nfs     rw 0 0
</pre><p>
		To mount this resource, execute:
</p><pre class="screen">
<tt class="prompt">root# </tt> mount -a
</pre><p>
		Verify that the home directory has been mounted as follows:
</p><pre class="screen">
<tt class="prompt">root# </tt> df | grep home
massive:/home         29532988    283388  29249600   1% /home
</pre><p>
		</p></li><li><p>
		Implement a quick check using one of the users that is in the LDAP database. Here you go:
</p><pre class="screen">
<tt class="prompt">root# </tt> smbclient //bldg1/bobj -Ubobj%n3v3r2l8
smb: \&gt; dir
  .                    D        0  Wed Dec 17 01:16:19 2003
  ..                   D        0  Wed Dec 17 19:04:42 2003
  bin                  D        0  Tue Sep  2 04:00:57 2003
  Documents            D        0  Sun Nov 30 07:28:20 2003
  public_html          D        0  Sun Nov 30 07:28:20 2003
  .urlview             H      311  Fri Jul  7 06:55:35 2000
  .dvipsrc             H      208  Fri Nov 17 11:22:02 1995

          57681 blocks of size 524288. 57128 blocks available
smb: \&gt; q
</pre><p>
		</p></li></ol></div><div class="procedure"><a name="ch6-bldg2"></a><p class="title"><b>Procedure 6.8. Configuration of BDC Called: <tt class="constant">BLDG2</tt></b></p><ol type="1"><li><p>
		Install the files in <a href="happy.html#ch6-bldg2-smbconf" title="Example 6.7. LDAP Based smb.conf File, Server: BLDG2">???</a>,
		<a href="happy.html#ch6-shareconfa" title="Example 6.8. LDAP Based smb.conf File, Shares Section  Part A">???</a>, and <a href="happy.html#ch6-shareconfb" title="Example 6.9. LDAP Based smb.conf File, Shares Section  Part B">???</a>
		into the <tt class="filename">/etc/samba/</tt> directory. The three files
		should be added together to form the <tt class="filename">smb.conf</tt> file.
		</p></li><li><p>
		Follow carefully the steps shown in <a href="happy.html#ch6-bldg1" title="Samba-3 BDC Configuration">???</a>, starting at step 2.
		</p></li></ol></div><div class="example"><a name="ch6-bldg1-smbconf"></a><p class="title"><b>Example 6.6. LDAP Based smb.conf File, Server: BLDG1</b></p><table class="simplelist" border="0" summary="Simple list"><tr><td># Global parameters</td></tr><tr><td> </td></tr><tr><td><i class="parameter"><tt>[global]</tt></i></td></tr><tr><td><a class="indexterm" name="id2538770"></a><i class="parameter"><tt>
					
				unix charset = LOCALE</tt></i></td></tr><tr><td><a class="indexterm" name="id2538786"></a><i class="parameter"><tt>
					
				workgroup = MEGANET2</tt></i></td></tr><tr><td><a class="indexterm" name="id2538802"></a><i class="parameter"><tt>
					
				netbios name = BLDG1</tt></i></td></tr><tr><td><a class="indexterm" name="id2538818"></a><i class="parameter"><tt>
					
				passdb backend = ldapsam:ldap://massive.abmas.biz</tt></i></td></tr><tr><td><a class="indexterm" name="id2538835"></a><i class="parameter"><tt>
					
				username map = /etc/samba/smbusers</tt></i></td></tr><tr><td><a class="indexterm" name="id2538851"></a><i class="parameter"><tt>
					
				log level = 1</tt></i></td></tr><tr><td><a class="indexterm" name="id2538866"></a><i class="parameter"><tt>
					
				syslog = 0</tt></i></td></tr><tr><td><a class="indexterm" name="id2538881"></a><i class="parameter"><tt>
					
				log file = /var/log/samba/%m</tt></i></td></tr><tr><td><a class="indexterm" name="id2538897"></a><i class="parameter"><tt>
					
				max log size = 50</tt></i></td></tr><tr><td><a class="indexterm" name="id2538913"></a><i class="parameter"><tt>
					
				smb ports = 139 445</tt></i></td></tr><tr><td><a class="indexterm" name="id2538928"></a><i class="parameter"><tt>
					
				name resolve order = wins bcast hosts</tt></i></td></tr><tr><td><a class="indexterm" name="id2538945"></a><i class="parameter"><tt>
					
				printcap name = CUPS</tt></i></td></tr><tr><td><a class="indexterm" name="id2538960"></a><i class="parameter"><tt>
					
				show add printer wizard = No</tt></i></td></tr><tr><td><a class="indexterm" name="id2538976"></a><i class="parameter"><tt>
					
				logon script = scripts\logon.bat</tt></i></td></tr><tr><td><a class="indexterm" name="id2538993"></a><i class="parameter"><tt>
					
				logon path = \\%L\profiles\%U</tt></i></td></tr><tr><td><a class="indexterm" name="id2539008"></a><i class="parameter"><tt>
					
				logon drive = X:</tt></i></td></tr><tr><td><a class="indexterm" name="id2539024"></a><i class="parameter"><tt>
					
				domain logons = Yes</tt></i></td></tr><tr><td><a class="indexterm" name="id2539040"></a><i class="parameter"><tt>
					
				domain master = No</tt></i></td></tr><tr><td><a class="indexterm" name="id2539056"></a><i class="parameter"><tt>
					
				wins server = 172.16.0.1</tt></i></td></tr><tr><td><a class="indexterm" name="id2539071"></a><i class="parameter"><tt>
					
				ldap suffix = dc=abmas,dc=biz</tt></i></td></tr><tr><td><a class="indexterm" name="id2539087"></a><i class="parameter"><tt>
					
				ldap machine suffix = ou=People</tt></i></td></tr><tr><td><a class="indexterm" name="id2539104"></a><i class="parameter"><tt>
					
				ldap user suffix = ou=People</tt></i></td></tr><tr><td><a class="indexterm" name="id2539119"></a><i class="parameter"><tt>
					
				ldap group suffix = ou=Groups</tt></i></td></tr><tr><td><a class="indexterm" name="id2539135"></a><i class="parameter"><tt>
					
				ldap idmap suffix = ou=Idmap</tt></i></td></tr><tr><td><a class="indexterm" name="id2539151"></a><i class="parameter"><tt>
					
				ldap admin dn = cn=Manager,dc=abmas,dc=biz</tt></i></td></tr><tr><td><a class="indexterm" name="id2539167"></a><i class="parameter"><tt>
					
				idmap backend = ldap:ldap://massive.abmas.biz</tt></i></td></tr><tr><td><a class="indexterm" name="id2539184"></a><i class="parameter"><tt>
					
				idmap uid = 10000-20000</tt></i></td></tr><tr><td><a class="indexterm" name="id2539199"></a><i class="parameter"><tt>
					
				idmap gid = 10000-20000</tt></i></td></tr><tr><td><a class="indexterm" name="id2539214"></a><i class="parameter"><tt>
					
				printing = cups</tt></i></td></tr><tr><td><a class="indexterm" name="id2539230"></a><i class="parameter"><tt>
					
				printer admin = Administrator, chrisr</tt></i></td></tr></table></div><div class="example"><a name="ch6-bldg2-smbconf"></a><p class="title"><b>Example 6.7. LDAP Based smb.conf File, Server: BLDG2</b></p><table class="simplelist" border="0" summary="Simple list"><tr><td># Global parameters</td></tr><tr><td> </td></tr><tr><td><i class="parameter"><tt>[global]</tt></i></td></tr><tr><td><a class="indexterm" name="id2539275"></a><i class="parameter"><tt>
					
				unix charset = LOCALE</tt></i></td></tr><tr><td><a class="indexterm" name="id2539291"></a><i class="parameter"><tt>
					
				workgroup = MEGANET2</tt></i></td></tr><tr><td><a class="indexterm" name="id2539306"></a><i class="parameter"><tt>
					
				netbios name = BLDG2</tt></i></td></tr><tr><td><a class="indexterm" name="id2539322"></a><i class="parameter"><tt>
					
				passdb backend = ldapsam:ldap://massive.abmas.biz</tt></i></td></tr><tr><td><a class="indexterm" name="id2539339"></a><i class="parameter"><tt>
					
				username map = /etc/samba/smbusers</tt></i></td></tr><tr><td><a class="indexterm" name="id2539355"></a><i class="parameter"><tt>
					
				log level = 1</tt></i></td></tr><tr><td><a class="indexterm" name="id2539370"></a><i class="parameter"><tt>
					
				syslog = 0</tt></i></td></tr><tr><td><a class="indexterm" name="id2539386"></a><i class="parameter"><tt>
					
				log file = /var/log/samba/%m</tt></i></td></tr><tr><td><a class="indexterm" name="id2539401"></a><i class="parameter"><tt>
					
				max log size = 50</tt></i></td></tr><tr><td><a class="indexterm" name="id2539417"></a><i class="parameter"><tt>
					
				smb ports = 139 445</tt></i></td></tr><tr><td><a class="indexterm" name="id2539433"></a><i class="parameter"><tt>
					
				name resolve order = wins bcast hosts</tt></i></td></tr><tr><td><a class="indexterm" name="id2539450"></a><i class="parameter"><tt>
					
				printcap name = CUPS</tt></i></td></tr><tr><td><a class="indexterm" name="id2539465"></a><i class="parameter"><tt>
					
				show add printer wizard = No</tt></i></td></tr><tr><td><a class="indexterm" name="id2539481"></a><i class="parameter"><tt>
					
				logon script = scripts\logon.bat</tt></i></td></tr><tr><td><a class="indexterm" name="id2539497"></a><i class="parameter"><tt>
					
				logon path = \\%L\profiles\%U</tt></i></td></tr><tr><td><a class="indexterm" name="id2539513"></a><i class="parameter"><tt>
					
				logon drive = X:</tt></i></td></tr><tr><td><a class="indexterm" name="id2539528"></a><i class="parameter"><tt>
					
				domain logons = Yes</tt></i></td></tr><tr><td><a class="indexterm" name="id2539544"></a><i class="parameter"><tt>
					
				domain master = No</tt></i></td></tr><tr><td><a class="indexterm" name="id2539560"></a><i class="parameter"><tt>
					
				wins server = 172.16.0.1</tt></i></td></tr><tr><td><a class="indexterm" name="id2539576"></a><i class="parameter"><tt>
					
				ldap suffix = dc=abmas,dc=biz</tt></i></td></tr><tr><td><a class="indexterm" name="id2539592"></a><i class="parameter"><tt>
					
				ldap machine suffix = ou=People</tt></i></td></tr><tr><td><a class="indexterm" name="id2539608"></a><i class="parameter"><tt>
					
				ldap user suffix = ou=People</tt></i></td></tr><tr><td><a class="indexterm" name="id2539623"></a><i class="parameter"><tt>
					
				ldap group suffix = ou=Groups</tt></i></td></tr><tr><td><a class="indexterm" name="id2539639"></a><i class="parameter"><tt>
					
				ldap idmap suffix = ou=Idmap</tt></i></td></tr><tr><td><a class="indexterm" name="id2539655"></a><i class="parameter"><tt>
					
				ldap admin dn = cn=Manager,dc=abmas,dc=biz</tt></i></td></tr><tr><td><a class="indexterm" name="id2539672"></a><i class="parameter"><tt>
					
				idmap backend = ldap://massive.abmas.biz</tt></i></td></tr><tr><td><a class="indexterm" name="id2539688"></a><i class="parameter"><tt>
					
				idmap uid = 10000-20000</tt></i></td></tr><tr><td><a class="indexterm" name="id2539703"></a><i class="parameter"><tt>
					
				idmap gid = 10000-20000</tt></i></td></tr><tr><td><a class="indexterm" name="id2539719"></a><i class="parameter"><tt>
					
				printing = cups</tt></i></td></tr><tr><td><a class="indexterm" name="id2539735"></a><i class="parameter"><tt>
					
				printer admin = Administrator, chrisr</tt></i></td></tr></table></div><div class="example"><a name="ch6-shareconfa"></a><p class="title"><b>Example 6.8. LDAP Based smb.conf File, Shares Section  Part A</b></p><table class="simplelist" border="0" summary="Simple list"><tr><td> </td></tr><tr><td><i class="parameter"><tt>[accounts]</tt></i></td></tr><tr><td><a class="indexterm" name="id2539773"></a><i class="parameter"><tt>
					
				comment = Accounting Files</tt></i></td></tr><tr><td><a class="indexterm" name="id2539789"></a><i class="parameter"><tt>
					
				path = /data/accounts</tt></i></td></tr><tr><td><a class="indexterm" name="id2539804"></a><i class="parameter"><tt>
					
				read only = No</tt></i></td></tr><tr><td> </td></tr><tr><td><i class="parameter"><tt>[service]</tt></i></td></tr><tr><td><a class="indexterm" name="id2539829"></a><i class="parameter"><tt>
					
				comment = Financial Services Files</tt></i></td></tr><tr><td><a class="indexterm" name="id2539845"></a><i class="parameter"><tt>
					
				path = /data/service</tt></i></td></tr><tr><td><a class="indexterm" name="id2539861"></a><i class="parameter"><tt>
					
				read only = No</tt></i></td></tr><tr><td> </td></tr><tr><td><i class="parameter"><tt>[pidata]</tt></i></td></tr><tr><td><a class="indexterm" name="id2539885"></a><i class="parameter"><tt>
					
				comment = Property Insurance Files</tt></i></td></tr><tr><td><a class="indexterm" name="id2539902"></a><i class="parameter"><tt>
					
				path = /data/pidata</tt></i></td></tr><tr><td><a class="indexterm" name="id2539917"></a><i class="parameter"><tt>
					
				read only = No</tt></i></td></tr><tr><td> </td></tr><tr><td><i class="parameter"><tt>[homes]</tt></i></td></tr><tr><td><a class="indexterm" name="id2539941"></a><i class="parameter"><tt>
					
				comment = Home Directories</tt></i></td></tr><tr><td><a class="indexterm" name="id2539957"></a><i class="parameter"><tt>
					
				valid users = %S</tt></i></td></tr><tr><td><a class="indexterm" name="id2539973"></a><i class="parameter"><tt>
					
				read only = No</tt></i></td></tr><tr><td><a class="indexterm" name="id2539988"></a><i class="parameter"><tt>
					
				browseable = No</tt></i></td></tr><tr><td> </td></tr><tr><td><i class="parameter"><tt>[printers]</tt></i></td></tr><tr><td><a class="indexterm" name="id2540013"></a><i class="parameter"><tt>
					
				comment = SMB Print Spool</tt></i></td></tr><tr><td><a class="indexterm" name="id2540028"></a><i class="parameter"><tt>
					
				path = /var/spool/samba</tt></i></td></tr><tr><td><a class="indexterm" name="id2540044"></a><i class="parameter"><tt>
					
				guest ok = Yes</tt></i></td></tr><tr><td><a class="indexterm" name="id2540060"></a><i class="parameter"><tt>
					
				printable = Yes</tt></i></td></tr><tr><td><a class="indexterm" name="id2540075"></a><i class="parameter"><tt>
					
				browseable = No</tt></i></td></tr></table></div><div class="example"><a name="ch6-shareconfb"></a><p class="title"><b>Example 6.9. LDAP Based smb.conf File, Shares Section  Part B</b></p><table class="simplelist" border="0" summary="Simple list"><tr><td> </td></tr><tr><td><i class="parameter"><tt>[apps]</tt></i></td></tr><tr><td><a class="indexterm" name="id2540114"></a><i class="parameter"><tt>
					
				comment = Application Files</tt></i></td></tr><tr><td><a class="indexterm" name="id2540130"></a><i class="parameter"><tt>
					
				path = /apps</tt></i></td></tr><tr><td><a class="indexterm" name="id2540145"></a><i class="parameter"><tt>
					
				admin users = bjordan</tt></i></td></tr><tr><td><a class="indexterm" name="id2540161"></a><i class="parameter"><tt>
					
				read only = No</tt></i></td></tr><tr><td> </td></tr><tr><td><i class="parameter"><tt>[netlogon]</tt></i></td></tr><tr><td><a class="indexterm" name="id2540185"></a><i class="parameter"><tt>
					
				comment = Network Logon Service</tt></i></td></tr><tr><td><a class="indexterm" name="id2540202"></a><i class="parameter"><tt>
					
				path = /var/lib/samba/netlogon</tt></i></td></tr><tr><td><a class="indexterm" name="id2540217"></a><i class="parameter"><tt>
					
				guest ok = Yes</tt></i></td></tr><tr><td><a class="indexterm" name="id2540233"></a><i class="parameter"><tt>
					
				locking = No</tt></i></td></tr><tr><td> </td></tr><tr><td><i class="parameter"><tt>[profiles]</tt></i></td></tr><tr><td><a class="indexterm" name="id2540257"></a><i class="parameter"><tt>
					
				comment = Profile Share</tt></i></td></tr><tr><td><a class="indexterm" name="id2540273"></a><i class="parameter"><tt>
					
				path = /var/lib/samba/profiles</tt></i></td></tr><tr><td><a class="indexterm" name="id2540288"></a><i class="parameter"><tt>
					
				read only = No</tt></i></td></tr><tr><td><a class="indexterm" name="id2540304"></a><i class="parameter"><tt>
					
				profile acls = Yes</tt></i></td></tr><tr><td> </td></tr><tr><td><i class="parameter"><tt>[profdata]</tt></i></td></tr><tr><td><a class="indexterm" name="id2540329"></a><i class="parameter"><tt>
					
				comment = Profile Data Share</tt></i></td></tr><tr><td><a class="indexterm" name="id2540344"></a><i class="parameter"><tt>
					
				path = /var/lib/samba/profdata</tt></i></td></tr><tr><td><a class="indexterm" name="id2540360"></a><i class="parameter"><tt>
					
				read only = No</tt></i></td></tr><tr><td><a class="indexterm" name="id2540376"></a><i class="parameter"><tt>
					
				profile acls = Yes</tt></i></td></tr><tr><td> </td></tr><tr><td><i class="parameter"><tt>[print$]</tt></i></td></tr><tr><td><a class="indexterm" name="id2540400"></a><i class="parameter"><tt>
					
				comment = Printer Drivers</tt></i></td></tr><tr><td><a class="indexterm" name="id2540416"></a><i class="parameter"><tt>
					
				path = /var/lib/samba/drivers</tt></i></td></tr><tr><td><a class="indexterm" name="id2540432"></a><i class="parameter"><tt>
					
				browseable = yes</tt></i></td></tr><tr><td><a class="indexterm" name="id2540448"></a><i class="parameter"><tt>
					
				guest ok = no</tt></i></td></tr><tr><td><a class="indexterm" name="id2540463"></a><i class="parameter"><tt>
					
				read only = yes</tt></i></td></tr><tr><td><a class="indexterm" name="id2540479"></a><i class="parameter"><tt>
					
				write list = Administrator, chrisr</tt></i></td></tr></table></div><div class="example"><a name="ch6-ldifadd"></a><p class="title"><b>Example 6.10. LDIF IDMAP Add-On Load File  File: /etc/openldap/idmap.LDIF</b></p><pre class="screen">
dn: ou=Idmap,dc=abmas,dc=biz
objectClass: organizationalUnit
ou: idmap
structuralObjectClass: organizationalUnit
</pre></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2540517"></a>Miscellaneous Server Preparation Tasks</h2></div></div><div></div></div><p>
	My father would say, &#8220;<span class="quote"><span class="emphasis"><em>Dinner is not over until the dishes have been done.</em></span></span>&#8221;
	The makings of a great network environment take a lot of effort and attention to detail.
	So far you have completed most of the complex (and to many administrators, the interesting
	part of server configuration) steps, but remember to tie it all together. Here are
	a few more steps that must be completed so that your network runs like a well-rehearsed
	orchestra.
	</p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2540544"></a>Configuring Directory Share Point Roots</h3></div></div><div></div></div><p>
	In your <tt class="filename">smb.conf</tt> file, you have specified Windows shares. Each has a
	  <i class="parameter"><tt>path</tt></i>
	parameter. Even though it is obvious to all, one of the common Samba networking problems is
	caused by forgetting to verify that every such share root directory actually exists and that it
	has the necessary permissions and ownership.
	</p><p>
	Here is an example, but remember to create the directory needed for every share:
</p><pre class="screen">
<tt class="prompt">root# </tt> mkdir -p /data/{accounts,finsvcs,piops}
<tt class="prompt">root# </tt> mkdir -p /apps
<tt class="prompt">root# </tt> chown -R root.root /data
<tt class="prompt">root# </tt> chown -R root.root /apps
<tt class="prompt">root# </tt> chown -R bobj.Accounts /data/accounts
<tt class="prompt">root# </tt> chown -R bobj.Finances /data/finsvcs
<tt class="prompt">root# </tt> chown -R bobj.PIOps /data/pidata
<tt class="prompt">root# </tt> chmod -R ug+rwxs,o-rwx /data
<tt class="prompt">root# </tt> chmod -R ug+rwx,o+rx-w /apps
</pre><p>
	</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2540640"></a>Configuring Profile Directories</h3></div></div><div></div></div><p>
	You made a conscious decision to do everything it would take to improve network client
	performance. One of your decisions was to implement folder redirection. This means that Windows
	user desktop profiles are now made up of two components  a dynamically loaded part and a set of file
	network folders.
	</p><p>
	For this arrangement to work, every user needs a directory structure for the network folder
	portion of their profile as shown here:
</p><pre class="screen">
<tt class="prompt">root# </tt> mkdir -p /var/lib/samba/profdata
<tt class="prompt">root# </tt> chown root.root /var/lib/samba/profdata
<tt class="prompt">root# </tt> chmod 755 /var/lib/samba/profdata

# Per user structure
<tt class="prompt">root# </tt> cd /var/lib/samba/profdata
<tt class="prompt">root# </tt> mkdir -p <span class="emphasis"><em>username</em></span>
<tt class="prompt">root# </tt> for i in InternetFiles Cookies History AppData \
                      LocalSettings MyPictures MyDocuments Recent
<tt class="prompt">root# </tt> do
<tt class="prompt">root# </tt> mkdir <span class="emphasis"><em>username</em></span>/$i
<tt class="prompt">root# </tt> done
<tt class="prompt">root# </tt> chown -R <span class="emphasis"><em>username</em></span>.Domain\ Users <span class="emphasis"><em>username</em></span>
<tt class="prompt">root# </tt> chmod -R 750 <span class="emphasis"><em>username</em></span>
</pre><p>
	</p><p><a class="indexterm" name="id2540757"></a><a class="indexterm" name="id2540765"></a>
	You have three options insofar as the dynamically loaded portion of the roaming profile
	is concerned: 
	</p><div class="itemizedlist"><ul type="disc"><li><p>You may permit the user to obtain a default profile.</p></li><li><p>You can create a mandatory profile.</p></li><li><p>You can create a group profile (which is almost always a mandatory profile).</p></li></ul></div><p>
	  Mandatory profiles cannot be overwritten by a user. The change from
	  a user profile to a mandatory profile is effected by renaming the
	  <tt class="filename">NTUSER.DAT</tt> to
	  <tt class="filename">NTUSER.MAN</tt>, i.e., just by changing the filename
	  extension.
	  </p><p><a class="indexterm" name="id2540816"></a><a class="indexterm" name="id2540824"></a>
	The location of the profile that a user can obtain is set in the users' account in the LDAP passdb backend.
	You can manage this using the Idealx smbldap-tools or using the 
	<a href="ftp://ftp.microsoft.com/Softlib/MSLFILES/SRVTOOLS.EXE" target="_top">Windows NT4 Domain User Manager.</a>
	</p><p>
	It may not be obvious that you must ensure that the root directory for the user's profile exists
	and has the needed permissions. Use the following commands to create this directory:
</p><pre class="screen">
<tt class="prompt">root# </tt> mkdir -p /var/lib/samba/profiles/<span class="emphasis"><em>username</em></span>
<tt class="prompt">root# </tt> chown <span class="emphasis"><em>username</em></span>.Domain\ Users
	    /var/lib/samba/profiles/<span class="emphasis"><em>username</em></span>
<tt class="prompt">root# </tt> chmod 700  /var/lib/samba/profiles/<span class="emphasis"><em>username</em></span>
</pre><p>
	</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2540891"></a>Preparation of Logon Scripts</h3></div></div><div></div></div><p><a class="indexterm" name="id2540898"></a>
	The use of a logon script with Windows XP Professional is an option that every site should consider.
	Unless you have locked down the desktop so the user cannot change anything, there is risk that
	a vital network drive setting may be broken or that printer connections may be lost. Logon scripts
	can help to restore persistent network folder (drive) and printer connections in a predictable
	manner. One situation in which such breakage may occur in particular is when a mobile PC (notebook)
	user attaches to another company's network that forces environment changes that are alien to your
	network.
	</p><p>
	If you decide to use network logon scripts, by reference to the <tt class="filename">smb.conf</tt> files for the Domain
	Controllers, you see that the path to the share point for the
	  <tt class="constant">NETLOGON</tt>
	share defined is <tt class="filename">/var/lib/samba/netlogon</tt>. The path defined for the logon
	script inside that share is <tt class="filename">scripts\logon.bat</tt>. This means that as a Windows
	NT/200x/XP client logs onto the network, it tries to obtain the file
	  <tt class="filename">logon.bat</tt>
	from the fully qualified path <tt class="filename">/var/lib/samba/netlogon/scripts</tt>. This fully
	qualified path should, therefore, exist whether you install the
	  <tt class="filename">logon.bat</tt>.
	</p><p>
	You can, of course, create the fully qualified path by executing:
</p><pre class="screen">
<tt class="prompt">root# </tt> mkdir -p /var/lib/samba/netlogon/scripts
</pre><p>
	</p><p>
	You should research the options for logon script implementation by referring to <span class="emphasis"><em>TOSHARG</em></span>, Chapter 21,
	Section 21.4. A quick Web search will bring up a host of options. One of the most popular logon
	facilities in use today is called <a href="http://www.kixtart.org" target="_top">KiXtart.</a>
	</p></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2541004"></a>Windows Client Configuration</h2></div></div><div></div></div><p><a class="indexterm" name="id2541011"></a>
	In the next few sections, you can configure a new Windows XP Professional disk image on a staging
	machine. You will configure all software, printer settings, profile and policy handling, and desktop
	default profile settings on this system. When it is complete, you copy the contents of the
	<tt class="filename">C:\Documents and Settings\Default User</tt> directory to a directory with the same
	name in the <tt class="constant">NETLOGON</tt> share on the Domain Controllers.
	</p><p>
	Much can be learned from the Microsoft Support site regarding how best to set up shared profiles.
	One knowledge-base article in particular stands out. See:
	<a href="http://support.microsoft.com/default.aspx&amp;scid=kb;en-us;168475" target="_top">How to Create a 
	Base Profile for All Users.</a>

	</p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="redirfold"></a>Configuration of Default Profile with Folder Redirection</h3></div></div><div></div></div><p><a class="indexterm" name="id2541063"></a>
	Log onto the Windows XP Professional workstation as the local <tt class="constant">Administrator</tt>.
	It is necessary to expose folders that are generally hidden to provide
	  access to the <tt class="constant">Default User</tt>
	folder.
	</p><div class="procedure"><p class="title"><b>Procedure 6.9. Expose Hidden Folders</b></p><ol type="1"><li><p>
		Launch the Windows Explorer by clicking
			<span class="guimenu">Start</span>-&gt;<span class="guimenuitem">My Computer</span>-&gt;<span class="guimenuitem">Tools</span>-&gt;<span class="guimenuitem">Folder Options</span>-&gt;<span class="guimenuitem">View Tab</span>.
		Select <span class="guilabel">Show hidden files and folders</span>,
	      and click <span class="guibutton">OK</span>.
		Exit Windows Explorer.
		</p></li><li><p><a class="indexterm" name="id2541148"></a>
		Launch the Registry Editor. Click 
		<span class="guimenu">Start</span>-&gt;<span class="guimenuitem">Run</span>. Key in <span><b class="command">regedt32</b></span>, and click
	      <span class="guibutton">OK</span>.
		</p></li></ol></div><p>
	</p><div class="procedure"><a name="ch6-rdrfldr"></a><p class="title"><b>Procedure 6.10. Redirect Folders in Default System User Profile</b></p><ol type="1"><li><p><a class="indexterm" name="id2541206"></a><a class="indexterm" name="id2541214"></a>
		Give focus to <tt class="constant">HKEY_LOCAL_MACHINE</tt> hive entry in the left panel.
		Click <span class="guimenu">File</span>-&gt;<span class="guimenuitem">Load Hive...</span>-&gt;<span class="guimenuitem">[Panel] Documents and Settings</span>-&gt;<span class="guimenuitem">[Panel] Default User</span>-&gt;<span class="guimenuitem">NTUSER</span>-&gt;<span class="guimenuitem">Open</span>. In the dialog box that opens, enter the
	      key name <tt class="constant">Default</tt>
		and click <span class="guibutton">OK</span>.
		</p></li><li><p>
		Browse inside the newly loaded Default folder to:
</p><pre class="screen">
HKEY_LOCAL_MACHINE\Default\Software\Microsoft\Windows\
                     CurrentVersion\Explorer\User Shell Folders\
</pre><p>
		The contents of the right panel reveals the contents as
	      shown in <a href="happy.html#XP-screen001" title="Figure 6.3. Windows XP Professional  User Shared Folders">???</a>.
		</p></li><li><p><a class="indexterm" name="id2541309"></a><a class="indexterm" name="id2541316"></a>
		You edit hive keys. Acceptable values to replace the 
		<tt class="constant">%USERPROFILE%</tt> variable includes:

		</p><div class="itemizedlist"><ul type="disc"><li><p>A drive letter such as: <tt class="constant">U:</tt></p></li><li><p>A direct network path such as:
		    <tt class="constant">\\MASSIVE\profdata</tt></p></li><li><p>A network redirection (UNC name) that contains a macro such as: </p><p><tt class="constant">\\%LOGONSERVER%\profdata\</tt></p></li></ul></div><p>
		</p></li><li><p><a class="indexterm" name="id2541364"></a>
		Set the registry keys as shown in <a href="happy.html#proffold" title="Table 6.3. Default Profile Redirections">???</a>. Your implementation makes the assumption
		that users have statically located machines. Notebook computers (mobile users) need to be
		accommodated using local profiles. This is not an uncommon assumption.
		</p></li><li><p>
		Click back to the root of the loaded hive <tt class="constant">Default</tt>.
		Click <span class="guimenu">File</span>-&gt;<span class="guimenuitem">Unload Hive...</span>-&gt;<span class="guimenuitem">Yes</span>.
		</p></li><li><p><a class="indexterm" name="id2541420"></a>
		Click <span class="guimenu">File</span>-&gt;<span class="guimenuitem">Exit</span>. This exits the
		Registry Editor.
		</p></li><li><p>
		Now follow the procedure given in <a href="happy.html#ch6-locgrppol" title="The Local Group Policy">???</a>. Make sure that each folder you
		have redirected is in the exclusion list.
		</p></li><li><p>
		You are now ready to copy<sup>[<a name="id2541467" href="#ftn.id2541467">11</a>]</sup> 
		the Default User profile to the Samba Domain Controllers. Launch Microsoft
		Windows Explorer, and use it to copy the full contents of the
	      directory <tt class="filename">Default User</tt>
		that is in the <tt class="filename">C:\Documents and Settings</tt> to the root directory of the
		<tt class="constant">NETLOGON</tt> share. If the <tt class="constant">NETLOGON</tt> share has the defined
		UNIX path of <tt class="filename">/var/lib/samba/netlogon</tt>, when the copy is complete there must be
		a directory in there called <tt class="filename">Default User</tt>.
		</p></li></ol></div><div class="procedure"><p class="title"><b>Procedure 6.11. Reset Folder Display to Original Behavior</b></p><ul><li><p>
		To launch the Windows Explorer, click
			<span class="guimenu">Start</span>-&gt;<span class="guimenuitem">My Computer</span>-&gt;<span class="guimenuitem">Tools</span>-&gt;<span class="guimenuitem">Folder Options</span>-&gt;<span class="guimenuitem">View Tab</span>.
		Deselect <span class="guilabel">Show hidden files and folders</span>,
	      and click <span class="guibutton">OK</span>.
		Exit Windows Explorer.
		</p></li></ul></div><div class="figure"><a name="XP-screen001"></a><p class="title"><b>Figure 6.3. Windows XP Professional  User Shared Folders</b></p><div class="mediaobject"><img src="images/XP-screen001.png" width="351" alt="Windows XP Professional User Shared Folders"></div></div><div class="table"><a name="proffold"></a><p class="title"><b>Table 6.3. Default Profile Redirections</b></p><table summary="Default Profile Redirections" border="1"><colgroup><col align="left"><col align="left"></colgroup><thead><tr><th align="left">Registry Key</th><th align="left">Redirected Value</th></tr></thead><tbody><tr><td align="left">Cache</td><td align="left">%LOGONSERVER%\profdata\%USERNAME%\InternetFiles</td></tr><tr><td align="left">Cookies</td><td align="left">%LOGONSERVER%\profdata\%USERNAME%\Cookies</td></tr><tr><td align="left">History</td><td align="left">%LOGONSERVER%\profdata\%USERNAME%\History</td></tr><tr><td align="left">Local AppData</td><td align="left">%LOGONSERVER%\profdata\%USERNAME%\AppData</td></tr><tr><td align="left">Local Settings</td><td align="left">%LOGONSERVER%\profdata\%USERNAME%\LocalSettings</td></tr><tr><td align="left">My Pictures</td><td align="left">%LOGONSERVER%\profdata\%USERNAME%\MyPictures</td></tr><tr><td align="left">Personal</td><td align="left">%LOGONSERVER%\profdata\%USERNAME%\MyDocuments</td></tr><tr><td align="left">Recent</td><td align="left">%LOGONSERVER%\profdata\%USERNAME%\Recent</td></tr></tbody></table></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2541760"></a>Configuration of MS Outlook to Relocate PST File</h3></div></div><div></div></div><p><a class="indexterm" name="id2541767"></a>
	Microsoft Outlook can store a Personal Storage file, generally known as a PST file.
	It is the nature of email storage that this file grows, at times quite rapidly.
	So that users' email is available to them at every workstation they may log onto,
	it is common practice in well-controlled sites to redirect the PST folder to the
	users' home directory. Follow these steps for each user who wishes to do this.
	</p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>
	It is presumed that Outlook Express has been configured for use.
	</p></div><p>
	Launch Outlook Express 6. Click
	<span class="guimenu">Tools</span>-&gt;<span class="guimenuitem">Options</span>-&gt;<span class="guimenuitem">Maintenance</span>-&gt;<span class="guimenuitem">Store Folder</span>-&gt;<span class="guimenuitem">Change</span>.
	</p><p>
	Follow the on-screen prompts to relocate the PST file to the desired location.
	</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2541837"></a>Configure Delete Cached Profiles on Logout</h3></div></div><div></div></div><p>
	To configure the Windows XP Professional client to auto-delete roaming profiles on logout:
	</p><p><a class="indexterm" name="id2541849"></a>
	  Click 
	<span class="guimenu">Start</span>-&gt;<span class="guimenuitem">Run</span>. In the dialog box, enter: <span><b class="command">MMC</b></span>
	  and click <span class="guibutton">OK</span>.
	</p><p>
	Follow these steps to set the default behavior of the staging machine so that all roaming
	profiles are deleted as network users log out of the system. Click
	<span class="guimenu">File</span>-&gt;<span class="guimenuitem">Add/Remove Snap-in</span>-&gt;<span class="guimenuitem">Add</span>-&gt;<span class="guimenuitem">Group Policy</span>-&gt;<span class="guimenuitem">Add</span>-&gt;<span class="guimenuitem">Finish</span>-&gt;<span class="guimenuitem">Close</span>-&gt;<span class="guimenuitem">OK</span>. 
	</p><p><a class="indexterm" name="id2541946"></a>
	The Microsoft Management Console now shows the <span class="guimenu">Group Policy</span>
	utility that enables you to set the policies needed. In the left panel, click
	<span class="guimenuitem">Local Computer Policy</span>-&gt;<span class="guimenuitem">Administrative Templates</span>-&gt;<span class="guimenuitem">System</span>-&gt;<span class="guimenuitem">User Profiles</span>. In the right panel, set the properties shown here by double-clicking on each
	item as shown:
	</p><div class="itemizedlist"><ul type="disc"><li><p>Do not check for user ownership of Roaming Profile Folders = Enabled</p></li><li><p>Delete cached copies of roaming profiles = Enabled</p></li></ul></div><p>
	Close the Microsoft Management Console. The settings take immediate effect and persist onto all image copies
	made of this system to deploy the new standard desktop system.
	</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2542020"></a>Uploading Printer Drivers to Samba Servers</h3></div></div><div></div></div><p><a class="indexterm" name="id2542027"></a>
	Users want to be able to use network printers. You have a vested interest in making
	it easy for them to print. You have chosen to install the printer drivers onto the Samba
	servers and to enable point-and-click (drag-and-drop) printing. This process results in
	Samba being able to automatically provide the Windows client with the driver necessary to
	print to the printer chosen. The following procedure must be followed for every network
	printer:
	</p><div class="procedure"><ol type="1"><li><p>
		Join your Windows XP Professional workstation (the staging machine) to the 
		<tt class="constant">MEGANET2</tt> Domain. If you are not sure of the procedure, 
		follow the guidance given in <a href="appendix.html#domjoin" title="Joining a Domain: Windows 200x/XP Professional">???</a>.
		</p></li><li><p>
		After the machine has re-booted, log onto the workstation as the domain
		<tt class="constant">Administrator</tt>.
		</p></li><li><p>
		Launch MS Windows Explorer. Navigate in the left panel. Click
		<span class="guimenu">My Network Places</span>-&gt;<span class="guimenuitem">Entire Network</span>-&gt;<span class="guimenuitem">Microsoft Windows Network</span>-&gt;<span class="guimenuitem">Meganet2</span>-&gt;<span class="guimenuitem">Massive</span>. Click on <span class="guimenu">Massive</span>
			<span class="guimenu">Printers and Faxes</span>.
		</p></li><li><p>
		Identify a printer that is shown in the right panel. Let us assume the printer is called 
		<tt class="constant">ps01-color</tt>. Right-click on the <span class="guimenu">ps01-color</span> icon
		and select the <span class="guimenu">Properties</span> entry. This opens a dialog box that indicates
		that &#8220;<span class="quote"><span class="emphasis"><em>The printer driver is not installed on this computer. Some printer properties
		will not be accessible unless you install the printer driver. Do you want to install the
		driver now?</em></span></span>&#8221; It is important at this point you answer <span class="guimenu">No</span>.
		</p></li><li><p>
		The printer properties panel for the <span class="guimenu">ps01-color</span> printer on the server 
		<tt class="constant">MASSIVE</tt> is displayed. Click the <span class="guimenu">Advanced</span> tab.
		Note that the box labelled <span class="guimenu">Driver</span> is empty. Click the <span class="guimenu">New Driver</span>
		button that is next to the <span class="guimenu">Driver</span> box. This launches the quote&#8220;<span class="quote"><span class="emphasis"><em>Add Printer Wizard</em></span></span>&#8221;.
		</p></li><li><p><a class="indexterm" name="id2542228"></a><a class="indexterm" name="id2542239"></a>
		The &#8220;<span class="quote"><span class="emphasis"><em>Add Printer Driver Wizard on <tt class="constant">MASSIVE</tt></em></span></span>&#8221; panel 
		is now presented. Click <span class="guimenu">Next</span> to continue. From the left panel, select the 
		Printer Manufacturer. In your case, you are adding a driver for a printer manufactured by 
		Lexmark. In the right panel, select the printer (Lexmark Optra Color 40 PS). Click 
		<span class="guimenu">Next</span>, and then <span class="guimenu">Finish</span> to commence driver upload. A 
		progress bar appears and instructs you as each file is being uploaded and that it is being 
		directed at the network server <tt class="constant">\\massive\ps01-color</tt>.
		</p></li><li><p>
		<a class="indexterm" name="id2542291"></a>
		<a class="indexterm" name="id2542300"></a>
		<a class="indexterm" name="id2542309"></a>
		<a class="indexterm" name="id2542318"></a>
		<a class="indexterm" name="id2542328"></a>
		<a class="indexterm" name="id2542337"></a>
		The driver upload completes in anywhere from a few seconds to a few minutes. When it completes,
		you are returned to the <span class="guimenu">Advanced</span> tab in the <span class="guimenu">Properties</span> panel. 
		You can set the Location (under the <span class="guimenu">General</span> tab), and Security settings (under 
		the <span class="guimenu">Security</span> tab). Under the <span class="guimenu">Sharing</span> tab it is possible to
		load additional printer drivers, there is also a check-box in this tab called &#8220;<span class="quote"><span class="emphasis"><em>List in the
		directory</em></span></span>&#8221;. When this box is checked the printer will be published in Active Directory
		(Applicable to Active Directory use only.)
		</p></li><li><p>
		<a class="indexterm" name="id2542393"></a>
		Click <span class="guimenu">OK</span>. It will take a minute or so to upload the settings to the server. 
		You are now returned to the <span class="guimenu">Printers and Faxes on Massive</span> monitor.
		Right-click on the printer, click <span class="guimenu">Properties</span>-&gt;<span class="guimenuitem">Device Settings</span>.  Now change the settings to suit 
		your requirements. BE CERTAIN TO CHANGE AT LEAST ONE SETTING and apply the changes even if 
		you need to reverse them changes back to their original settings. 
		</p></li><li><p>
		This is necessary so that the printer settings are initialized in the Samba printers
		database. Click <span class="guimenu">Apply</span> to commit your settings. Revert any settings you changed
		just to initialize the Samba printers database entry for this printer. If you need to revert a setting,
		Click <span class="guimenu">Apply</span> again.
		</p></li><li><p>
		<a class="indexterm" name="id2542466"></a>
		Verify that all printer settings are at the desired configuration. When you are satisfied that they are,
		click the <span class="guimenu">General</span> tab. Now click the <span class="guimenu">Print Test Page</span> button.
		A test page should print. Verify that it has printed correctly. Then click <span class="guimenu">OK</span>
		in the panel that is newly presented. Click <span class="guimenu">OK</span> on the <span class="guimenu">ps01-color on 
		massive Properties</span> panel.
		</p></li><li><p>
		You must repeat this process for all network printers (i.e., for every printer, on each server).
		When you have finished uploading drivers to all printers, close all applications. The next task
		is to install software your users require to do their work.
		</p></li></ol></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2542522"></a>Software Installation</h3></div></div><div></div></div><p>
	Your network has both fixed desktop workstations as well as notebook computers. As a general rule, it is
	a good idea to not tamper with the operating system that is provided by the notebook computer manufacturer.
	Notebooks require special handling that is beyond the scope of this chapter.
	</p><p>
	For desktop systems, the installation of software onto administratively centralized application servers
	make a lot of sense. This means that you can manage software maintenance from a central
	perspective and that only minimal application stub-ware needs to be installed onto the desktop
	systems. You should proceed with software installation and default configuration as far as is humanly
	possible and so long as it makes sense to do so. Make certain to thoroughly test and validate every aspect
	of software operations and configuration.
	</p><p>
	When you believe that the overall configuration is complete, be sure to create a shared group profile
	and migrate that to the Samba server for later re-use when creating custom mandatory profiles, just in
	case a user may have specific needs you had not anticipated.
	</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2542557"></a>Roll-out Image Creation</h3></div></div><div></div></div><p>
	The final steps before preparing the distribution Norton Ghost image file you might follow are:
	</p><div class="blockquote"><blockquote class="blockquote"><p>
	Un-join the domain  Each workstation requires a unique name and must be independently
	joined into Domain Membership.
	</p></blockquote></div><div class="blockquote"><blockquote class="blockquote"><p>
	Defragment the hard disk  While not obvious to the uninitiated, defragmentation results
	in better performance and often significantly reduces the size of the compressed disk image. That
	also means it will take less time to deploy the image onto 500 workstations.
	</p></blockquote></div></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2542592"></a>Key Points Learned</h2></div></div><div></div></div><p>
	This chapter has introduced many new concepts. Is it a sad fact that the example presented deliberately
	avoided any consideration of security. Security does not just happen; you must design it into your total
	network. Security begins with a systems design and implementation that anticipates hostile behavior from
	users both inside and outside the organization. Hostile and malicious intruders do not respect barriers;
	they accept them as challenges. For that reason, if not simply from a desire to establish safe networking
	practices, you must not deploy the design presented in this book in an environment where there is risk
	of compromise.
	</p><p><a class="indexterm" name="id2542612"></a><a class="indexterm" name="id2542624"></a>
	As a minimum, the LDAP server must be protected by way of Access Control Lists (ACLs) and it must be
	configured to use secure protocols for all communications over the network. Of course, secure networking
	does not result just from systems design and implementation but involves constant user education
	training, and above all disciplined attention to detail and constant searching for signs of unfriendly
	or alien activities. Security is itself a topic for a whole book. Please do consult appropriate sources.
	Jerry Carter's book <a href="http://www.booksense.com/product/info.jsp&amp;isbn=1565924916" target="_top"><span class="emphasis"><em>LDAP System 
	Administration</em></span></a> is a good place to start reading about OpenLDAP as well as security considerations.
	</p><p>
	The substance of this chapter that has been deserving of particular attention includes:
	</p><div class="itemizedlist"><ul type="disc"><li><p>
		Implementation of an OpenLDAP-based passwd backend  necessary to support distributed
		Domain Control.
		</p></li><li><p>
		Implementation of Samba Primary and Secondary Domain Controllers with a common LDAP backend
		for user and group accounts that is shared with the UNIX system through the PADL nns_ldap and
		pam_ldap toolsets.
		</p></li><li><p>
		Use of the Idealx smbldap-tools scripts for UNIX (Posix) account management as well as
		to manage Samba Windows user and group accounts.
		</p></li><li><p>
		The basics of implementation of Group Policy controls for Windows network clients.
		</p></li><li><p>
		Control over roaming profiles, with particular focus on folder redirection to network drives.
		</p></li><li><p>
		Use of the CUPS printing system together with Samba-based printer driver auto-download.
		</p></li></ul></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2542704"></a>Questions and Answers</h2></div></div><div></div></div><p>
	Well, here we are at the end of this chapter and we have only ten questions to help you to
	remember so much. There are bound to be some sticky issues here.
	</p><div class="qandaset"><dl><dt> <a href="happy.html#id2542720">
		Why did you not cover secure practices? Isn't it rather irresponsible to instruct
		network administrators to implement insecure solutions?
		</a></dt><dt> <a href="happy.html#id2542763">
		You have focused much on SUSE Linux and little on the market leader, Red Hat. Do
		you have a problem with Red Hat Linux? Doesn't that make your guidance irrelevant
		to the Linux I might be using?
		</a></dt><dt> <a href="happy.html#id2542817">
		You did not use SWAT to configure Samba. Is there something wrong with it?
		</a></dt><dt> <a href="happy.html#id2542856">
		You have exposed a well-used password not24get. Is that
		not irresponsible? 
		</a></dt><dt> <a href="happy.html#id2542881">
		The Idealx smbldap-tools create many domain group accounts that are not used. Is that
		a good thing?
		</a></dt><dt> <a href="happy.html#id2542904">
		Can I use LDAP just for Samba accounts and not for UNIX system accounts?
		</a></dt><dt> <a href="happy.html#id2542929">
		Why are the Windows Domain RID portions not the same as the UNIX UID?
		</a></dt><dt> <a href="happy.html#id2542966">
		Printer configuration examples all show printing to the HP port 9100. Does this
		mean that I must have HP printers for these solutions to work?
		</a></dt><dt> <a href="happy.html#id2542995">
		Is folder redirection dangerous? I've heard that you can lose your data that way.
		</a></dt><dt> <a href="happy.html#id2543022">
		Is it really necessary to set a local Group Policy to exclude the redirected
		folders from the roaming profile?
		</a></dt></dl><table border="0" summary="Q and A Set"><col align="left" width="1%"><tbody><tr class="question"><td align="left" valign="top"><a name="id2542720"></a><a name="id2542722"></a><b></b></td><td align="left" valign="top"><p>
		Why did you not cover secure practices? Isn't it rather irresponsible to instruct
		network administrators to implement insecure solutions?
		</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>
		Let's get this right. This is a book about Samba, not about OpenLDAP and secure
		communication protocols for subjects other than Samba. Earlier on, you note
		that the Dynamic DNS and DHCP solutions also used no protective secure communications
		protocols. The reason for this is simple: There are so many ways of implementing
		secure protocols that this book would have been even larger and more complex.
		</p><p>
		The solutions presented here all work (at least they did for me). Network administrators
		have the interest and the need to be better trained and instructed in secure networking
		practices and ought to implement safe systems. I made the decision, right or wrong,
		to keep this material as simple as possible. The intent of this book is to demonstrate
		a working solution and not to discuss too many peripheral issues.
		</p><p>
		This book makes little mention of backup techniques. Does that mean that I am recommending
		that you should implement a network without provision for data recovery and for disaster
		management? Back to our focus: The deployment of Samba has been clearly demonstrated.
		</p></td></tr><tr class="question"><td align="left" valign="top"><a name="id2542763"></a><a name="id2542766"></a><b></b></td><td align="left" valign="top"><p>
		You have focused much on SUSE Linux and little on the market leader, Red Hat. Do
		you have a problem with Red Hat Linux? Doesn't that make your guidance irrelevant
		to the Linux I might be using?
		</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>
		Both Red Hat Linux and SUSE Linux comply with the Linux Standards Base specifications
		for a standard Linux distribution. The differences are marginal. Surely you know
		your Linux platform and you do have access to administration manuals for it. This
		book is not a Linux tutorial; it is a Samba tutorial. Let's keep the focus on
		the Samba part of the book; all the other bits are peripheral (but important) to
		creation of a total network solution. 
		</p><p>
		What I find interesting is the attention reviewers give to Linux installation and to
		the look and feel of the desktop, but does that make for a great server? In this book,
		I have paid particular attention to the details of creating a whole solution framework.
		I have not tightened every nut and bolt, but I have touched on all the issues you
		need to be familiar with. Over the years many people have approached me wanting to
		know the details of exactly how to implement a DHCP and Dynamic DNS server with Samba
		and WINS. In this chapter, it is plain to see what needs to be configured to provide
		transparent interoperability. Likewise for CUPS and Samba interoperation. These are
		key stumbling areas for many people.
		</p><p>
		At every critical junction, I have provided comparative guidance for both SUSE and
		Red Hat Linux. Both manufacturers have done a great job in furthering the cause
		of open source software. I favor neither and respect both. I like particular
		features of both products (companies also). No bias in presentation is intended.
		Oh, before I forget, I particularly like Debian Linux; that is my favorite playground.
		</p></td></tr><tr class="question"><td align="left" valign="top"><a name="id2542817"></a><a name="id2542819"></a><b></b></td><td align="left" valign="top"><p>
		You did not use SWAT to configure Samba. Is there something wrong with it?
		</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>
		That is a good question. As it is, the <tt class="filename">smb.conf</tt> file configurations are presented
		in as direct a format as possible. Adding SWAT into the equation would have complicated
		matters. I sought simplicity of implementation. The fact is that I did use SWAT to
		create the files in the first place.
		</p><p>
		There are people in the Linux and open source community who feel that SWAT is dangerous
		and insecure. Many will not touch it with a barge-pole. By not introducing SWAT, I
		hope to have brought their interests on board. SWAT is well covered is <span class="emphasis"><em>TOSHARG</em></span>.
		</p></td></tr><tr class="question"><td align="left" valign="top"><a name="id2542856"></a><a name="id2542858"></a><b></b></td><td align="left" valign="top"><p>
		You have exposed a well-used password <span class="emphasis"><em>not24get</em></span>. Is that
		not irresponsible? 
		</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>
		Well, I had to use a password of some sort. At least this one has been consistently
		used throughout. I guess you can figure out that in a real deployment it would make 
		sense to use a more secure and original password.
		</p></td></tr><tr class="question"><td align="left" valign="top"><a name="id2542881"></a><a name="id2542883"></a><b></b></td><td align="left" valign="top"><p>
		The Idealx smbldap-tools create many domain group accounts that are not used. Is that
		a good thing?
		</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>
		I took this up with Idealx and found them most willing to change that in the next version.
		Let's give Idealx some credit for the contribution they have made. I appreciate their work
		and, besides, it does no harm to create accounts that are not now used as at some time 
		Samba may well use them.
		</p></td></tr><tr class="question"><td align="left" valign="top"><a name="id2542904"></a><a name="id2542906"></a><b></b></td><td align="left" valign="top"><p>
		Can I use LDAP just for Samba accounts and not for UNIX system accounts?
		</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>
		Yes, you can do that for user accounts only. Samba requires there to be a Posix (UNIX)
		group account for every Windows Domain group account. But if you put your users into
		the system password account, how do you plan to keep all domain controller system
		password files in sync? I think that having everything in LDAP makes a lot of sense
		for the UNIX admin who is still learning the craft and is migrating from MS Windows.
		</p></td></tr><tr class="question"><td align="left" valign="top"><a name="id2542929"></a><a name="id2542931"></a><b></b></td><td align="left" valign="top"><p>
		Why are the Windows Domain RID portions not the same as the UNIX UID?
		</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>
		Samba uses a well-known public algorithm for assigning RIDs from UIDs and GIDs.
		This algorithm ought to ensure that there will be no clashes with well-known RIDs.
		Well-known RIDs have special significance to MS Windows clients. The automatic
		assignment used the calculation: RID = UID x 2 + 1000. Of course, Samba does
		permit you to override that to some extent. See the <tt class="filename">smb.conf</tt> man page entry
		for <i class="parameter"><tt>algorithmic rid base</tt></i>.
		</p></td></tr><tr class="question"><td align="left" valign="top"><a name="id2542966"></a><a name="id2542968"></a><b></b></td><td align="left" valign="top"><p>
		Printer configuration examples all show printing to the HP port 9100. Does this
		mean that I must have HP printers for these solutions to work?
		</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>
		No. You can use any type of printer and must use the interfacing protocol supported
		by the printer. Many networks use LPR/LPD print servers to which are attached
		PCL printers, InkJet printers, plotters, and so on. At home I use a USB attached
		Inkjet printer. Use the appropriate device URI (Universal Resource Interface)
		argument to the <tt class="constant">lpadmin -v</tt> option that is right for your
		printer.
		</p></td></tr><tr class="question"><td align="left" valign="top"><a name="id2542995"></a><a name="id2542997"></a><b></b></td><td align="left" valign="top"><p>
		Is folder redirection dangerous? I've heard that you can lose your data that way.
		</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>
		The only loss of data I know of that involved folder redirection was caused by
		manual misuse of the redirection tool. The administrator redirected a folder to
		a network drive and said he wanted to migrate (move) the data over. Then he 
		changed his mind, so he moved the folder back to the roaming profile. This time,
		he declined to move the data because he thought it was still in the local profile
		folder. That was not the case, so by declining to move the data back, he wiped out
		the data. You cannot hold the tool responsible for that. Caveat emptor still applies.
		</p></td></tr><tr class="question"><td align="left" valign="top"><a name="id2543022"></a><a name="id2543024"></a><b></b></td><td align="left" valign="top"><p>
		Is it really necessary to set a local Group Policy to exclude the redirected
		folders from the roaming profile?
		</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>
		Yes. If you do not do this, the data will still be copied from the network folder
		(share) to the local cached copy of the profile.
		</p></td></tr></tbody></table></div></div><div class="footnotes"><br><hr width="100" align="left"><div class="footnote"><p><sup>[<a name="ftn.id2541467" href="#id2541467">11</a>] </sup>
			There is an alternate method by which a Default User profile can be added to the
			<tt class="constant">NETLOGON</tt> share. This facility in the Windows System tool 
			permits profiles to be exported. The export target may be a particular user or 
			group profile share point, or else into the <tt class="constant">NETLOGON</tt> share. 
			In this case, the profile directory must be named
		  <tt class="constant">Default User</tt>.
			</p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="Big500users.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="index.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="2000users.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 5. The 500-User Office </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 7. A Distributed 2000 User Network</td></tr></table></div></body></html>