Linux often functions as a tool for running Samba as a server on a network that’s otherwise dominated by Windows systems. Sometimes, though, you might need to reverse this role and have Linux function as the client in an SMB/CIFS environment. Perhaps a few Linux desktop systems must access Windows servers; maybe a Linux system that works as a server for other protocols must do so. Whatever the details, the Samba package includes client tools, and the Linux kernel also supports accessing SMB/CIFS file shares. Thus, Linux can function in the client role, using Windows, Samba, or other SMB/CIFS servers on other computers.
This chapter covers several specific client roles for Linux on an SMB/CIFS network: using NetBIOS name resolution, accessing file and printer shares, and using GUI network browsers for Linux.
As described in Chapter 3 and Chapter 5,
NetBIOS provides a computer-naming system that’s
independent of DNS, which is used by most TCP/IP protocols. In fact,
Windows enables its clients to use these NetBIOS names in place of
DNS names for most protocols, at least for local computers. For this
reason, some LANs rely heavily on these
names, and if you want to refer to computers by name rather than by
IP address from Linux, you may need to know how to configure Linux
utilities to use these addresses. For the most part, this task can be
handled with a setting or two in smb.conf. If
your LAN doesn’t use DNS hostnames for its local
computers, though, you may want to expand this configuration to
enable Linux to use NetBIOS names in non-SMB/CIFS tools, such as web
browsers and email clients.
Most SMB/CIFS
client tools in Linux support the use of NetBIOS names. These tools
rely on libraries that ship with Samba and that are configured in the
[global] section of your
smb.conf file. In particular, you should review
the name
resolve
order, wins
server, and hostname
lookups parameters, all of which are described in
Chapter 3. For the most part, the default
settings work well on small LANs that are configured to use broadcast
name resolution. You might want to set hostname
lookups
=
Yes if you want to specify computers by their DNS
hostnames in smb.conf, though. If your network
hosts an NBNS system, you may also want to point Linux systems to it
with wins server.
If a computer functions as an NBNS system, do
not set
wins
server. Even
pointing the server to itself with this parameter can result in odd
behavior.
The parameter that requires the most attention is
name
resolve
order. This parameter takes one to four of several
values: lmhosts, hosts,
wins, and bcast. The default
lookup order is lmhosts
host
wins
bcast, which minimizes the
use of network resources. You can change this order if you like,
though, or even omit options entirely. For instance, suppose you know
your lmhosts file is empty, and suppose you
don’t want to use DNS except as a last resort
because of possible name conflicts. You might then include these
lines in smb.conf:
name resolve order = wins bcast hosts
wins server = 192.168.24.1In most cases, the NetBIOS name-resolution methods you
set with name
resolve
order and other options in
smb.conf apply only to Samba and related tools.
These name-resolution methods have been split off into a library,
though, and it’s possible to splice this library
into Linux’s normal name-resolution system. When you
configure Linux this way, you can use NetBIOS names in any Linux
program that employs the normal name-resolution system, such as web
browsers, mail clients, FTP clients, and so on. This can be a handy
way to get name resolution working on a small network that
doesn’t have its own DNS server.
(You’d presumably use your ISP’s
DNS server for handling names on the Internet, but it might not have
entries for your local computers.)
Using NetBIOS names for non-SMB/CIFS tools can
be convenient, but it can also cause problems. NetBIOS names lack
Internet domain names, and so a few programs that rely on Internet
domain names can choke if they’re fed NetBIOS names.
If DNS and NetBIOS names don’t match, you can also
cause problems when reverse lookups don’t match
forward lookups or when one name masks another one. These problems
aren’t always serious, but if you see strange error
messages about failed lookups, you might want to consider using local
/etc/hosts files or running your own DNS server
for local use, as described in Chapter 15.
The first step to using NetBIOS name resolution in non-Samba programs
is to check for the presence of the necessary support libraries.
These appear under the
name
libnss_wins.so (typically with a symbolic link
called libnss_wins.so.2), usually in
/lib. If you can’t find these
files, you may need to install additional or newer Samba packages for
your distribution. If you compiled Samba from source code, try typing
make
nsswitch from the
Samba source directory, copying the resulting
nsswitch/libnss_wins.so file to
/lib, and creating a symbolic link called
libnss_wins.so.2. Usually, you will need to type
ldconfig to have the system recognize the new
library.
Once the library is installed, you must configure Linux to use it.
This task can be accomplished by editing
/etc/nsswitch.conf. Look for the
hosts line in this file. It probably contains
entries for files, dns, and
perhaps other name-resolution methods. Add wins to
this list:
hosts: files dns wins
Linux tries name lookups in the order specified, so this example uses
NetBIOS name lookups as the last resort. You might want to move
wins earlier in the list, but doing so increases
the odds for problems should a name be resolved in multiple ways and
a program needs an Internet domain name.
Although the option in /etc/nsswitch.conf is
called wins, the name-resolution system it enables
works with both NBNS systems and broadcast name lookups. The
libnss_wins.so library uses the NBNS computer
specified by the wins
server
parameter in smb.conf, but it ignores the
name
resolve
order parameter.