If you're an administrator, you are probably familiar with mapping drives on hybrid Windows and UNIX/Linux networks. Although there are numerous ways to do this, the most popular way is to use Samba. This article shows you how to map your UNIX/Linux drives dynamically to users' logging into your Windows 2003 network. With this configuration, a user on your network can log in to any workstation on the network, and the UNIX/Linux drives assigned to them will automatically be mapped to them once logged in. It works well because the drives are dynamically mapped at login time and thus become "roaming" drives. Furthermore, a user only needs to login into the domain. No other login is required to get access to the UNIX/Linux drives.
Mapping drives from a UNIX/Linux file server doesn't only expand the scope of user storage on your network; it is also a good way for getting rid of complicated worms or viruses on a Windows network. You might be asking yourself how this might be so.
Most virus-scanning programs have a folder that you can designate for routing infected files to that cannot be cleaned or deleted. The more complicated viruses or worms often have permissions placed on the files so that the worm can be spawned on the infected machine over and over, thus not allowing you as an administrator or a virus program to clean or remove these core files. Once the infected files are found and routed to a UNIX/Linux file share, they can be easily deleted or removed because the Windows permissions are not understood by the UNIX/Linux file system.
The first part of setting up this configuration is working with Samba, which is a service and management tool that allows you to easily share your UNIX/Linux folders on a Windows networkmuch like a Windows workstation or server would. Most UNIX/Linux distributions come with one version of Samba or another. The best way to quickly configure the Samba service (or daemon) is by going directly to the Samba configuration file. In the next section, we'll be taking a look at a typical basic configuration of this file. We'll tweak it for our own purposes so we can share any files and folders we want to from our UNIX/Linux system in a Windows domain.
Configuring Samba could be an article in itself, so I'll focus only on the sections we need to look at. For purposes of illustration, I will lay out what you should see or have in a similar manner regarding these sections in which your configuration file is concerned. Editing the Samba configuration file (smb.conf) is easy because they are similar to Windows .ini files.
To configure Samba, bring up the smb.conf file on your UNIX/Linux system. The type of flavor or distribution you are running will determine the location of this file. For example, the Linux Redhat distribution has it in a different location (etc/samba/smb.conf) than does Mac OS X running the Darwin flavor of UNIX (usr/local/samba/lib/). Once you locate the file, bring it up in an editor you're comfortable using (Pico, for instance).
Each section of this file is denoted by the section name in brackets. For example, the main section of a typical Samba configuration file is called global, and is denoted with brackets as [global]. Although there are many sections you can add to a basic configuration, we're going to be concerned only with the global and disk shares sections we create. Starting with the global section, let's take a look at what needs to be tweaked here for our Windows domain to pick up the shares we'll later define. You should see a line similar to the following:
workgroup = WORKGROUP
Replace the default parameter WORKGROUP with the name of your Windows server 2003 domain. Your Samba server will appear in this domain. If this line contains a semicolon at the beginning, remove it so that the parameter will become active when the Samba service is started.
Next, we need to make sure that our machine advertises itself with a NetBIOS name for a Windows network. Find the following line to define which name your Samba server will broadcast on the network.
netbios name = hostname
The name you give would appear in My Network Places on a Windows XP client, for example. You can put any name you like here, and can also leave the parameter as hostname. By leaving it as hostname, the Samba server will advertise itself by its hostname. If you do not show this line in your default configuration, add it anywhere to the global section.
If you're concerned about security and limiting the scope of machines to which your Samba server will allow access, find the line similar to this one:
hosts allow = 192.168.2.0/255.255.255.220
In this example, I am telling the Samba service to authenticate only machines that have an IP within the range of 192.168.2.1 to 192.168.2.35, inclusively. You can define other ranges or subnets by putting a space between each range.
Because Windows clients (after the release of Win95 Band NT 4.0 Service Pack 3) use encrypted passwords to authenticate share access, Samba should also be set to behave similarly. You can set Samba to use encrypted passwords by removing the semicolon from the line encrypt passwords = yes to activate it.
The parameters above have everything to do with how our Samba server broadcasts itself on a Windows network and handles password authentication. They are all we really need to look at in the global section. Now let's take a look at how to define the network shares our Samba server will contain.
Defining Network Shares
The basic default configuration of your smb.conf file will probably have some share definitions or examples. The easiest thing to do is to copy one of these examples and tweak it for your own needs. For example, let's say I want to have a network share called Accounting. I would create a section similar to the one shown below:
[Accounting] path = /Smb_Act public = yes printable = no writable = yes
The first line specifies the alias for the share name and also serves as a section indicator for the share. It will give the virtual share name Accounting to the physical share called Smb_Act on our Samba server. The path line tells Samba where to look on the server for the files to share. The third line indicates that this share will need passwords to gain access (I'll talk more about this later). If we indicate a yes here, no authentication is needed to access the share. If you want to allow access to only certain users, you would add the line valid users = and list each Samba user (discussed in the next section), separated by a space that will have access. The fourth line indicates that this is not a print share. All printer shares must have this value set to yes. The last line indicates whether the Accounting share can have files saved or added to it by Samba users.
These are some of the most common parameters when creating a share and should give you a good idea of how to model your share sections. We're now done configuring our smb.conf file, and it's time to create Samba user accounts.
Creating Samba User Accounts
Creating Samba user accounts is an important step because without it, you users could not gain access to the Samba service. It is also very important for Windows domains, as you will see in a bit.
I said at the beginning of this article that a domain user would only to have to log in into the domain, and access to Samba shares would then become available depending on their domain login scriptin the same manner as any other Windows network shares. The key here is that when you create a Samba user, make sure that the user has the same credentials as their Windows domain account does.
For example, let's say I have a domain user called Ted. He is an accountant, and I want to give him access to the Samba Accounting share created in the previous example. First, the user must already have a local system account on your UNIX/Linux box acting as your Samba server. In other words, Ted should already have an account on the server. If he doesn't, I would first need to create one before giving him a Samba account.
To give a user a Samba account (Ted in this example), go to the command prompt as root and type the following command:
smbpasswd a Ted
You will then be prompted to enter a password for the new Samba user. Make sure that it is the same password as the user's Windows domain account. Add all your users in this manner; once finished, you'll need to make sure that the Samba and NetBIOS name services are started. To put it simply, the NetBIOS name service allows your Samba server to translate machine names on Windows networks to IP addresses. To start the Samba service, type the following command at the prompt as root.
To start the NetBIOS name service, type the following command at the prompt:
After these services have been started or restarted, we can now go to our Windows domain controller and create or modify user logon scripts to map our new Samba drives, as described in the following section.