Adding initial copy of "Using Samba (3rd ed)"
authorGerald (Jerry) Carter <jerry@samba.org>
Tue, 27 May 2008 17:02:27 +0000 (12:02 -0500)
committerGerald (Jerry) Carter <jerry@samba.org>
Tue, 27 May 2008 17:02:43 +0000 (12:02 -0500)
(This used to be commit b77c46a36366d25dcdbc476963fbf43aaa4b9801)

110 files changed:
docs-xml/using_samba/appa.xml [new file with mode: 0644]
docs-xml/using_samba/appb.xml [new file with mode: 0644]
docs-xml/using_samba/appc.xml [new file with mode: 0644]
docs-xml/using_samba/appd.xml [new file with mode: 0644]
docs-xml/using_samba/appe.xml [new file with mode: 0644]
docs-xml/using_samba/appf.xml [new file with mode: 0644]
docs-xml/using_samba/book.html [new file with mode: 0644]
docs-xml/using_samba/book.xml [new file with mode: 0644]
docs-xml/using_samba/ch00.xml [new file with mode: 0644]
docs-xml/using_samba/ch01.xml [new file with mode: 0644]
docs-xml/using_samba/ch02.xml [new file with mode: 0644]
docs-xml/using_samba/ch03.xml [new file with mode: 0644]
docs-xml/using_samba/ch04.xml [new file with mode: 0644]
docs-xml/using_samba/ch05.xml [new file with mode: 0644]
docs-xml/using_samba/ch06.xml [new file with mode: 0644]
docs-xml/using_samba/ch07.xml [new file with mode: 0644]
docs-xml/using_samba/ch08.xml [new file with mode: 0644]
docs-xml/using_samba/ch09.xml [new file with mode: 0644]
docs-xml/using_samba/colo1.xml [new file with mode: 0644]
docs-xml/using_samba/copy.xml [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0101.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0102.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0103.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0104.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0105.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0106.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0107.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0108.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0109.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0110.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0111.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0112.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0113.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0114.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0201.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0202.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0203.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0204.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0301.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0302.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0303.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0304.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0305.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0306.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0307.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0308.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0309.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0310.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0311.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0312.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0313.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0314.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0315.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0316.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0317.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0318.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0319.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0320.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0321.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0322.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0323.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0324.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0325.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0326.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0327.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0328.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0401.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0402.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0403.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0404.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0405.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0406.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0407.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0501.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0502.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0503.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0504.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0505.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0506.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0507.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0508.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0601.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0602.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0603.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0604.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0605.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0606.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0701.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0702.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0703.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0704.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0705.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0706.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0707.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0708.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0709.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0801.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0802.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0803.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0804.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0805.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0901.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0902.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0903.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0904.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.0905.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.aa01.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.ab01.gif [new file with mode: 0644]
docs-xml/using_samba/figs/sam.ab02.gif [new file with mode: 0644]
docs-xml/using_samba/metadata.xml [new file with mode: 0644]

diff --git a/docs-xml/using_samba/appa.xml b/docs-xml/using_samba/appa.xml
new file mode 100644 (file)
index 0000000..825b818
--- /dev/null
@@ -0,0 +1,1147 @@
+<appendix label="A" id="SAMBA-AP-A">
+<title>Configuring Samba with SSL</title>
+
+
+
+
+<para>
+<indexterm id="appa-idx-990325-0" class="startofrange"><primary>configuring Samba</primary><secondary sortas="SSL">with SSL</secondary></indexterm>
+<indexterm id="appa-idx-990325-1" class="startofrange"><primary>SSL (Secure Sockets Layer) protocol</primary><secondary>configuring Samba with</secondary></indexterm>This appendix describes how to set up Samba to use secure connections between the Samba server and its clients. The protocol used here is Netscape's Secure Sockets Layer (SSL). For this example, we will establish a secure connection between a Samba server and a Windows NT workstation.</para>
+
+
+<para>Before we begin, we will assume that you are familiar with the fundamentals of public-key cryptography and X.509 certificates. If not, we highly recommend Bruce Schneier's <filename>Applied Cryptography, 2nd Edition</filename> (Wiley) as the premiere source for learning the many secret faces of cryptography.</para>
+
+
+<tip role="ora">
+<para>If you would like more information on Samba and SSL, be sure to look at the document <filename>SSLeay.txt</filename> in the <filename>docs/textdocs</filename> directory of the Samba distribution, which is the basis for this appendix.</para>
+
+</tip>
+
+
+
+
+
+
+
+
+
+
+
+<sect1 role="" label="A.1" id="appa-SECT-1">
+<title>About Certificates</title>
+
+
+<para>Here are a few quick questions and answers from the <filename>SSLeay.txt</filename> file in the Samba documentation, regarding the benefits of SSL and certificates. This text was written by Christian Starkjohann for the Samba projects.</para>
+
+
+<sect2 role="" label="A.1.1" id="appa-SECT-1.1">
+<title>What is a Certificate?</title>
+
+
+<para>A certificate is issued by an issuer, usually a <emphasis>Certification Authority</emphasis> (CA), who confirms something by issuing the certificate. The subject of this confirmation depends on the CA's policy. CAs for secure web servers (used for shopping malls, etc.) usually attest only that the given public key belongs the given domain name. Company-wide CAs might attest that you are an employee of the company, that you have permissions to use a server, and so on.</para>
+</sect2>
+
+
+
+
+
+<sect2 role="" label="A.1.2" id="appa-SECT-1.2">
+<title>What is an X.509 certificate, technically?</title>
+
+
+<para>Technically, the certificate is a block of data signed by the certificate issuer (the CA). The relevant fields are:</para>
+
+
+<itemizedlist>
+
+<listitem><para>
+Unique identifier (name) of the certificate issuer</para></listitem>
+
+<listitem><para>Time range during which the certificate is valid</para></listitem>
+
+<listitem><para>Unique identifier (name) of the certified object</para></listitem>
+
+<listitem><para>Public key of the certified object</para></listitem>
+
+<listitem><para>The issuer's signature over all the above</para></listitem>
+
+</itemizedlist>
+
+<para>If this certificate is to be verified, the verifier must have a table of the names and public keys of trusted CAs. For simplicity, these tables should list certificates issued by the respective CAs for themselves (self-signed certificates).</para>
+</sect2>
+
+
+
+
+
+<sect2 role="" label="A.1.3" id="appa-SECT-1.3">
+<title>What are the implications of this certificate structure?</title>
+
+
+<para>Four implications follow:</para>
+
+
+<itemizedlist>
+
+<listitem><para>Because the certificate contains the subjects's public key, the certificate and the private key together are all that is needed to encrypt and decrypt.</para></listitem>
+
+<listitem><para>To verify certificates, you need the certificates of all CAs you trust.</para></listitem>
+
+<listitem><para>The simplest form of a dummy-certificate is one that is signed by the subject.</para></listitem>
+
+<listitem><para>A CA is needed. The client can't simply issue local certificates for servers it trusts because the server determines which certificate it presents.</para></listitem>
+
+</itemizedlist>
+</sect2>
+</sect1>
+
+
+
+
+
+
+
+
+
+<sect1 role="" label="A.2" id="appa-SECT-2">
+<title>Requirements</title>
+
+
+<para>
+<indexterm id="appa-idx-990348-0"><primary>configuring Samba</primary><secondary sortas="SSL">with SSL</secondary><tertiary>requirements for</tertiary></indexterm>
+<indexterm id="appa-idx-990348-1"><primary>SSL (Secure Sockets Layer) protocol</primary><secondary>configuring Samba with</secondary><tertiary>requirements for</tertiary></indexterm>To set up SSL connections, you will need to download two programs in addition to Samba:</para>
+
+
+<variablelist>
+<varlistentry><term>
+<indexterm id="appa-idx-990613-0" class="startofrange"><primary>SSL (Secure Sockets Layer) protocol</primary><secondary>SSLeay</secondary></indexterm>SSLeay</term>
+<listitem><para>Eric <indexterm id="appa-idx-990362-0"><primary>Young, Eric</primary></indexterm>Young's implementation of the Secure Socket's Layer (SSL) protocol as a series of Unix programming libraries</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term>
+<indexterm id="appa-idx-990357-0"><primary>SSL (Secure Sockets Layer) protocol</primary><secondary>SS Proxy</secondary></indexterm>SSL Proxy</term>
+<listitem><para>A freeware SSL application from Objective Development, which can be used to proxy a secure link on Unix or Windows NT platforms</para></listitem>
+</varlistentry>
+</variablelist>
+
+
+<para>These two products assist with the server and client side of the encrypted SSL connection. The SSLeay libraries are compiled and installed directly on the Unix system. SSL Proxy, on the other hand, can be downloaded and compiled (or downloaded in binary format) and located on the client side. If you intend to have a Windows NT client or a Samba client on the other end of the SSL connection, you will not require a special setup.</para>
+
+
+<para>SSL Proxy, however, does not work on Windows 95/98 machines. Therefore, if you want to have a secure connection between a Samba server and Windows 95/98 client, you will need to place either a Unix server or a Windows NT machine on the same subnet with the Windows 9<emphasis>x</emphasis> clients and route all network connections through the SSL-Proxy-enabled machine. See <link linkend="appa-89929">Figure 1.1</link>.</para>
+
+
+<figure label="A.1" id="appa-89929">
+<title>Two possible ways of proxying Windows 95/98 clients</title>
+
+<graphic width="502" depth="317" fileref="figs/sam.aa01.gif"></graphic>
+</figure>
+
+<para>For the purposes of this chapter, we will create a simple SSL connection between the Samba server and a Windows NT client. This configuration can be used to set up more complex networks at the administrator's discretion.</para>
+</sect1>
+
+
+
+
+
+
+
+
+
+<sect1 role="" label="A.3" id="appa-SECT-3">
+<title>Installing SSLeay</title>
+
+
+<para>Samba uses the SSLeay package, written by Eric Young, to provide Secure Sockets Layer support on the server side. Because of U.S. export law, however, the SSLeay package cannot be shipped with Samba distributions that are based in the United States. For that reason, the Samba creators decided to leave it as a separate package entirely. You can download the SSLeay distribution from any of the following sites:</para>
+
+
+<itemizedlist>
+
+<listitem><para><systemitem role="ftpurl">ftp://ftp.psy.uq.oz.au/pub/Crypto/SSL/</systemitem></para></listitem>
+
+<listitem><para><systemitem role="ftpurl">ftp://ftp.uni-mainz.de/pub/internet/security/ssl</systemitem></para></listitem>
+
+<listitem><para><systemitem role="ftpurl">ftp://ftp.cert.dfn.de/pub/tools/crypt/sslapps</systemitem></para></listitem>
+
+<listitem><para><systemitem role="ftpurl">ftp://ftp.funet.fi/pub/crypt/mirrors/ftp.psy.uq.oz.au</systemitem></para></listitem>
+
+<listitem><para><systemitem role="ftpurl">ftp://ftp.sunet.se/ftp/pub/security/tools/crypt/ssleay</systemitem></para></listitem>
+
+</itemizedlist>
+
+<para>The latest version as of this printing is 0.9.0b. Download it to the same server as the Samba distribution, then uncompress and untar it. You should be left with a directory entitled <filename>SSLeay-0.9.0b</filename>. After changing to that directory, you will need to configure and build the SSL encryption package in the same way that you did with Samba.</para>
+
+
+<para>SSLeay uses a Perl-based <filename>configure</filename> script. This script modifies the Makefile that constructs the utilities and libraries of the SSLeay package. However, the default script is hardcoded to find Perl at <filename>/usr/local/bin/perl</filename>. You may need to change the <filename>configure</filename> script to point to the location of the Perl executable file on your Unix system. For example, you can type the following to locate the Perl executable:</para>
+
+
+<programlisting># <userinput>which perl</userinput>
+/usr/bin/perl</programlisting>
+
+
+<para>Then modify the first line of the <filename>configure</filename> script to force it to use the correct Perl executable. For example, on our Red Hat Linux system:</para>
+
+
+<programlisting>#!/usr/bin/perl
+#
+# see PROBLEMS for instructions on what sort of things to do
+# when tracking a bug -tjh
+...</programlisting>
+
+
+<para>After that, you need to run the <filename>configure</filename> script by specifying a target platform for the distribution. This target platform can be any of the following:</para>
+
+
+<programlisting>BC-16              BC-32              FreeBSD            NetBSD-m86
+NetBSD-sparc       NetBSD-x86         SINIX-N            VC-MSDOS
+VC-NT              VC-W31-16          VC-W31-32          VC-WIN16
+VC-WIN32           aix-cc             aix-gcc            alpha-cc
+alpha-gcc          alpha400-cc        cc                 cray-t90-cc
+debug              debug-irix-cc      debug-linux-elf    dgux-R3-gcc
+dgux-R4-gcc        dgux-R4-x86-gcc    dist               gcc
+hpux-cc            hpux-gcc           hpux-kr-cc         irix-cc
+irix-gcc           linux-aout         linux-elf          ncr-scde
+nextstep           purify             sco5-cc            solaris-sparc-cc
+solaris-sparc-gcc  solaris-sparc-sc4  solaris-usparc-sc4 solaris-x86-gcc
+sunos-cc           sunos-gcc          unixware-2.0       unixware</programlisting>
+
+
+<para>For our system, we would enter the following:</para>
+
+
+<programlisting># <userinput>./Configure linux-elf</userinput>
+CC            =gcc
+CFLAG         =-DL_ENDIAN -DTERMIO -DBN_ASM -O3 -fomit-frame-pointer
+EX_LIBS       =
+BN_MULW       =asm/bn86-elf.o
+DES_ENC       =asm/dx86-elf.o asm/yx86-elf.o
+BF_ENC        =asm/bx86-elf.o
+CAST_ENC      =asm/cx86-elf.o
+RC4_ENC       =asm/rx86-elf.o
+RC5_ENC       =asm/r586-elf.o
+MD5_OBJ_ASM   =asm/mx86-elf.o
+SHA1_OBJ_ASM  =asm/sx86-elf.o
+RMD160_OBJ_ASM=asm/rm86-elf.o
+THIRTY_TWO_BIT mode
+DES_PTR used
+DES_RISC1 used
+DES_UNROLL used
+BN_LLONG mode
+RC4_INDEX mode</programlisting>
+
+
+<para>After the package has been configured, you can build it by typing <literal>make</literal>. If the build did not successfully complete, consult the documentation that comes with the distribution or the FAQ at <systemitem role="url">http://www.cryptsoft.com/ssleay/</systemitem> for more information on what may have happened. If the build did complete, type <literal>make</literal> <literal>install</literal> to install the libraries on the system. Note that the makefile installs the package in <filename>/usr/local/ssl</filename> by default. If you decide to install it in another directory, remember the directory when configuring Samba to use SSL.</para>
+
+
+<sect2 role="" label="A.3.1" id="appa-SECT-3.1">
+<title>Configuring SSLeay for Your System</title>
+
+
+<para>The first thing you need to do is to set the <literal>PATH</literal> environment variable on your system to include the <filename>/bin</filename> directory of the SSL distribution. This can be done with the following statement:</para>
+
+
+<programlisting>PATH=$PATH:/usr/local/ssl/bin</programlisting>
+
+
+<para>That's the easy part. Following that, you will need to create a random series of characters that will be used to prime SSLeay's random number generator. The random number generator will be used to create key pairs for both the clients and the server. You can create this random series by filling a text file of a long series of random characters. For example, you can use your favorite editor to create a text file with random characters, or use this command and enter arbitrary characters at the standard input:</para>
+
+
+<programlisting>cat &gt;/tmp/private.txt</programlisting>
+
+
+<para>The Samba documentation recommends that you type characters for longer than a minute before interrupting the input stream by hitting Control-D. Try not to type only the characters that are under your fingers on the keyboard; throw in some symbols and numbers as well. Once you've completed the random file, you can prime the random number generator with the following command:</para>
+
+
+<programlisting># ssleay genrsa -rand /tmp/private.txt &gt;/dev/null
+2451 semi-random bytes loaded
+Generating RSA private key, 512 bit long modulus
+..+++++
+.................................+++++
+e is 65537 (0x10001)</programlisting>
+
+
+<para>You can safely ignore the output of this command. After it has completed, remove the series of characters used to create the key because this could be used to recreate any private keys that were generated from this random number generator:</para>
+
+
+<programlisting>rm -f /tmp/private.txt</programlisting>
+
+
+<para>The result of this command is the hidden file .<emphasis>rnd</emphasis>, which is stored in your home directory. SSLeay will use this file when creating key pairs in the future.</para>
+</sect2>
+
+
+
+
+
+<sect2 role="" label="A.3.2" id="appa-SECT-3.2">
+<title>Configuring Samba to use SSL</title>
+
+
+<para>
+<indexterm id="appa-idx-990398-0"><primary>SSL (Secure Sockets Layer) protocol</primary><secondary>configuring Samba to use</secondary></indexterm>At this point, you can compile Samba to use SSL. Recall that in <link linkend="SAMBA-CH-2">Chapter 2</link>, we said you have to first run the configure script, which initializes the makefile, before you compile Samba. In order to use SSL with Samba, you will need to reconfigure the makefile:</para>
+
+
+<programlisting>./configure --with-ssl</programlisting>
+
+
+<para>After that, you can compile Samba with the following commands:</para>
+
+
+<programlisting># <userinput>make clean</userinput>
+# <userinput>make all</userinput></programlisting>
+
+
+<para>If you encounter an error that says the <filename>smbd</filename> executable is missing the file <filename>ssl.h</filename>, you probably didn't install SSLeay in the default directory. Use the configure option <literal>--with-sslinc</literal> to point to the base directory of the SSL distribution&mdash;in this case, the directory that contains <emphasis>include/ssl.h</emphasis>.</para>
+
+
+<para>On the other hand, if you have a clean compile, you're ready to move on to the next step: creating certificates.</para>
+</sect2>
+
+
+
+
+
+<sect2 role="" label="A.3.3" id="appa-62097">
+<title>Becoming a Certificate Authority</title>
+
+
+<para><firstterm></firstterm>
+<indexterm id="appa-idx-990405-0" class="startofrange"><primary>certificate authority</primary></indexterm>The SSL protocol requires the use of X.509 certificates in the protocol handshake to ensure that either one or both parties involved in the communication are indeed who they say they are. Certificates in real life, such as those use for SSL connections on public web sites, can cost in the arena of $300 a year. This is because the certificate must have a digital signature placed on it by a <firstterm>certificate authority</firstterm>. A certificate authority is an entity that vouches for the authenticity of a digital certificate by signing it with its own private key. This way, anyone who wishes to check the authenticity of the certificate can simply use the certificate authority's public key to check the signature.</para>
+
+
+<para>You are allowed to use a public certificate authority with SSLeay. However, you don't have to. Instead, SSLeay will allow you to declare yourself a trusted certificate authority&mdash;specifying which clients you choose to trust and which clients you do not. In order to do this, you will need to perform several tasks with the SSLeay distribution.</para>
+
+
+<para>The first thing you need to do is specify a secure location where the certificates of the clients and potentially the server will be stored. We have chosen <filename>/etc/certificates</filename> as our default. Execute the following commands as <literal>root</literal>:</para>
+
+
+<programlisting># <userinput>cd /etc</userinput>
+# <userinput>mkdir certificates</userinput>
+# <userinput>chmod 700 certificates</userinput></programlisting>
+
+
+<para>Note that we shut out all access to users other than <literal>root</literal> for this directory. This is very important.</para>
+
+
+<para>Next, you need to set up the SSLeay scripts and configuration files to use the certificates stored in this directory. In order to do this, first modify the <filename>CA.sh</filename> script located at <emphasis>/usr/local/ssl/bin/CA.sh</emphasis> to specify the location of the directory you just created. Find the line that contains the following entry:</para>
+
+
+<programlisting>CATOP=./demoCA</programlisting>
+
+
+<para>Then change it to:</para>
+
+
+<programlisting>CATOP=/etc/certificates</programlisting>
+
+
+<para>Next, you need to modify the <emphasis>/usr/local/ssl/lib/ssleay.cnf</emphasis> file to specify the same directory. Find the entry:</para>
+
+
+<programlisting>[ CA_default ]
+dir     = ./demoCA             # Where everything is kept</programlisting>
+
+
+<para>Then change it to:</para>
+
+
+<programlisting>[ CA_default ]
+dir     =  /etc/certificates   # Where everything is kept</programlisting>
+
+
+<para>Next, run the certificate authority setup script, <filename>CA.sh</filename>, in order to create the certificates. Be sure to do this as the same user that you used to prime the random number generator above:</para>
+
+
+<programlisting>/usr/local/ssl/bin/CA.sh -newca
+mkdir: cannot make directory '/etc/certificates': File exists
+CA certificate filename (or enter to create)</programlisting>
+
+
+<para>Press the Enter key to create a certificate for the CA. You should then see:</para>
+
+
+<programlisting>Making CA certificate ...
+Using configuration from /usr/local/ssl/lib/ssleay.cnf
+Generating a 1024 bit RSA private key
+.............................+++++
+.....................+++++
+writing new private key to /etc/certificates/private/cakey.pem
+Enter PEM pass phrase:</programlisting>
+
+
+<para>Enter a new pass phrase for your certificate. You will need to enter it twice correctly before SSLeay will accept it:</para>
+
+
+<programlisting>Enter PEM pass phrase:
+Verifying password - Enter PEM pass phrase:</programlisting>
+
+
+<para>Be sure to remember this pass phrase. You will need it to sign the client certificates in the future. Once SSLeay has accepted the pass phrase, it will continue on with a series of questions for each of the fields in the X509 certificate:</para>
+
+
+<programlisting>You are about to be asked to enter information that will be
+incorporated into your certificate request.
+What you are about to enter is what is called a Distinguished
+Name or a DN.
+There are quite a few fields but you can leave some blank
+For some fields there will be a default value,
+If you enter '.', the field will be left blank.</programlisting>
+
+
+<para>Fill out the remainder of the fields with information about your organization. For example, our certificate looks like this:</para>
+
+
+<programlisting>Country Name (2 letter code) [AU]:<userinput>US</userinput>
+State or Province Name (full name) [Some-State]:<userinput>California</userinput>
+Locality Name (eg, city) []:<userinput>Sebastopol</userinput>
+Organization Name (eg, company) []:<userinput>O'Reilly</userinput>
+Organizational Unit Name (eg, section) []:<userinput>Books</userinput>
+Common Name (eg, YOUR name) []:<userinput>John Doe</userinput>
+Email Address []:<userinput>doe@ora.com</userinput></programlisting>
+
+
+<para>After that, SSLeay will be configured as a certificate authority and can be used to sign certificates for client machines that will be connecting to the Samba server.</para>
+</sect2>
+
+
+
+
+
+<sect2 role="" label="A.3.4" id="appa-SECT-3.4">
+<title>Creating Certificates for Clients</title>
+
+
+<para>It's simple to create a certificate for a client machine. First, you need to generate a public/private key pair for each entity, create a certificate request file, and then use <emphasis>SSLeay</emphasis> to sign the file as a trusted authority.</para>
+
+
+<para>For our example client <literal>phoenix</literal>, this boils down to three SSLeay commands. The first generates a key pair for the client and places it in the file <filename>phoenix.key</filename>. The private key will be encrypted, in this case using triple DES. Enter a pass phrase when requested below&mdash;you'll need it for the next step:</para>
+
+
+<programlisting># ssleay genrsa -des3 1024 &gt;phoenix.key
+1112 semi-random bytes loaded
+Generating RSA private key, 1024 bit long modulus
+........................................+++++
+.............+++++
+e is 65537 (0x10001)
+Enter PEM pass phrase:
+Verifying password - Enter PEM pass phrase:</programlisting>
+
+
+<para>After that command has completed, type in the following command:</para>
+
+
+<programlisting># <userinput>ssleay req -new -key phoenix.key -out phoenix-csr</userinput>
+Enter PEM pass phrase:</programlisting>
+
+
+<para>Enter the pass phrase for the client certificate you just created (not the certificate authority). At this point, you will need to answer the questionnaire again, this time for the client machine. In addition, you must type in a challenge password and an optional company name&mdash;those do not matter here. When the command completes, you will have a certificate request in the file <emphasis>phoenix-csr.</emphasis></para>
+
+
+<para>Then, you must sign the certificate request as the trusted certificate authority. Type in the following command:</para>
+
+
+<programlisting># <userinput>ssleay ca -days 1000 -inflies phoenix-csr &gt;phoenix.pem</userinput></programlisting>
+
+
+<para>This command will prompt you to enter the PEM pass phrase of the <emphasis>certificate authority</emphasis>. Be sure that you do not enter the PEM pass phrase of the client certificate that you just created. After entering the correct pass phrase, you should see the following:</para>
+
+
+<programlisting>Check that the request matches the signature
+Signature ok
+The Subjects Distinguished Name is as follows:
+...</programlisting>
+
+
+<para>This will be followed by the information that you just entered for the client certificate. If there is an error in the fields, the program will notify you. On the other hand, if everything is fine, SSLeay will confirm that it should sign the certificate and commit it to the database. This adds a record of the certificate to the <filename>/etc/certificates/newcerts</filename> directory.</para>
+
+
+<para>The operative files at the end of this exercise are the <emphasis>phoenix.key</emphasis> and <emphasis>phoenix.pem</emphasis> files, which reside in the current directory. These files will be passed off to the client with whom the SSL-enabled Samba server will interact, and will be used by SSL Proxy.<firstterm></firstterm>
+<indexterm id="appa-idx-990421-0" class="endofrange" startref="appa-idx-990405-0"/></para>
+</sect2>
+
+
+
+
+
+<sect2 role="" label="A.3.5" id="appa-SECT-3.5">
+<title>Configuring the Samba Server</title>
+
+
+<para>The next step is to modify the Samba configuration file to include the following setup options. These options assume that you created the certificates directory for the certificate authority at <filename>/etc/certificates </filename>:</para>
+
+
+<programlisting>[global]
+       ssl = yes
+       ssl server cert = /etc/certificates/cacert.pem
+       ssl server key = /etc/certificates/private/cakey.pem
+       ssl CA certDir = /etc/certificates</programlisting>
+
+
+<para>At this point, you will need to kill the Samba daemons and restart them manually:</para>
+
+
+<programlisting># <userinput>nmbd -D</userinput>
+# <userinput>smbd -D</userinput>
+Enter PEM pass phrase:</programlisting>
+
+
+<para>You will need to enter the PEM pass phrase of the certificate authority to start up the Samba daemons. Note that this may present a problem in terms of starting the program using ordinary means. However, you can get around this using advanced scripting languages, such as Expect or Python.</para>
+</sect2>
+
+
+
+
+
+<sect2 role="" label="A.3.6" id="appa-SECT-3.6">
+<title>Testing with smbclient</title>
+
+
+<para>A good way to test whether Samba is working properly is to use the <emphasis>smbclient</emphasis> program. On the Samba server, enter the following command, substituting the appropriate share and user for a connection:</para>
+
+
+<programlisting># <userinput>smbclient //hydra/data -U tom</userinput></programlisting>
+
+
+<para>You should see several debugging statements followed by a line indicating the negotiated cipher, such as:</para>
+
+
+<programlisting>SSL: negotiated cipher: DES-CBC3-SHA</programlisting>
+
+
+<para>After that, you can enter your password and connect to the share normally. If this works, you can be sure that Samba is correctly supporting SSL connections. Now, on to the client setup. <indexterm id="appa-idx-990386-0" class="endofrange" startref="appa-idx-990613-0"/></para>
+</sect2>
+</sect1>
+
+
+
+
+
+
+
+
+
+<sect1 role="" label="A.4" id="appa-SECT-4">
+<title>Setting Up SSL Proxy</title>
+
+
+<para>The <indexterm id="appa-idx-990393-0"><primary>SSL (Secure Sockets Layer) protocol</primary><secondary>SS Proxy</secondary><tertiary>setting up</tertiary></indexterm>SSL Proxy program is available as a standalone binary or as source code. You can download it from <systemitem role="url">http://obdev.at/Products/sslproxy.html</systemitem>.</para>
+
+
+<para>Once it is downloaded, you can configure and compile it like Samba. We will configure it on a Windows NT system. However, setting it up for a Unix system involves a nearly identical series of steps. Be sure that you are the superuser (administrator) for the next series of steps.</para>
+
+
+<para>If you downloaded the binary for Windows NT, you should have the following files in a directory:</para>
+
+
+<itemizedlist>
+
+<listitem><para><filename>cygwinb19.dll</filename></para></listitem>
+
+<listitem><para><filename>README.TXT</filename></para></listitem>
+
+<listitem><para><filename>sslproxy.exe</filename></para></listitem>
+
+<listitem><para><filename>dummyCert.pem</filename></para></listitem>
+
+</itemizedlist>
+
+<para>The only one that you will be interested in is the SSL Proxy executable. Copy over the <emphasis>phoenix.pem</emphasis> and <emphasis>phoenix.key</emphasis> files that you generated earlier for the client to the same directory as the SSL proxy executable. Make sure that the directory is secure from the prying eyes of other users.</para>
+
+
+<para>The next step is to ensure that the Windows NT machine can resolve the NetBIOS name of the Samba server. This means that you should either have a WINS server up and running (the Samba server can perform this task with the <literal>wins</literal> <literal>support</literal> <literal>=</literal> <literal>yes</literal> option) or have it listed in the appropriate <emphasis>hosts</emphasis> file of the system. See <link linkend="SAMBA-CH-7">Chapter 7</link>, for more information on WINS server.<footnote label="1" id="appa-pgfId-986801">
+
+
+<para>If you are running SSL Proxy on a Unix server, you should ensure that the DNS name of the Samba server can be resolved.</para>
+
+
+</footnote></para>
+
+
+<para>Finally, start up SSL Proxy with the following command. Here, we assume that <literal>hydra</literal> is the name of the Samba server:</para>
+
+
+<programlisting>#<userinput> C:\SSLProxy&gt;sslproxy -l 139 -R hydra -r 139 -n -c phoenix.pem -k phoenix.key</userinput></programlisting>
+
+
+<para>This tells SSL Proxy to listen for connections to port 139 and relay those requests to port 139 on the NetBIOS machine <literal>hydra</literal>. It also instructs SSL Proxy to use the <filename>phoenix.pem</filename> and <filename>phoenix.key</filename> files to generate the certificate and keys necessary to initiate the SSL connection. SSL Proxy responds with:</para>
+
+
+<programlisting>Enter PEM pass phrase:</programlisting>
+
+
+<para>Enter the PEM pass phrase of the client keypair that you generated, <emphasis>not</emphasis> the certificate authority. You should then see the following output:</para>
+
+
+<programlisting>SSL: No verify locations, trying default
+proxy ready, listening for connections</programlisting>
+
+
+<para>That should take care of the client. You can place this command in a startup sequence on either Unix or Windows NT if you want this functionality available at all times. Be sure to set any clients you have connecting to the NT server (including the NT server itself) to point to this server instead of the Samba server.</para>
+
+
+<para>After you've completed setting this up, try to connect using clients that proxy through the NT server. You should find that it works almost transparently.</para>
+</sect1>
+
+
+
+
+
+
+
+
+
+<sect1 role="" label="A.5" id="appa-SECT-5">
+<title>SSL Configuration Options</title>
+
+
+<para>
+<indexterm id="appa-idx-990427-0" class="startofrange"><primary>SSL (Secure Sockets Layer) protocol</primary><secondary>configuration options for</secondary></indexterm><link linkend="appa-61150">Table 1.1</link> summarizes the configuration options introduced in the previous section for using SSL. Note that all of these options are global in scope; in other words, they must appear in the <literal>[global]</literal> section of the configuration file.</para>
+
+
+<table label="A.1" id="appa-61150">
+<title>SSL Configuration Options </title>
+
+<tgroup cols="5">
+<colspec colnum="1" colname="col1"/>
+<colspec colnum="2" colname="col2"/>
+<colspec colnum="3" colname="col3"/>
+<colspec colnum="4" colname="col4"/>
+<colspec colnum="5" colname="col5"/>
+<thead>
+<row>
+
+<entry colname="col1"><para>Option</para></entry>
+
+<entry colname="col2"><para>Parameters</para></entry>
+
+<entry colname="col3"><para>Function</para></entry>
+
+<entry colname="col4"><para>Default</para></entry>
+
+<entry colname="col5"><para>Scope</para></entry>
+
+</row>
+
+</thead>
+
+<tbody>
+<row>
+
+<entry colname="col1"><para><literal>ssl</literal></para></entry>
+
+<entry colname="col2"><para>boolean</para></entry>
+
+<entry colname="col3"><para>Indicates whether SSL mode is enabled with Samba.</para></entry>
+
+<entry colname="col4"><para><literal>no</literal></para></entry>
+
+<entry colname="col5"><para>Global</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>ssl hosts</literal></para></entry>
+
+<entry colname="col2"><para>string (list of addresses)</para></entry>
+
+<entry colname="col3"><para>Specifies a list of hosts that must always connect using SSL.</para></entry>
+
+<entry colname="col4"><para>None</para></entry>
+
+<entry colname="col5"><para>Global</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>ssl hosts resign</literal></para></entry>
+
+<entry colname="col2"><para>string (list of addresses)</para></entry>
+
+<entry colname="col3"><para>Specifies a list of hosts that never connect using SS.</para></entry>
+
+<entry colname="col4"><para>None</para></entry>
+
+<entry colname="col5"><para>Global</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>ssl CA certDir</literal></para></entry>
+
+<entry colname="col2"><para>string (fully-qualified pathname)</para></entry>
+
+<entry colname="col3"><para>Specifies the directory where the certificates are stored.</para></entry>
+
+<entry colname="col4"><para>None</para></entry>
+
+<entry colname="col5"><para>Global</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>ssl CA certFile</literal></para></entry>
+
+<entry colname="col2"><para>string (fully-qualified pathname)</para></entry>
+
+<entry colname="col3"><para>Specifies a file that contains all of the certificates for Samba.</para></entry>
+
+<entry colname="col4"><para>None</para></entry>
+
+<entry colname="col5"><para>Global</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>ssl server cert</literal></para></entry>
+
+<entry colname="col2"><para>string (fully-qualified pathname)</para></entry>
+
+<entry colname="col3"><para>Specifies the location of the server's certificate.</para></entry>
+
+<entry colname="col4"><para>None</para></entry>
+
+<entry colname="col5"><para>Global</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>ssl server key</literal></para></entry>
+
+<entry colname="col2"><para>string (fully-qualified pathname)</para></entry>
+
+<entry colname="col3"><para>Specifies the location of the server's private key.</para></entry>
+
+<entry colname="col4"><para>None</para></entry>
+
+<entry colname="col5"><para>Global</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>ssl client cert</literal></para></entry>
+
+<entry colname="col2"><para>string (fully-qualified pathname)</para></entry>
+
+<entry colname="col3"><para>Specifies the location of the client's certificate.</para></entry>
+
+<entry colname="col4"><para>None</para></entry>
+
+<entry colname="col5"><para>Global</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>ssl client key</literal></para></entry>
+
+<entry colname="col2"><para>string (fully-qualified pathname)</para></entry>
+
+<entry colname="col3"><para>Specifies the location of the client's private key.</para></entry>
+
+<entry colname="col4"><para>None</para></entry>
+
+<entry colname="col5"><para>Global</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>ssl require clientcert</literal></para></entry>
+
+<entry colname="col2"><para>boolean</para></entry>
+
+<entry colname="col3"><para>Indicates whether Samba should require each client to have a certificate.</para></entry>
+
+<entry colname="col4"><para><literal>no</literal></para></entry>
+
+<entry colname="col5"><para>Global</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>ssl require servercert</literal></para></entry>
+
+<entry colname="col2"><para>boolean</para></entry>
+
+<entry colname="col3"><para>Indicates whether the server itself should have a certificate.</para></entry>
+
+<entry colname="col4"><para><literal>no</literal></para></entry>
+
+<entry colname="col5"><para>Global</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>ssl ciphers</literal></para></entry>
+
+<entry colname="col2"><para>String</para></entry>
+
+<entry colname="col3"><para>Specifies the cipher suite to use during protocol negotiation.</para></entry>
+
+<entry colname="col4"><para>None</para></entry>
+
+<entry colname="col5"><para>Global</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>ssl version</literal></para></entry>
+
+<entry colname="col2"><para><literal>ssl2or3</literal>, <literal>ssl3</literal>, or <literal>tls1</literal></para></entry>
+
+<entry colname="col3"><para>Specifies the version of SSL to use.</para></entry>
+
+<entry colname="col4"><para><literal>ssl2or3</literal></para></entry>
+
+<entry colname="col5"><para>Global</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>ssl compatibility</literal></para></entry>
+
+<entry colname="col2"><para>boolean</para></entry>
+
+<entry colname="col3"><para>Indicates whether compatibility with other implementations of SSL should be activated.</para></entry>
+
+<entry colname="col4"><para><literal>no</literal></para></entry>
+
+<entry colname="col5"><para>Global</para></entry>
+
+</row>
+
+</tbody>
+</tgroup>
+</table>
+
+
+<sect2 role="" label="A.5.1" id="appa-SECT-5.0.1">
+<indexterm id="appa-idx-990620-0"><primary>ssl option</primary></indexterm>
+<title>
+ssl</title>
+
+
+<para>This global option configures Samba to use SSL for communication between itself and clients. The default value of this option is <literal>no</literal>. You can reset it as follows:</para>
+
+
+<programlisting>[global]
+       ssl = yes</programlisting>
+
+
+<para>Note that in order to use this option, you must have a proxy for Windows 95/98 clients, such as in the model presented earlier in this chapter.</para>
+</sect2>
+
+
+
+
+
+<sect2 role="" label="A.5.2" id="appa-SECT-5.0.2">
+<indexterm id="appa-idx-990625-0"><primary>ssl hosts option</primary></indexterm>
+<title>
+ssl hosts</title>
+
+
+<para>This option specifies the hosts that will be forced into using SSL. The syntax for specifying hosts and addresses is the same as the <literal>hosts</literal> <literal>allow</literal> and the <literal>hosts</literal> <literal>deny</literal> configuration options. For example:</para>
+
+
+<programlisting>[global]
+       ssl = yes
+       ssl hosts = 192.168.220.</programlisting>
+
+
+<para>This example specifies that all hosts that fall into the 192.168.220 subnet must use SSL connections with the client. This type of structure is useful if you know that various connections will be made by a subnet that lies across an untrusted network, such as the Internet. If neither this option nor the <literal>ssl</literal> <literal>hosts</literal> <literal>resign</literal> option has been specified, and <literal>ssl</literal> is set to <literal>yes</literal>, Samba will allow only SSL connections from all clients.</para>
+</sect2>
+
+
+
+
+
+<sect2 role="" label="A.5.3" id="appa-SECT-5.0.3">
+<indexterm id="appa-idx-990628-0"><primary>ssl hosts resign option</primary></indexterm>
+<title>
+ssl hosts resign</title>
+
+
+<para>This option specifies the hosts that will <emphasis>not</emphasis> be forced into SSL mode. The syntax for specifying hosts and addresses is the same as the <literal>hosts</literal> <literal>allow</literal> and the <literal>hosts</literal> <literal>deny</literal> configuration options. For example:</para>
+
+
+<programlisting>[global]
+       ssl = yes
+       ssl hosts resign = 160.2.310. 160.2.320.</programlisting>
+
+
+<para>This example specifies that all hosts that fall into the 160.2.310 or 160.2.320 subnets will not use SSL connections with the client. If neither this option nor the <literal>ssl</literal> <literal>hosts</literal> option has been specified, and <literal>ssl</literal> is set to <literal>yes</literal>, Samba will allow only SSL connections from all clients.</para>
+</sect2>
+
+
+
+
+
+<sect2 role="" label="A.5.4" id="appa-SECT-5.0.4">
+<indexterm id="appa-idx-990631-0"><primary>ssl CA certDir option</primary></indexterm>
+<title>
+ssl CA certDir</title>
+
+
+<para>This option specifies the directory containing the certificate authority's certificates that Samba will use to authenticate clients. There must be one file in this directory for each certificate authority, named as specified earlier in this chapter. Any other files in this directory are ignored. For example:</para>
+
+
+<programlisting>[global]
+       ssl = yes
+       ssl hosts = 192.168.220.
+       ssl CA certDir = /usr/local/samba/cert</programlisting>
+
+
+<para>There is no default for this option. You can alternatively use the option <literal>ssl</literal> <literal>CA</literal> <literal>certFile</literal> if you wish to place all the certificate authority information in the same file.</para>
+</sect2>
+
+
+
+
+
+<sect2 role="" label="A.5.5" id="appa-SECT-5.0.5">
+<indexterm id="appa-idx-990634-0"><primary>ssl CA certFile option</primary></indexterm>
+<title>
+ssl CA certFile</title>
+
+
+<para>This option specifies a file that contains the certificate authority's certificates that Samba will use to authenticate clients. This option differs from <literal>ssl</literal> <literal>CA</literal> <literal>certDir</literal> in that there is only one file used for all the certificate authorities. An example of its usage follows:</para>
+
+
+<programlisting>[global]
+       ssl = yes
+       ssl hosts = 192.168.220.
+       ssl CA certFile = /usr/local/samba/cert/certFile</programlisting>
+
+
+<para>There is no default for this option. You can also use the option <literal>ssl</literal> <literal>CA</literal> <literal>certDir</literal> if you wish to have a separate file for each certificate authority that Samba trusts.</para>
+</sect2>
+
+
+
+
+
+<sect2 role="" label="A.5.6" id="appa-SECT-5.0.6">
+<indexterm id="appa-idx-990637-0"><primary>ssl server cert option</primary></indexterm>
+<title>
+ssl server cert</title>
+
+
+<para>This option specifies the location of the server's certificate. This option is mandatory; the server must have a certificate in order to use SSL. For example:</para>
+
+
+<programlisting>[global]
+       ssl = yes
+       ssl hosts = 192.168.220.
+       ssl CA certFile = /usr/local/samba/cert/certFile
+       ssl server cert = /usr/local/samba/private/server.pem</programlisting>
+
+
+<para>There is no default for this option. Note that the certificate may contain the private key for the server.</para>
+</sect2>
+
+
+
+
+
+<sect2 role="" label="A.5.7" id="appa-SECT-5.0.7">
+<indexterm id="appa-idx-990640-0"><primary>ssl server key option</primary></indexterm>
+<title>
+ssl server key</title>
+
+
+<para>This option specifies the location of the server's private key. You should ensure that the location of the file cannot be accessed by anyone other than <literal>root</literal>. For example:</para>
+
+
+<programlisting>[global]
+       ssl = yes
+       ssl hosts = 192.168.220.
+       ssl CA certFile = /usr/local/samba/cert/certFile
+       ssl server key = /usr/local/samba/private/samba.pem</programlisting>
+
+
+<para>There is no default for this option. Note that the private key may be contained in the certificate for the server.</para>
+</sect2>
+
+
+
+
+
+<sect2 role="" label="A.5.8" id="appa-SECT-5.0.8">
+<indexterm id="appa-idx-990643-0"><primary>ssl client cert option</primary></indexterm>
+<title>
+ssl client cert</title>
+
+
+<para>This option specifies the location of the client's certificate. The certificate may be requested by the Samba server with the <literal>ssl</literal> <literal>require</literal> <literal>clientcert</literal> option; the certificate is also used by <filename>smbclient</filename>. For example:</para>
+
+
+<programlisting>[global]
+    ssl = yes
+    ssl hosts = 192.168.220.
+    ssl CA certFile = /usr/local/samba/cert/certFile
+    ssl server cert = /usr/local/ssl/private/server.pem
+    ssl client cert= /usr/local/ssl/private/clientcert.pem</programlisting>
+
+
+<para>There is no default for this option.</para>
+</sect2>
+
+
+
+
+
+<sect2 role="" label="A.5.9" id="appa-SECT-5.0.9">
+<indexterm id="appa-idx-990646-0"><primary>ssl client key option</primary></indexterm>
+<title>
+ssl client key</title>
+
+
+<para>This option specifies the location of the client's private key. You should ensure that the location of the file cannot be accessed by anyone other than <literal>root</literal>. For example:</para>
+
+
+<programlisting>[global]
+       ssl = yes
+       ssl hosts = 192.168.220.
+       ssl CA certDir = /usr/local/samba/cert/
+       ssl server key = /usr/local/ssl/private/samba.pem
+       ssl client key = /usr/local/ssl/private/clients.pem</programlisting>
+
+
+<para>There is no default for this option. This option is only needed if the client has a certificate.</para>
+</sect2>
+
+
+
+
+
+<sect2 role="" label="A.5.10" id="appa-SECT-5.0.10">
+<indexterm id="appa-idx-990649-0"><primary>ssl require clientcert option</primary></indexterm>
+<title>
+ssl require clientcert</title>
+
+
+<para>This option specifies whether the client is required to have a certificate. The certificates listed with either the <literal>ssl</literal> <literal>CA</literal> <literal>certDir</literal> or the <literal>ssl</literal> <literal>CA</literal> <literal>certFile</literal> will be searched to confirm that the client has a valid certificate and is authorized to connect to the Samba server. The value of this option is a simple boolean. For example:</para>
+
+
+<programlisting>[global]
+       ssl = yes
+       ssl hosts = 192.168.220.
+       ssl CA certFile = /usr/local/samba/cert/certFile
+       ssl require clientcert = yes</programlisting>
+
+
+<para>We recommend that you require certificates from all clients that could be connecting to the Samba server. The default value for this option is <literal>no</literal>.</para>
+</sect2>
+
+
+
+
+
+<sect2 role="" label="A.5.11" id="appa-SECT-5.0.11">
+<indexterm id="appa-idx-990652-0"><primary>ssl require servercert option</primary></indexterm>
+<title>
+ssl require servercert</title>
+
+
+<para>This option specifies whether the server is required to have a certificate. Again, this will be used by the <filename>smbclient</filename> program. The value of this option is a simple boolean. For example:</para>
+
+
+<programlisting>[global]
+       ssl = yes
+       ssl hosts = 192.168.220.
+       ssl CA certFile = /usr/local/samba/cert/certFile
+       ssl require clientcert = yes
+       ssl require servercert = yes</programlisting>
+
+
+<para>Although we recommend that you require certificates from all clients that could be connecting to the Samba server, a server certificate is not required. It is, however,  recommended. The default value for this option is <literal>no</literal>.</para>
+</sect2>
+
+
+
+
+
+<sect2 role="" label="A.5.12" id="appa-SECT-5.0.12">
+<indexterm id="appa-idx-990655-0"><primary>ssl ciphers option</primary></indexterm>
+<title>
+ssl ciphers</title>
+
+
+<para>This option sets the ciphers on which SSL will decide during the negotiation phase of the SSL connection. Samba can use any of the following ciphers:</para>
+
+
+<programlisting>DEFAULT
+DES-CFB-M1
+NULL-MD5
+RC4-MD5
+EXP-RC4-MD5
+RC2-CBC-MD5
+EXP-RC2-CBC-MD5
+IDEA-CBC-MD5
+DES-CBC-MD5
+DES-CBC-SHA
+DES-CBC3-MD5
+DES-CBC3-SHA
+RC4-64-MD5
+NULL</programlisting>
+
+
+<para>It is best not to set this option unless you are familiar with the SSL protocol and want to mandate a specific cipher suite.</para>
+</sect2>
+
+
+
+
+
+<sect2 role="" label="A.5.13" id="appa-SECT-5.0.13">
+<indexterm id="appa-idx-990658-0"><primary>ssl version option</primary></indexterm>
+<title>
+ssl version</title>
+
+
+<para>This global option specifies the version of SSL that Samba will use when handling encrypted connections. The default value is <literal>ssl2or3</literal>, which specifies that either version 2 or 3 of the SSL protocol can be used, depending on which version is negotiated in the handshake between the server and the client. However, if you want Samba to use only a specific version of the protocol, you can specify the following:</para>
+
+
+<programlisting>[global]
+       ssl version = ssl3</programlisting>
+
+
+<para>Again, it is best not to set this option unless you are familiar with the SSL protocol and want to mandate a specific version.</para>
+</sect2>
+
+
+
+
+
+<sect2 role="" label="A.5.14" id="appa-SECT-5.0.14">
+<indexterm id="appa-idx-990661-0"><primary>ssl compatibility option</primary></indexterm>
+<title>
+ssl compatibility</title>
+
+
+<para>This global option specifies whether Samba should be configured to use other versions of SSL. However, because no other versions exist at this writing, the issue is  moot and the variable should always be left at the<indexterm id="appa-idx-990431-0" class="endofrange" startref="appa-idx-990427-0"/> default.<indexterm id="appa-idx-990339-0" class="endofrange" startref="appa-idx-990325-0"/>
+<indexterm id="appa-idx-990339-1" class="endofrange" startref="appa-idx-990325-1"/></para>
+</sect2>
+</sect1>
+
+
+
+
+
+
+
+
+</appendix>
diff --git a/docs-xml/using_samba/appb.xml b/docs-xml/using_samba/appb.xml
new file mode 100644 (file)
index 0000000..c3e7b18
--- /dev/null
@@ -0,0 +1,1702 @@
+<appendix label="B" id="SAMBA-AP-B">
+<title>Samba Performance Tuning</title>
+
+
+
+
+<para>
+<indexterm id="appb-idx-959725-0" class="startofrange"><primary>Samba</primary><secondary>performance tuning</secondary></indexterm>
+<indexterm id="appb-idx-959725-1" class="startofrange"><primary>performance tuning</primary></indexterm>
+<indexterm id="appb-idx-959725-2" class="startofrange"><primary>configuring Samba</primary><secondary>performance tuning</secondary></indexterm>This appendix discusses various ways of performance tuning and system sizing with Samba. <firstterm>Performance tuning</firstterm> is the art of finding bottlenecks and adjusting to eliminate them. <emphasis>Sizing</emphasis> is the practice of eliminating bottlenecks by spending money to avoid having them in the first place. Normally, you won't have to worry about either with Samba. On a completely untuned server, Samba will happily support a small community of users. However, on a properly tuned server, Samba will support at least twice as many users. This chapter is devoted to outlining various performance-tuning and sizing techniques that you can use if you want to stretch your Samba server to the limit.</para>
+
+
+
+
+
+
+
+
+
+
+
+<sect1 role="" label="B.1" id="appb-47134">
+<title>A Simple Benchmark</title>
+
+
+<para>
+<indexterm id="appb-idx-959739-0"><primary>Samba</primary><secondary>performance tuning</secondary><tertiary>benchmark for</tertiary></indexterm>
+<indexterm id="appb-idx-959739-1"><primary>performance tuning</primary><secondary>benchmark for</secondary></indexterm>
+<indexterm id="appb-idx-959739-2"><primary>configuring Samba</primary><secondary>performance tuning</secondary><tertiary>benchmark for</tertiary></indexterm>How do you know if you're getting reasonable performance? A simple benchmark is to compare Samba with FTP. <link linkend="appb-73167">Table 2.1</link> shows the throughput, in kilobytes per second, of a pair of servers: a medium-size Sun SPARC Ultra and a small Linux Pentium server. Numbers are reported in kilobytes per second (KB/s).</para>
+
+
+<table label="B.1" id="appb-73167">
+<title>Sample Benchmark Benchmarks </title>
+
+<tgroup cols="4">
+<colspec colnum="1" colname="col1"/>
+<colspec colnum="2" colname="col2"/>
+<colspec colnum="3" colname="col3"/>
+<colspec colnum="4" colname="col4"/>
+<thead>
+<row>
+
+<entry colname="col1"><para>Command</para></entry>
+
+<entry colname="col2"><para>FTP</para></entry>
+
+<entry colname="col3"><para>Untuned Samba</para></entry>
+
+<entry colname="col4"><para>Tuned Samba</para></entry>
+
+</row>
+
+</thead>
+
+<tbody>
+<row>
+
+<entry colname="col1"><para>Sparc get</para></entry>
+
+<entry colname="col2"><para>1014.5</para></entry>
+
+<entry colname="col3"><para>645.3</para></entry>
+
+<entry colname="col4"><para>866.7</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para>Sparc put</para></entry>
+
+<entry colname="col2"><para>379.8</para></entry>
+
+<entry colname="col3"><para>386.1</para></entry>
+
+<entry colname="col4"><para>329.5</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para>Pentium get</para></entry>
+
+<entry colname="col2"><para>973.27</para></entry>
+
+<entry colname="col3"><para>N/A</para></entry>
+
+<entry colname="col4"><para>725</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para>Pentium put</para></entry>
+
+<entry colname="col2"><para>1014.5</para></entry>
+
+<entry colname="col3"><para>N/A</para></entry>
+
+<entry colname="col4"><para>1100</para></entry>
+
+</row>
+
+</tbody>
+</tgroup>
+</table>
+
+
+<para>If you run the same tests on your server, you probably won't see the same numbers. However, you <emphasis>should</emphasis> see similar ratios of Samba to FTP, probably in the range of 68 to 80 percent. It's not a good idea to base <emphasis>all</emphasis> of Samba's throughput against FTP. The golden rule to remember is this: if Samba is much slower than FTP, it's time to tune it.</para>
+
+
+<para>You might think that an equivalent test would be to compare Samba to NFS. In reality, however, it's much less useful to compare their speeds. Depending entirely on whose version of NFS you have and how well it's tuned, Samba can be slower or faster than NFS. We usually find that Samba is faster, but watch out; NFS uses a different algorithm from Samba, so tuning options that are optimal for NFS may be detrimental for Samba. If you run Samba on a well-tuned NFS server, Samba may perform rather badly.</para>
+
+
+<para>A more popular benchmark is Ziff-Davis' <emphasis>NetBench,</emphasis> a simulation of many users on client machines running word processors and accessing data on the SMB server. It's not a prefect measure (each NetBench client does about ten times the work of a normal user on our site), but it is a fair comparison of similar servers. In tests performed by Jeremy Allison in November 1998, Samba 2.0 on a SGI multiprocessor outperformed NT Server 4.0 (Patch Level 2) on an equivalent high-end Compaq. This was confirmed and strengthened by a Sm@rt Reseller test of NT and Linux on identical hardware in February 1999.</para>
+
+
+<para>In April 1999, the Mindcraft test lab released a report about a test showing that Samba on a four-processor Linux machine was significantly slower than native file serving on the same machine running Windows NT. While the original report was slammed by the Open Source community because it was commissioned by Microsoft and tuned the systems to favor Windows NT, a subsequent test was fairer and generally admitted to reveal some areas where Linux needed to improve its performance, especially on multiprocessors. Little was said about Samba itself. Samba is known to scale well on multiprocessors, and exceeds 440MB/s on a four-processor SGI O200, beating Mindcraft's 310MB/s.</para>
+
+
+<para>Relative performance will probably change as NT and PC hardware get faster, of course, but Samba is improving as well. For example, Samba 1.9.18 was faster only with more than 35 clients. Samba 2.0, however, is faster regardless of the number of clients. In short, Samba is very competitive with the best networking software in the industry, and is only getting better.</para>
+
+
+<para>As we went to press, Andrew Tridgell released the alpha-test version suite of benchmarking programs for Samba and SMB networks. Expect even more work on performance from the Samba team in the future.</para>
+</sect1>
+
+
+
+
+
+
+
+
+
+<sect1 role="" label="B.2" id="appb-50295">
+<title>Samba Tuning</title>
+
+
+<para>
+<indexterm id="appb-idx-959765-0"><primary>tuning</primary><see>performance tuning</see></indexterm>That being said, let's discuss how you can take an already fast networking package and make it even faster.</para>
+
+
+<sect2 role="" label="B.2.1" id="appb-SECT-2.1">
+<title>Benchmarking</title>
+
+
+<para>
+<indexterm id="appb-idx-959749-0"><primary>Samba</primary><secondary>performance tuning</secondary><tertiary>benchmark for</tertiary></indexterm>
+<indexterm id="appb-idx-959749-1"><primary>performance tuning</primary><secondary>benchmark for</secondary></indexterm>
+<indexterm id="appb-idx-959749-2"><primary>configuring Samba</primary><secondary>performance tuning</secondary><tertiary>benchmark for</tertiary></indexterm>Benchmarking is an arcane and somewhat black art, but the level of expertise needed for simple performance tuning is fairly low. Since the Samba server's goal in life is to transfer files, we will examine only throughput, not response time to particular events, under the benchmarking microscope. After all, it's relatively easy to measure file transfer speed, and Samba doesn't suffer too badly from response-time problems that would require more sophisticated techniques.</para>
+
+
+<para>Our basic strategy for this work will be:</para>
+
+
+<itemizedlist>
+
+<listitem><para>Find a reasonably-sized file to copy and a program that reports on copy speeds, such as <filename>smbclient</filename>.</para></listitem>
+
+<listitem><para>Find a quiet (or typical) time to do the test.</para></listitem>
+
+<listitem><para>Pre-run each test a few times to preload buffers.</para></listitem>
+
+<listitem><para>Run tests several times and watch for unusual results.</para></listitem>
+
+<listitem><para>Record each run in detail.</para></listitem>
+
+<listitem><para>Compare the average of the valid runs to expected values.</para></listitem>
+
+</itemizedlist>
+
+<para>After establishing a baseline using this method, we can adjust a single parameter and do the measurements all over again. An empty table for your tests is provided at the end of this chapter.</para>
+</sect2>
+
+
+
+
+
+<sect2 role="" label="B.2.2" id="appb-SECT-2.2">
+<title>Things to Tweak</title>
+
+
+<para>There are literally thousands of Samba setting combinations that you can use in search of that perfect server. Those of us with lives outside of system administration, however, can narrow down the number of options to those listed in this section, which are the most likely to affect overall throughput. They are presented  roughly in order of impact.</para>
+
+
+<sect3 role="" label="B.2.2.1" id="appb-SECT-2.2.1">
+<title>Log level</title>
+
+
+<para>
+<indexterm id="appb-idx-959753-0"><primary>log files/logging</primary><secondary>levels of</secondary><tertiary>tuning</tertiary></indexterm>This is an obvious one. Increasing the logging level (<literal>log</literal>
+<indexterm id="appb-idx-960330-0"><primary>log level option</primary></indexterm>
+<indexterm id="appb-idx-960330-1"><primary>debug level option</primary></indexterm> <literal>level</literal> or <literal>debug</literal> <literal>level</literal> configuration options) is a good way to debug a problem, unless you happen to be searching for a performance problem! As mentioned in <link linkend="ch04-21486">Chapter 4</link>, Samba produces a ton of debugging messages at level 3 and above, and writing them to disk or syslog is a slow operation. In our <filename>smbclient/ftp</filename> tests, raising the log level from 0 to 3 cut the untuned <literal>get</literal> <literal>speed</literal> from 645.3 to 622.2KB/s, or roughly 5 percent. Higher log levels were even worse.</para>
+</sect3>
+
+
+
+<sect3 role="" label="B.2.2.2" id="appb-SECT-2.2.2">
+<title>Socket options</title>
+
+
+<para>The next thing to look at are the <literal>socket</literal>
+<indexterm id="appb-idx-960332-0"><primary>socket options configuration options</primary></indexterm> <literal>options</literal> configuration options. These are really host system tuning options, but they're set on a per-connection basis, and can be reset by Samba on the sockets it employs by adding <literal>socket</literal> <literal>options</literal> <literal>=</literal> <literal>option</literal> to the <literal>[global]</literal> section of your <filename>smb.conf </filename>file. Not all of these options are supported by all vendors; check your vendor's manual pages on <emphasis>setsockopt </emphasis>(1) or <emphasis>socket </emphasis>(5) for details.</para>
+
+
+<para>The main options are:</para>
+
+
+<variablelist>
+<varlistentry><term><literal>TCP_NODELAY</literal></term>
+<listitem><para>Have the server send as many packets as necessary to keep delay low. This is used on telnet connections to give good response time, and is used&mdash;somewhat counter-intuitively&mdash;to get good speed even when doing small requests or when acknowledgments are delayed (as seems to occur with Microsoft TCP/IP). This is worth a 30-50 percent speedup by itself. Incidentally, in Samba 2.0.4, <literal>socket</literal> <literal>options</literal> <literal>=</literal> <literal>TCP_NODELAY</literal> became the default value for that option.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>IPTOS_LOWDELAY</literal></term>
+<listitem><para>This is another option that trades off throughput for lower delay, but which affects routers and other systems, not the server. All the IPTOS options are new; they're not supported by all operating systems and routers. If they are supported, set <literal>IPTOS_LOWDELAY</literal> whenever you set <literal>TCP_NODELAY</literal>.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>SO_SNDBUF</literal> <literal>and</literal> <literal>SO_RCVBUF</literal></term>
+<listitem><para>The send and receive buffers can often be the reset to a value higher than that of the operating system. This yields a marginal increase of speed (until it reaches a point of diminishing returns).</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>SO_KEEPALIVE</literal></term>
+<listitem><para>This initiates a periodic (four-hour) check to see if the client has disappeared. Expired connections are addressed somewhat better with Samba's <literal>keepalive</literal> and <literal>dead</literal> <literal>time</literal> options. All three eventually arrange to close dead connections, returning unused memory and process-table entries to the operating system.</para></listitem>
+</varlistentry>
+</variablelist>
+
+
+<para>There are several other socket options you might look at, (e.g., <literal>SO_SNDLOWAT</literal>), but they vary in availability from vendor to vendor. You probably want to look at <citetitle>TCP/IP Illustrated</citetitle> if you're interested in exploring more of these options for performance tuning with Samba.</para>
+</sect3>
+
+
+
+<sect3 role="" label="B.2.2.3" id="appb-SECT-2.2.3">
+<title>read raw and write raw</title>
+
+
+<para>
+<indexterm id="appb-idx-959754-0"><primary>read raw, tuning</primary></indexterm>
+<indexterm id="appb-idx-959754-1"><primary>write raw, tuning</primary></indexterm>These are important performance configuration options; they enable Samba to use large reads and writes to the network, of up to 64KB in a single SMB request. They also require the largest SMB packet structures, <literal>SMBreadraw</literal> and <literal>SMBwriteraw</literal>, from which the options take their names. Note that this is not the same as a Unix <emphasis>raw read</emphasis>. This Unix term usually refers to reading disks without using the files system, quite a different sense from the one described here for Samba.</para>
+
+
+<para>In the past, some client programs failed if you tried to use <literal>read</literal> <literal>raw</literal>. As far as we know, no client suffers from this problem any more. Read and write raw default to <literal>yes</literal>, and should be left on unless you find you have one of the buggy clients.</para>
+</sect3>
+
+
+
+<sect3 role="" label="B.2.2.4" id="appb-SECT-2.2.4">
+<title>Opportunistic locking</title>
+
+
+<para>
+<indexterm id="appb-idx-959755-0"><primary>opportunistic locking</primary><secondary>tuning</secondary></indexterm>
+<indexterm id="appb-idx-959755-1"><primary>locks/locking files</primary><secondary>opportunistic locking</secondary><tertiary>tuning of</tertiary></indexterm>Opportunistic locks, or <emphasis>oplocks</emphasis>, allow clients to cache files locally, improving performance on the order of 30 percent. This option is now enabled by default. For read-only files, the <literal>fake</literal> <literal>oplocks</literal> provides the same functionality without actually doing any caching. If you have files that cannot be cached, <emphasis>oplocks</emphasis> can be turned off.</para>
+
+
+<para>Database files should never be cached, nor should any files that are updated both on the server and the client and whose changes must be immediately visible. For these files, the <literal>veto</literal> <literal>oplock</literal>
+<indexterm id="appb-idx-960336-0"><primary>oplock files option</primary></indexterm> <literal>files</literal> option allows you to specify a list of individual files or a pattern containing wildcards to avoid caching. <emphasis>oplocks</emphasis> can be turned off on a share-by-share basis if you have large groups of files you don't want cached on clients. See <link linkend="SAMBA-CH-5">Chapter 5</link>, for more information on opportunistic locks.</para>
+</sect3>
+
+
+
+<sect3 role="" label="B.2.2.5" id="appb-SECT-2.2.5">
+<title>IP packet size (MTU)</title>
+
+
+<para>
+<indexterm id="appb-idx-959756-0"><primary>IP packet size, tuning</primary></indexterm>Networks generally set a limit to the size of an individual transmission or packet This is called the Maximum Segment Size, or if the packet header size is included, the <indexterm id="appb-idx-959757-0"><primary>Maximum Transport Unit (MTU)</primary></indexterm>
+<indexterm id="appb-idx-959757-1"><primary>MTU (Maximum Transport Unit)</primary></indexterm>Maximum Transport Unit (MTU). This MTU is not set by Samba, but Samba needs to use a <literal>max</literal> <literal>xmit</literal> (write size) bigger than the MTU, or throughput will be reduced. This is discussed in further detail in the following note. The MTU is normally preset to 1500 bytes on an Ethernet and 4098 bytes on FDDI. In general, having it too low cuts throughput, and having it too high causes a sudden performance dropoff due to fragmentation and retransmissions.</para>
+
+
+<tip role="ora">
+<para>If you are communicating over a router, some systems will assume the router is a serial link (e.g., a T1) and set the MTU to more or less 536 bytes. Windows 95 makes this mistake, which causes nearby clients to perform well, but clients on the other side of the router to be noticeably slower. If the client makes the opposite error and uses a large MTU on a link which demands a small one, the packets will be broken up into fragments. This slows transfers slightly, and any networking errors will cause multiple fragments to be retransmitted, which slows Samba significantly. Fortunately, you can modify the Windows MTU size to prevent either error. To understand this in more detail, see "The Windows 95 Networking Frequently Asked Questions (FAQ)" at <systemitem role="url">http://www.stanford.edu/~llurch/win95netbugs/faq.html</systemitem>, which explains how to override the Windows MTU and Window Size.</para>
+
+</tip>
+</sect3>
+
+
+
+<sect3 role="" label="B.2.2.6" id="appb-19919">
+<title>The TCP receive window</title>
+
+
+<para>
+<indexterm id="appb-idx-959758-0"><primary>TCP/IP  networking protocol</primary><secondary>receive window, tuning</secondary></indexterm>TCP/IP works by breaking down data into small packets that can be transmitted from one machine to another. When each packet is transmitted, it contains a checksum that allows the receiver to check the packet data for potential errors in transmission. Theoretically, when a packet is received and verified, an acknowledgment packet should be sent back to the sender that essentially says, "Everything arrived intact: please continue."</para>
+
+
+<para>In order to keep things moving, however, TCP accepts a range (window) of packets that allows a sender to keep transmitting without having to wait for an acknowledgment of every single packet. (It can then bundle a group of acknowledgments and transmit them back to the sender at the same time.) In other words, this receive window is the number of bytes that the sender can transmit before it has to stop and wait for a receiver's acknowledgment. Like the MTU, it is automatically set based on the type of connection. Having the window too small causes a lot of unnecessary waiting for acknowledgment messages. Various operating systems set moderate buffer sizes on a per-socket basis to keep one program from hogging all the memory.</para>
+
+
+<para>The buffer sizes are assigned in bytes, such as <literal>SO_SNDBUF=8192</literal> in the <literal>socket</literal> <literal>options</literal> line. Thus, an example <literal>socket</literal> <literal>options</literal> configuration option is:</para>
+
+
+<programlisting>socket options = SO_SNDBUF=8192</programlisting>
+
+
+<para>Normally, one tries to set these socket options higher than the default: 4098 in SunOS 4.1.3 and SVR4, and 8192-16384 in AIX, Solaris, and BSD. 16384 has been suggested as a good starting point: in a non-Samba test mentioned in Stevens' book, it yielded a 40 percent improvement. You'll need to experiment, because performance will fall off again if you set the sizes too high. This is illustrated in <link linkend="appb-34738">Figure 2.1</link>, a test done on a particular Linux system.</para>
+
+
+<figure label="B.1" id="appb-34738">
+<title>SO_SNDBUF size and performance</title>
+
+<graphic width="502" depth="263" fileref="figs/sam.ab01.gif"></graphic>
+</figure>
+
+<para>Setting the socket options <literal>O_SNDBUF</literal> and <literal>SO_RCVBUF</literal> to less than the default is inadvisable. Setting them higher improves performance, up to a network-specific limit. However, once you exceed that limit, performance will abruptly level off.</para>
+</sect3>
+
+
+
+<sect3 role="" label="B.2.2.7" id="appb-SECT-2.2.7">
+<indexterm id="appb-idx-960371-0"><primary>max xmit option</primary></indexterm>
+<title>
+max xmit</title>
+
+
+<para>
+<indexterm id="appb-idx-960373-0"><primary>write size, tuning</primary></indexterm>In Samba, the option that is directly related with the MTU and window size is <literal>max</literal> <literal>xmit</literal>. This option sets the largest block of data Samba will try to write at any one time. It's sometimes known as the <firstterm>write size</firstterm>, although that is not the name of the Samba configuration option.</para>
+
+
+<para>Because the percentage of each block required for overhead falls as the blocks get larger, max xmit is conventionally set as large as possible. It defaults to the protocol's upper limit, which is 64 kilobytes. The smallest value that doesn't cause significant slowdowns is 2048. If it is set low enough, it will limit the largest packet size that Samba will be able to negotiate. This can be used to simulate a small MTU if you need to test an unreliable network connection. However, such a test should not be used in production for reducing the effective MTU.</para>
+</sect3>
+
+
+
+<sect3 role="" label="B.2.2.8" id="appb-SECT-2.2.8">
+<title>read size</title>
+
+
+<para>
+<indexterm id="appb-idx-959760-0"><primary>read size, tuning</primary></indexterm>If <literal>max</literal> <literal>xmit</literal> is commonly called the write size, you'd expect <literal>read</literal> <literal>size</literal> to be the maximum amount of data that Samba would want to read from the client via the network. Actually, it's not. In fact, it's an option to trigger <firstterm>write ahead</firstterm>
+<indexterm id="appb-idx-959764-0"><primary>write ahead, tuning</primary></indexterm>. This means that if Samba gets behind reading from the disk and writing to the network (or vice versa) by the specified amount, it will start overlapping network writes with disk reads (or vice versa).</para>
+
+
+<para>The read size doesn't have a big performance effect on Unix, unless you set its value quite small. At that point, it causes a detectable slowdown. For this reason, it defaults to 2048 and can't be set lower than 1024.</para>
+</sect3>
+
+
+
+<sect3 role="" label="B.2.2.9" id="appb-SECT-2.2.9">
+<title>read prediction </title>
+
+
+<para>
+<indexterm id="appb-idx-959766-0"><primary>read prediction, testing</primary></indexterm>Besides being counterintuitive, this option is also obsolete. It enables Samba to read ahead on files opened read only by the clients. The option is disabled in Samba 2.0 (and late 1.9) Because it interferes with opportunistic locking.</para>
+</sect3>
+</sect2>
+
+
+
+
+
+<sect2 role="" label="B.2.3" id="appb-SECT-2.3">
+<title>Other Samba Options</title>
+
+
+<para>
+<indexterm id="appb-idx-959775-0" class="startofrange"><primary>Samba</primary><secondary>performance tuning</secondary><tertiary>other options for</tertiary></indexterm>
+<indexterm id="appb-idx-959775-1" class="startofrange"><primary>performance tuning</primary><secondary>other options for</secondary></indexterm>
+<indexterm id="appb-idx-959775-2" class="startofrange"><primary>configuring Samba</primary><secondary>performance tuning</secondary><tertiary>other options for</tertiary></indexterm>The following Samba options will affect performance if they're set incorrectly, much like the debug level. They're mentioned here so you will know what to look out for:</para>
+
+
+<variablelist>
+<varlistentry><term>
+<indexterm id="appb-idx-960358-0"><primary>hidden files</primary><secondary>options for</secondary></indexterm><literal>hide files</literal></term>
+<listitem><para>Providing a pattern to identify files hidden by the Windows client <literal>hide</literal> <literal>files</literal> will result in any file matching the pattern being passed to the client with the DOS hidden attribute set. It requires a pattern match per file when listing directories, and slows the server noticeably.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>lpq cache time</literal>
+<indexterm id="appb-idx-960359-0"><primary>lpq cache time option</primary></indexterm></term>
+<listitem><para>If your <literal>lpq</literal> (printer queue contents) command takes a long time to complete, you should increase <literal>lpq</literal> <literal>cache</literal> <literal>time</literal> to a value higher than the actual time required for <literal>lpq</literal> to execute, so as to keep Samba from starting a new query when one's already running. The default is 10 seconds, which is reasonable.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>strict locking</literal>
+<indexterm id="appb-idx-960360-0"><primary>strict locking option</primary></indexterm></term>
+<listitem><para>Setting the <literal>strict</literal> <literal>locking</literal> option causes Samba to check for locks on every access, not just when asked to by the client. The option is primarily a bug-avoidance feature, and can prevent ill-behaved DOS and Windows applications from corrupting shared files. However, it is slow and should typically be avoided.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>strict sync</literal>
+<indexterm id="appb-idx-960361-0"><primary>strict sync option</primary></indexterm></term>
+<listitem><para>Setting <literal>strict</literal> <literal>sync</literal> will cause Samba to write each packet to disk and wait for the write to complete whenever the client sets the sync bit in a packet. Windows 98 Explorer sets the bit in all packets transmitted, so if you turn this on, anyone with Windows 98 will think Samba servers are horribly slow.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>sync always</literal>
+<indexterm id="appb-idx-960362-0"><primary>sync always option</primary></indexterm></term>
+<listitem><para>Setting <literal>sync</literal> <literal>always</literal> causes Samba to flush every write to disk. This is good if your server crashes constantly, but the performance costs are immense. SMB servers normally use oplocks and automatic reconnection to avoid the ill effects of crashes, so setting this option is not normally necessary.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term>
+<indexterm id="appb-idx-960363-0"><primary>wide links option</primary></indexterm><literal>wide links</literal></term>
+<listitem><para>Turning off <literal>wide</literal> <literal>links</literal> prevents Samba from following symbolic links in one file share to files that are not in the share. It is turned on by default, since following links in Unix is not a security problem. Turning it off requires extra processing on every file open. If you do turn off wide links, be sure to turn on <literal>getwd</literal> <literal>cache</literal> to cache some of the required data.</para>
+
+
+<para>There is also a <literal>follow</literal> <literal>symlinks</literal> option that can be turned off to prevent following any symbolic links at all. However, this option does not pose a performance problem.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term>
+<indexterm id="appb-idx-960364-0"><primary>getwd cache option</primary></indexterm><literal>getwd cache</literal></term>
+<listitem><para>This option caches the path to the current directory, avoiding long tree-walks to discover it. It's a nice performance improvement on a printer server or if you've turned off <literal>wide</literal> <literal>links</literal>.</para></listitem>
+</varlistentry>
+</variablelist>
+</sect2>
+
+
+
+
+
+<sect2 role="" label="B.2.4" id="appb-SECT-2.4">
+<title>Our Recommendations </title>
+
+
+<para>
+<indexterm id="appb-idx-959782-0"><primary>performance tuning</primary><secondary>recommended enhancements</secondary></indexterm>Here's an <filename>smb.conf</filename> file that incorporates the recommended performance enhancements so far. Comments have been added on the right side.</para>
+
+
+<programlisting>[global]
+       log level = 1                      # Default is 0
+       socket options = TCP_NODELAY IPTOS_LOWDELAY
+       read raw = yes                     # Default
+       write raw = yes                    # Default
+       oplocks = yes                      # Default
+       max xmit = 65535                   # Default
+       dead time = 15                     # Default is 0
+       getwd cache = yes
+       lpq cache = 30
+[okplace]
+       veto oplock files = this/that/theotherfile
+[badplace]
+       oplocks = no</programlisting>
+</sect2>
+</sect1>
+
+
+
+
+
+
+
+
+
+<sect1 role="" label="B.3" id="appb-22511">
+<title>Sizing Samba Servers</title>
+
+
+<para>
+<indexterm id="appb-idx-959783-0" class="startofrange"><primary>Samba server</primary><secondary>sizing</secondary></indexterm>
+<indexterm id="appb-idx-959783-1" class="startofrange"><primary>sizing Samba servers</primary></indexterm>Sizing is a way to prevent bottlenecks before they occur. The preferred way to do this is to know how many requests per second or how many kilobytes per second the clients will need, and ensure that all the components of the server provide at least that many.</para>
+
+
+<sect2 role="" label="B.3.1" id="appb-SECT-3.1">
+<title>The Bottlenecks</title>
+
+
+<para>
+<indexterm id="appb-idx-959791-0" class="startofrange"><primary>bottlenecks</primary></indexterm>The <indexterm id="appb-idx-959799-0"><primary>bottlenecks</primary><secondary>types of</secondary></indexterm>three primary bottlenecks you should worry about are CPU, disk I/O, and the network. For most machines, CPUs are rarely a bottleneck. A single Sun SPARC 10 CPU can start (and complete) between 700 and 800 I/O operations a second, giving approximately 5,600 to 6,400KB/s of throughput when the data averages around 8KBs (a common buffer size). A single Intel Pentium 133 can do less only because of somewhat slower cache and bus interfaces, not due to lack of CPU power. Purpose-designed Pentium servers, like some Compaq servers, will be able to start 700 operations per CPUs, on up to four CPUs.</para>
+
+
+<para>Too little memory, on the other hand, can easily be a bottleneck; each Samba process will use between 600 and 800KB on Intel Linux, and more on RISC CPUs. Having less will cause an increase in virtual memory paging and therefore a performance hit. On Solaris, where it has been measured, <emphasis>smbd</emphasis> will use 2.6 MB for program and shared libraries, plus 768KB for each connected client. <emphasis>nmbd</emphasis> occupies 2.1 MB, plus 496KB extra for its (single) auxiliary process.</para>
+
+
+<para>Hard disks will always bottleneck at a specific number of I/O operations per second: for example, each 7200 RPM SCSI disk is capable of performing 70 operations per second, for a throughput of 560KB/s; a 4800 RPM disk will perform fewer than 50, for a throughput of 360KB/s. A single IDE disk will do still fewer. If the disks are independent, or striped together in a RAID 1 configuration, they will each peak out at 400 to 560KB/s and will scale linearly as you add more. Note that this is true only of RAID 1. RAID levels other than 1 (striping) add extra overhead.</para>
+
+
+<para>Ethernets (and other networks) are obvious bottleneck: a 10 Mb/s (mega<emphasis>bits</emphasis>/second) Ethernet will handle around 1100KB/s (kilo<emphasis>bytes</emphasis>/s) using 1500-byte packets A 100 Mb/s Fast Ethernet will bottleneck below 65,000KB/s with the same packet size. FDDI, at 155 Mb/s will top out at approximately 6,250KB/s, but gives good service at even 100 percent load and transmits much larger packets (4KB).</para>
+
+
+<para>ATM should be much better, but as of the writing of this book it was too new to live up to its potential; it seems to deliver around 7,125 Mb/s using 9KB packets.</para>
+
+
+<para>Of course, there can be other bottlenecks: more than one IDE disk per controller is not good, as are more than three 3600 SCSI-I disks per slow/narrow controller, or more than three 7200 SCSI-II disks per SCSI-II fast/wide controller. RAID 5 is also slow, as it requires twice as many writes as independent disks or RAID 1.</para>
+
+
+<para>After the second set of Ethernets and the second disk controller, start worrying about bus bandwidth, especially if you are using ISA/EISA buses.</para>
+</sect2>
+
+
+
+
+
+<sect2 role="" label="B.3.2" id="appb-SECT-3.2">
+<title>Reducing Bottlenecks </title>
+
+
+<para>
+<indexterm id="appb-idx-959800-0" class="startofrange"><primary>bottlenecks</primary><secondary>reducing</secondary></indexterm>From the information above we can work out a model that will tell us the maximum capability of a given machine. The data is mostly taken from <indexterm id="appb-idx-959815-0"><primary>Wong, Brian</primary></indexterm>
+<indexterm id="appb-idx-959815-1"><primary>resources for further information</primary><secondary>Solaris servers</secondary></indexterm>Brian Wong's <citetitle>Configuration and Capacity Planning for Solaris Servers</citetitle>,<citetitle>
+<footnote label="1" id="appb-pgfId-951214">
+
+
+<para>See Wong. Brian L, <emphasis>Configuration and Capacity Planning for Solaris Servers</emphasis>, Englewood Cliffs, NJ (Sun/Prentice-Hall), 1997, ISBN 0-13-349952-9.</para>
+
+
+</footnote></citetitle> so there is a slight Sun bias to our examples.</para>
+
+
+<para>A word of warning: this is not a complete model. Don't assume that this model will predict every bottleneck or even be within 10 percent in its estimates. A model to predict performance instead of one to warn you of bottlenecks would be much more complex and would contain rules like "not more than three disks per SCSI chain". (A good book on real models is Raj Jain's <citetitle>The Art of Computer Systems Performance Analysis</citetitle>.<footnote label="2" id="appb-pgfId-951230">
+
+
+<para>See Jain, Raj, <emphasis>The Art of Computer Systems Performance Analysis</emphasis>, New York, NY (John Wiley and Sons), 1991, ISBN 0-47-150336-3.</para>
+
+
+</footnote>) With that warning, we present the system in <link linkend="appb-98866">Figure 2.2</link>.</para>
+
+
+<figure label="B.2" id="appb-98866">
+<title>Data flow through a Samba server, with possible bottlenecks</title>
+
+<graphic width="502" depth="185" fileref="figs/sam.ab02.gif"></graphic>
+</figure>
+
+<para>The flow of data should be obvious. For example, on a read, data flows from the disk, across the bus, through or past the CPU, and to the network interface card (NIC). It is then broken up into packets and sent across the network. Our strategy here is to follow the data through the system and see what bottlenecks will choke it off. Believe it or not, it's rather easy to make a set of tables that list the maximum performance of common disks, CPUs, and network cards on a system. So that's exactly what we're going to do.</para>
+
+
+<para>Let's take a concrete example: a Linux Pentium 133 MHz machine with a single 7200 RPM data disk, a PCI bus, and a 10-Mb/s Ethernet card. This is a perfectly reasonable server. We start with <link linkend="appb-78077">Table 2.2</link>, which describes the hard drive&mdash;the first potential bottleneck in the system.</para>
+
+
+<table label="B.2" id="appb-78077">
+<title>Disk Throughput </title>
+
+<tgroup cols="3">
+<colspec colnum="1" colname="col1"/>
+<colspec colnum="2" colname="col2"/>
+<colspec colnum="3" colname="col3"/>
+<thead>
+<row>
+
+<entry colname="col1"><para>Disk RPM</para></entry>
+
+<entry colname="col2"><para>I/O Operations/second</para></entry>
+
+<entry colname="col3"><para>KB/second</para></entry>
+
+</row>
+
+</thead>
+
+<tbody>
+<row>
+
+<entry colname="col1"><para>7200</para></entry>
+
+<entry colname="col2"><para>70</para></entry>
+
+<entry colname="col3"><para>560</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para>4800</para></entry>
+
+<entry colname="col2"><para>60</para></entry>
+
+<entry colname="col3"><para>480</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para>3600</para></entry>
+
+<entry colname="col2"><para>40</para></entry>
+
+<entry colname="col3"><para>320</para></entry>
+
+</row>
+
+</tbody>
+</tgroup>
+</table>
+
+
+<para>Disk throughput is the number of kilobytes of data that a disk can transfer per second. It is computed from the number of 8KB I/O operations per second a disk can perform, which in turn is strongly influenced by disk RPM and bit density. In effect, the question is: how much data can pass below the drive heads in one second? With a single 7200 RPM disk, the example server will give us 70 I/O operations per second at roughly 560KB/s.</para>
+
+
+<para>The second possible bottleneck is the CPU. The data doesn't actually flow through the CPU on any modern machines, so we have to compute throughput somewhat indirectly.</para>
+
+
+<para>The CPU has to issue I/O requests and handle the interrupts coming back, then transfer the data across the bus to the network card. From much past experimentation, we know that the overhead that dominates the processing is consistently in the filesystem code, so we can ignore the other software being run. We compute the throughput by just multiplying the (measured) number of file I/O operations per second that a CPU can process by the same 8K average request size. This gives us the results shown in <link linkend="appb-42029">Table 2.3</link>.</para>
+
+
+<table label="B.3" id="appb-42029">
+<title>CPU Throughput </title>
+
+<tgroup cols="3">
+<colspec colnum="1" colname="col1"/>
+<colspec colnum="2" colname="col2"/>
+<colspec colnum="3" colname="col3"/>
+<thead>
+<row>
+
+<entry colname="col1"><para>CPU</para></entry>
+
+<entry colname="col2"><para>I/O Operations/second</para></entry>
+
+<entry colname="col3"><para>KB/second</para></entry>
+
+</row>
+
+</thead>
+
+<tbody>
+<row>
+
+<entry colname="col1"><para>Intel Pentium 133</para></entry>
+
+<entry colname="col2"><para>700</para></entry>
+
+<entry colname="col3"><para>5,600</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para>Dual Pentium 133</para></entry>
+
+<entry colname="col2"><para>1,200</para></entry>
+
+<entry colname="col3"><para>9,600</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para>Sun SPARC II</para></entry>
+
+<entry colname="col2"><para>660</para></entry>
+
+<entry colname="col3"><para>5,280</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para>Sun SPARC 10</para></entry>
+
+<entry colname="col2"><para>750</para></entry>
+
+<entry colname="col3"><para>6,000</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para>Sun Ultra 200</para></entry>
+
+<entry colname="col2"><para>2,650</para></entry>
+
+<entry colname="col3"><para>21,200</para></entry>
+</row>
+
+</tbody>
+</tgroup>
+</table>
+
+
+<para>Now we put the disk and the CPU together: in the Linux example, we have a single 7200 RPM disk, which can give us 560KB/s, and a CPU capable of starting 700 I/O operations, which could give us 5600KB/s. So far, as you would expect, our bottleneck is clearly going to be the hard disk.</para>
+
+
+<para>The last potential bottleneck is the network. If the network speed is below 100 Mb/s, the bottleneck will be the network speed. After that, the design of the network card is more likely to slow us down. <link linkend="appb-67604">Table 2.4</link> shows us the average throughput of many types of data networks. Although network speed is conventionally measured in bits per second, <link linkend="appb-67604">Table 2.4</link> lists bytes per second to make comparison with the disk and CPU (<link linkend="appb-78077">Table 2.2</link> and <link linkend="appb-42029">Table 2.3</link>) easier.</para>
+
+
+
+<table label="B.4" id="appb-67604">
+<title>Network Throughput </title>
+
+<tgroup cols="2">
+<colspec colnum="1" colname="col1"/>
+<colspec colnum="2" colname="col2"/>
+<thead>
+<row>
+
+<entry colname="col1"><para>Network Type</para></entry>
+
+<entry colname="col2"><para>KB/second</para></entry>
+
+</row>
+
+</thead>
+
+<tbody>
+<row>
+
+<entry colname="col1"><para> ISDN</para></entry>
+
+<entry colname="col2"><para> 16</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para> T1</para></entry>
+
+<entry colname="col2"><para> 197</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para> Ethernet 10m</para></entry>
+
+<entry colname="col2"><para> 1,113</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para> Token ring</para></entry>
+
+<entry colname="col2"><para> 1,500</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para> FDDI</para></entry>
+
+<entry colname="col2"><para> 6,250</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para> Ethernet 100m</para></entry>
+
+<entry colname="col2"><para> 6,500<footnote label="3" id="appb-pgfId-960131">
+
+
+<para>These will increase. For example, Crays, Sun Ultras, and DEC/Compaq Alphas already have bettered these figures.</para>
+
+
+</footnote></para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para> ATM 155</para></entry>
+
+<entry colname="col2"><para> 7,125a</para></entry>
+
+</row>
+
+</tbody>
+</tgroup>
+</table>
+
+
+<para>In the running example, we have a bottleneck at 560KB/s due to the disk. <link linkend="appb-67604">Table 2.4</link> shows us that a standard 10 megabit per second Ethernet (1,113KB/s) is far faster than the disk. Therefore, the hard disk is still the limiting factor. (This scenario, by the way, is very common.) Just by looking at the tables, we can predict that small servers won't have CPU problems, and that large ones with multiple CPUs will support striping and multiple Ethernets long before they start running out of CPU power. This, in fact, is exactly what happens.</para>
+</sect2>
+
+
+
+
+
+<sect2 role="" label="B.3.3" id="appb-SECT-3.3">
+<title>Practical Examples</title>
+
+
+<para>An example from <emphasis>Configuration and Capacity Planning for Solaris Servers</emphasis> (Wong) shows that a dual-processor SPARCstation 20/712 with four Ethernets and six 2.1 GB disks will spend all its time waiting for the disks to return some data. If it was loaded with disks (Brian Wong suggests as many as 34 of them), it would still be held below 1,200KB/s by the Ethernet cards. To get the performance the machine is capable of, we would need to configure multiple Ethernets, 100 Mbps Fast Ethernet, or 155 Mbps FDDI.</para>
+
+
+<para>The progression you'd work through to get that conclusion looks something like <link linkend="appb-26613">Table 2.5</link>.</para>
+
+
+<table label="B.5" id="appb-26613">
+<title>Tuning a Medium-Sized Server </title>
+
+<tgroup cols="5">
+<colspec colnum="1" colname="col1"/>
+<colspec colnum="2" colname="col2"/>
+<colspec colnum="3" colname="col3"/>
+<colspec colnum="4" colname="col4"/>
+<colspec colnum="5" colname="col5"/>
+<thead>
+<row>
+
+<entry colname="col1"><para>Machine</para></entry>
+
+<entry colname="col2"><para>Disk Throughput</para></entry>
+
+<entry colname="col3"><para>CPU Throughput</para></entry>
+
+<entry colname="col4"><para>Network Throughput</para></entry>
+
+<entry colname="col5"><para>Actual Throughput</para></entry>
+
+</row>
+
+</thead>
+
+<tbody>
+<row>
+
+<entry colname="col1"><para>Dual SPARC 10, 1 disk</para></entry>
+
+<entry colname="col2"><para>560</para></entry>
+
+<entry colname="col3"><para>6000</para></entry>
+
+<entry colname="col4"><para>1,113</para></entry>
+
+<entry colname="col5"><para>560</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para>Add 5 more disks</para></entry>
+
+<entry colname="col2"><para>3,360</para></entry>
+
+<entry colname="col3"><para>6000</para></entry>
+
+<entry colname="col4"><para>1,113</para></entry>
+
+<entry colname="col5"><para>1,113</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para>Add 3 more Ethernets</para></entry>
+
+<entry colname="col2"><para>3,360</para></entry>
+
+<entry colname="col3"><para>16000</para></entry>
+
+<entry colname="col4"><para>4,452</para></entry>
+
+<entry colname="col5"><para>3,360</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para>Change to using a 20-disk array</para></entry>
+
+<entry colname="col2"><para>11,200</para></entry>
+
+<entry colname="col3"><para>6000</para></entry>
+
+<entry colname="col4"><para>4,452</para></entry>
+
+<entry colname="col5"><para>4,452</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para>Use dual 100 Mbps ether</para></entry>
+
+<entry colname="col2"><para>11,200</para></entry>
+
+<entry colname="col3"><para>6000</para></entry>
+
+<entry colname="col4"><para>13,000</para></entry>
+
+<entry colname="col5"><para>11,200</para></entry>
+
+</row>
+
+</tbody>
+</tgroup>
+</table>
+
+
+<para>Initially, the bottleneck is the disk with only 560 MB/s of throughput available. Our solution is to add five more disks. This gives us more throughput on the disks than on the Ethernet, so then the Ethernet becomes the problem. Consequently, as we continue to expand, we go back and forth several times between these two. As you add disks, CPUs, and network cards, the bottleneck moves. Essentially, the strategy is to add more equipment to try to avoid each bottleneck until you reach your target performance, or (unfortunately) you either can't add any more or run out of money.</para>
+
+
+<para>Our experience bears out this kind of calculation; a large SPARC 10 file server that one author maintained was quite capable of saturating an Ethernet plus about a third of an FDDI ring when using two processors. It did nearly as well with a single processor, albeit with a fast operating system and judicious over-optimization.</para>
+
+
+<para>The same process applies to other brands of purpose-designed servers. We found the same rules applied to DECstation 2100s as to the newest Alphas or Compaqs, old MIPS 3350s and new SGI O2s. In general, a machine offering multi-CPU server configurations will have enough bus bandwidth and CPU power to reliably bottleneck on hard disk I/O when doing file service. As one would hope, considering the cost!</para>
+</sect2>
+
+
+
+
+
+<sect2 role="" label="B.3.4" id="appb-SECT-3.4">
+<title>How Many Clients can Samba Handle?</title>
+
+
+<para>Well, that depends entirely on how much data each user consumes. A small server with three SCSI-1 disks, which can serve about 960KB/s of data, will support between 36 and 80 clients in an ordinary office environment where they are typically loading, and saving equal-sized spreadsheets or word processing documents (36 clients  &times;  2.3 transfers/second  &times;  12k file 1 MB/s).</para>
+
+
+<para>On the same server in a development environment with programmers running a fairly heavy edit-compile-test cycle, one can easily see requests for 1 MB/s, limiting the server to 25 or fewer clients. To take this a bit further, an imaging system whose clients each require 10 MB/s will perform poorly no matter how big a server is if they're all on a 10 MB/s Ethernet. And so on.</para>
+
+
+<para>If you don't know how much data an average user consumes, you can size your Samba servers by patterning them after existing NFS, Netware, or LAN Manager servers. You should be especially careful that the new servers have as many disks and disk controllers as the ones you've copied. This technique is appropriately called "punt and hope."</para>
+
+
+<para>If you know how many clients an existing server can support, you're in <emphasis>much</emphasis> better shape. You can analyze the server to see what its maximum capacity is and use that to estimate how much data they must be demanding. For example, if serving home directories to 30 PCs from a PC server with two IDE disks is just too slow, and 25 clients is about right, then you can safely assume you're bottlenecked on Ethernet I/O (approximately 375KB) rather than disk I/O (up to 640KB). If so, you can then conclude that the clients are demanding 15 (that is, 375/25)KB/s on average.</para>
+
+
+<para>Supporting a new lab of 75 clients will mean you'll need 1,125KB/s, spread over multiple (preferably three) Ethernets, and a server with at least three 7200 RPM disks and a CPU capable of keeping up. These requirements can be met by a Pentium 133 or above with the bus architecture to drive them all at full speed (e.g., PCI).</para>
+
+
+<para>A custom-built PC server or a multiprocessor-capable workstation like a Sun Sparc, a DEC/Compaq Alpha, an SGI, or the like, would scale up easier, as would a machine with fast Ethernet, plus a switching hub to drive the client machines on individual 10 MB/s Ethernets.</para>
+
+
+<sect3 role="" label="B.3.4.1" id="appb-SECT-3.4.1">
+<title>How to guess</title>
+
+
+<para>If you have no idea at all what you need, the best thing is to try to guess based on someone else's experience. Each individual client machine can average from less than 1 I/O per second (normal PC or Mac used for sales/accounting) to as much as 4 (fast workstation using large applications). A fast workstation running a compiler can happily average 3-4 MB/s in data transfer requests, and an imaging system can demand even more.</para>
+
+
+<para>Our recommendation? Spy on someone with a similar configuration and try to estimate their bandwidth requirements from their bottlenecks and the volume of the screams from their users. We also recommend Brian Wong's <citetitle>Configuration and Capacity Planning for Solaris Servers</citetitle>. While he uses Sun Solaris foremost in his examples, his bottlenecks are disks and network cards, which are common among all the major vendors. His tables for FTP servers also come very close to what we calculated for Samba servers, and make a good starting point.<indexterm id="appb-idx-959809-0" class="endofrange" startref="appb-idx-959800-0"/></para>
+</sect3>
+</sect2>
+
+
+
+
+
+<sect2 role="" label="B.3.5" id="appb-90359">
+<title>Measurement Forms</title>
+
+
+<para>
+<indexterm id="appb-idx-959816-0"><primary>measurement forms</primary></indexterm><link linkend="appb-82208">Table 2.6</link> and <link linkend="appb-34846">Table 2.7</link> are empty tables that you can use for copying and recording data. The bottleneck calculation in the previous example can be done in a spreadsheet, or manually with <link linkend="appb-51003">Table 2.8</link>. If Samba is as good as or better than FTP, and if there aren't any individual test runs that are much different from the average, you have a well-configured system. If loopback isn't much faster than anything else, you have a problem with your TCP/IP software. If both FTP and Samba are slow, you probably have a problem with your networking: a faulty Ethernet card will produce this, as will accidentally setting an Ethernet card to half-duplex when it's not connected to a half-duplex hub. Remember that CPU and disk speeds are commonly measured in bytes, network speeds in bits.</para>
+
+
+<para>We've included columns for both bytes and bits in the tables. In the last column, we compare results to 10 Mb/s because that's the speed of a traditional Ethernet.</para>
+
+
+<table label="B.6" id="appb-82208">
+<title>Ethernet Interface to Same Host: FTP </title>
+
+<tgroup cols="6">
+<colspec colnum="1" colname="col1"/>
+<colspec colnum="2" colname="col2"/>
+<colspec colnum="3" colname="col3"/>
+<colspec colnum="4" colname="col4"/>
+<colspec colnum="5" colname="col5"/>
+<colspec colnum="6" colname="col6"/>
+<thead>
+<row>
+
+<entry colname="col1"><para>Run No</para></entry>
+
+<entry colname="col2"><para>Size in Bytes</para></entry>
+
+<entry colname="col3"><para>Time (sec)</para></entry>
+
+<entry colname="col4"><para>Bytes/sec</para></entry>
+
+<entry colname="col5"><para>Bits/sec</para></entry>
+
+<entry colname="col6"><para>% of 10 Mb/s</para></entry>
+
+</row>
+
+</thead>
+
+<tbody>
+<row>
+
+<entry colname="col1"><para>1</para></entry>
+
+<entry colname="col2"></entry>
+
+<entry colname="col3"></entry>
+
+<entry colname="col4"></entry>
+
+<entry colname="col5"></entry>
+
+<entry colname="col6"></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para>2</para></entry>
+
+<entry colname="col2"></entry>
+
+<entry colname="col3"></entry>
+
+<entry colname="col4"></entry>
+
+<entry colname="col5"></entry>
+
+<entry colname="col6"></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para>3</para></entry>
+
+<entry colname="col2"></entry>
+
+<entry colname="col3"></entry>
+
+<entry colname="col4"></entry>
+
+<entry colname="col5"></entry>
+
+<entry colname="col6"></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para>4</para></entry>
+
+<entry colname="col2"></entry>
+
+<entry colname="col3"></entry>
+
+<entry colname="col4"></entry>
+
+<entry colname="col5"></entry>
+
+<entry colname="col6"></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para>5</para></entry>
+
+<entry colname="col2"></entry>
+
+<entry colname="col3"></entry>
+
+<entry colname="col4"></entry>
+
+<entry colname="col5"></entry>
+
+<entry colname="col6"></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para>Average:</para></entry>
+
+<entry colname="col2"></entry>
+
+<entry colname="col3"></entry>
+
+<entry colname="col4"></entry>
+
+<entry colname="col5"></entry>
+
+<entry colname="col6"></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para>Deviation:</para></entry>
+
+<entry colname="col2"></entry>
+
+<entry colname="col3"></entry>
+
+<entry colname="col4"></entry>
+
+<entry colname="col5"></entry>
+
+<entry colname="col6"></entry>
+
+</row>
+
+</tbody>
+</tgroup>
+</table>
+
+
+<table label="B.7" id="appb-34846">
+<title>Ethernet Interface to Same Host: FTP </title>
+
+<tgroup cols="6">
+<colspec colnum="1" colname="col1"/>
+<colspec colnum="2" colname="col2"/>
+<colspec colnum="3" colname="col3"/>
+<colspec colnum="4" colname="col4"/>
+<colspec colnum="5" colname="col5"/>
+<colspec colnum="6" colname="col6"/>
+<thead>
+<row>
+
+<entry colname="col1"><para>Run No</para></entry>
+
+<entry colname="col2"><para>Size in Bytes</para></entry>
+
+<entry colname="col3"><para>Time, sec</para></entry>
+
+<entry colname="col4"><para>Bytes/sec</para></entry>
+
+<entry colname="col5"><para>Bits/sec</para></entry>
+
+<entry colname="col6"><para>% of 10 Mb/s</para></entry>
+
+</row>
+
+</thead>
+
+<tbody>
+<row>
+
+<entry colname="col1"><para>1</para></entry>
+
+<entry colname="col2"></entry>
+
+<entry colname="col3"></entry>
+
+<entry colname="col4"></entry>
+
+<entry colname="col5"></entry>
+
+<entry colname="col6"></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para>2</para></entry>
+
+<entry colname="col2"></entry>
+
+<entry colname="col3"></entry>
+
+<entry colname="col4"></entry>
+
+<entry colname="col5"></entry>
+
+<entry colname="col6"></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para>3</para></entry>
+
+<entry colname="col2"></entry>
+
+<entry colname="col3"></entry>
+
+<entry colname="col4"></entry>
+
+<entry colname="col5"></entry>
+
+<entry colname="col6"></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para>4</para></entry>
+
+<entry colname="col2"></entry>
+
+<entry colname="col3"></entry>
+
+<entry colname="col4"></entry>
+
+<entry colname="col5"></entry>
+
+<entry colname="col6"></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para>5</para></entry>
+
+<entry colname="col2"></entry>
+
+<entry colname="col3"></entry>
+
+<entry colname="col4"></entry>
+
+<entry colname="col5"></entry>
+
+<entry colname="col6"></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para>Average:</para></entry>
+
+<entry colname="col2"></entry>
+
+<entry colname="col3"></entry>
+
+<entry colname="col4"></entry>
+
+<entry colname="col5"></entry>
+
+<entry colname="col6"></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para>Deviation:</para></entry>
+
+<entry colname="col2"></entry>
+
+<entry colname="col3"></entry>
+
+<entry colname="col4"></entry>
+
+<entry colname="col5"></entry>
+
+<entry colname="col6"></entry>
+
+</row>
+
+</tbody>
+</tgroup>
+</table>
+
+
+<table label="B.8" id="appb-51003">
+<title>Bottleneck Calculation Table</title>
+
+<tgroup cols="7">
+<colspec colnum="1" colname="col1"/>
+<colspec colnum="2" colname="col2"/>
+<colspec colnum="3" colname="col3"/>
+<colspec colnum="4" colname="col4"/>
+<colspec colnum="5" colname="col5"/>
+<colspec colnum="6" colname="col6"/>
+<colspec colnum="7" colname="col7"/>
+<thead>
+<row>
+
+<entry colname="col1"><para>CPU</para></entry>
+
+<entry colname="col2"><para>Throughput</para></entry>
+
+<entry colname="col3"><para>of Disks</para></entry>
+
+<entry colname="col4"><para>Disk Throughput</para></entry>
+
+<entry colname="col5"><para>Number of Networks</para></entry>
+
+<entry colname="col6"><para>Network Throughput</para></entry>
+
+<entry colname="col7"><para>Total Throughput</para></entry>
+
+</row>
+
+</thead>
+
+<tbody>
+<row>
+
+<entry colname="col1"></entry>
+
+<entry colname="col2"></entry>
+
+<entry colname="col3"></entry>
+
+<entry colname="col4"></entry>
+
+<entry colname="col5"></entry>
+
+<entry colname="col6"></entry>
+
+<entry colname="col7"></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"></entry>
+
+<entry colname="col2"></entry>
+
+<entry colname="col3"></entry>
+
+<entry colname="col4"></entry>
+
+<entry colname="col5"></entry>
+
+<entry colname="col6"></entry>
+
+<entry colname="col7"></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"></entry>
+
+<entry colname="col2"></entry>
+
+<entry colname="col3"></entry>
+
+<entry colname="col4"></entry>
+
+<entry colname="col5"></entry>
+
+<entry colname="col6"></entry>
+
+<entry colname="col7"></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"></entry>
+
+<entry colname="col2"></entry>
+
+<entry colname="col3"></entry>
+
+<entry colname="col4"></entry>
+
+<entry colname="col5"></entry>
+
+<entry colname="col6"></entry>
+
+<entry colname="col7"></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"></entry>
+
+<entry colname="col2"></entry>
+
+<entry colname="col3"></entry>
+
+<entry colname="col4"></entry>
+
+<entry colname="col5"></entry>
+
+<entry colname="col6"></entry>
+
+<entry colname="col7"></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"></entry>
+
+<entry colname="col2"></entry>
+
+<entry colname="col3"></entry>
+
+<entry colname="col4"></entry>
+
+<entry colname="col5"></entry>
+
+<entry colname="col6"></entry>
+
+<entry colname="col7"></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"></entry>
+
+<entry colname="col2"></entry>
+
+<entry colname="col3"></entry>
+
+<entry colname="col4"></entry>
+
+<entry colname="col5"></entry>
+
+<entry colname="col6"></entry>
+
+<entry colname="col7"></entry>
+
+</row>
+
+</tbody>
+</tgroup>
+</table>
+
+
+<para>In <link linkend="appb-51003">Table 2.8</link>:</para>
+
+
+<itemizedlist>
+
+<listitem><para>CPU throughput = (KB/second from <link linkend="ch06-89804">Figure 6.5</link>)  &times;  (number of CPUs)</para></listitem>
+
+<listitem><para>Disk throughput = (KB/second from <link linkend="ch06-48609">Figure 6.4</link>)  &times;  (number of disks)</para></listitem>
+
+<listitem><para>Network throughput = (KB/second from <link linkend="ch06-71393">Figure 6.6</link>)  &times;  (number of networks)</para></listitem>
+
+<listitem><para>Total throughput = min (Disk, CPU, and Network throughput)</para></listitem>
+
+</itemizedlist>
+
+<para>A typical test, in this case for an FTP <literal>get</literal>, would be entered as in <link linkend="appb-37370">Table 2.9</link></para>
+
+
+<table label="B.9" id="appb-37370">
+<title>Ethernet Interface to Same Host: FTP </title>
+
+<tgroup cols="6">
+<colspec colnum="1" colname="col1"/>
+<colspec colnum="2" colname="col2"/>
+<colspec colnum="3" colname="col3"/>
+<colspec colnum="4" colname="col4"/>
+<colspec colnum="5" colname="col5"/>
+<colspec colnum="6" colname="col6"/>
+<thead>
+<row>
+
+<entry colname="col1"><para>Run No</para></entry>
+
+<entry colname="col2"><para>Size in Bytes</para></entry>
+
+<entry colname="col3"><para>Time, sec</para></entry>
+
+<entry colname="col4"><para>Bytes/sec</para></entry>
+
+<entry colname="col5"><para>Bits/sec</para></entry>
+
+<entry colname="col6"><para>% of 10 Mb/s</para></entry>
+
+</row>
+
+</thead>
+
+<tbody>
+<row>
+
+<entry colname="col1"><para>1</para></entry>
+
+<entry colname="col2"><para>1812898</para></entry>
+
+<entry colname="col3"><para>2.3</para></entry>
+
+<entry colname="col4"><para>761580</para></entry>
+
+<entry colname="col5"></entry>
+
+<entry colname="col6"></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para>2</para></entry>
+
+<entry colname="col2"></entry>
+
+<entry colname="col3"><para>2.3</para></entry>
+
+<entry colname="col4"><para>767820</para></entry>
+
+<entry colname="col5"></entry>
+
+<entry colname="col6"></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para>3</para></entry>
+
+<entry colname="col2"></entry>
+
+<entry colname="col3"><para>2.4</para></entry>
+
+<entry colname="col4"><para>747420</para></entry>
+
+<entry colname="col5"></entry>
+
+<entry colname="col6"></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para>4</para></entry>
+
+<entry colname="col2"></entry>
+
+<entry colname="col3"><para>2.3</para></entry>
+
+<entry colname="col4"><para>760020</para></entry>
+
+<entry colname="col5"></entry>
+
+<entry colname="col6"></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para>5</para></entry>
+
+<entry colname="col2"></entry>
+
+<entry colname="col3"><para>2.3</para></entry>
+
+<entry colname="col4"><para>772700</para></entry>
+
+<entry colname="col5"></entry>
+
+<entry colname="col6"></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para>Average:</para></entry>
+
+<entry colname="col2"></entry>
+
+<entry colname="col3"><para>2.32</para></entry>
+
+<entry colname="col4"><para>777310</para></entry>
+
+<entry colname="col5"><para>6218480</para></entry>
+
+<entry colname="col6"><para>62</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para>Deviation:</para></entry>
+
+<entry colname="col2"></entry>
+
+<entry colname="col3"><para>0.04</para></entry>
+
+<entry colname="col4"></entry>
+
+<entry colname="col5"></entry>
+
+<entry colname="col6"></entry>
+
+</row>
+
+</tbody>
+</tgroup>
+</table>
+
+
+<para>The Sparc example we used earlier would look like <link linkend="SAMBA-AP-B-TBL-10">Table 2.10</link>.</para>
+
+
+<table label="B.10" id="SAMBA-AP-B-TBL-10">
+<title>Sparc 20 Example, Redux</title>
+
+<tgroup cols="7">
+<colspec colnum="1" colname="col1"/>
+<colspec colnum="2" colname="col2"/>
+<colspec colnum="3" colname="col3"/>
+<colspec colnum="4" colname="col4"/>
+<colspec colnum="5" colname="col5"/>
+<colspec colnum="6" colname="col6"/>
+<colspec colnum="7" colname="col7"/>
+<thead>
+<row>
+
+<entry colname="col1"><para>CPU</para></entry>
+
+<entry colname="col2"><para>CPU Throughput</para></entry>
+
+<entry colname="col3"><para>Number of Disks</para></entry>
+
+<entry colname="col4"><para>Disk Throughput</para></entry>
+
+<entry colname="col5"><para>Number of Networks</para></entry>
+
+<entry colname="col6"><para>Network Throughput</para></entry>
+
+<entry colname="col7"><para>Total Throughput</para></entry>
+
+</row>
+
+</thead>
+
+<tbody>
+<row>
+
+<entry colname="col1"><para>2</para></entry>
+
+<entry colname="col2"><para>6,000</para></entry>
+
+<entry colname="col3"><para>1</para></entry>
+
+<entry colname="col4"><para>560</para></entry>
+
+<entry colname="col5"><para>1 10base2</para></entry>
+
+<entry colname="col6"><para>1,113</para></entry>
+
+<entry colname="col7"><para>560</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para>2</para></entry>
+
+<entry colname="col2"><para>6,000</para></entry>
+
+<entry colname="col3"><para>6</para></entry>
+
+<entry colname="col4"><para>3,360</para></entry>
+
+<entry colname="col5"><para>1</para></entry>
+
+<entry colname="col6"><para>1,113</para></entry>
+
+<entry colname="col7"><para>1,113</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para>2</para></entry>
+
+<entry colname="col2"><para>6,000</para></entry>
+
+<entry colname="col3"><para>6</para></entry>
+
+<entry colname="col4"><para>3,360</para></entry>
+
+<entry colname="col5"><para>4 10base2</para></entry>
+
+<entry colname="col6"><para>4,452</para></entry>
+
+<entry colname="col7"><para>3,360</para></entry>
+
+</row>
+
+
+<row>
+
+<entry colname="col1"><para>2</para></entry>
+
+<entry colname="col2"><para>6,000</para></entry>
+
+<entry colname="col3"><para>20</para></entry>
+
+<entry colname="col4"><para>11,200</para></entry>
+
+<entry colname="col5"><para>4</para></entry>
+
+<entry colname="col6"><para>4,452</para></entry>
+
+<entry colname="col7"><para>4,452</para></entry>
+
+</row>
+
+
+<row>
+
+<entry colname="col1"><para>2</para></entry>
+
+<entry colname="col2"><para>6,000</para></entry>
+
+<entry colname="col3"><para>20</para></entry>
+
+<entry colname="col4"><para>11,200</para></entry>
+
+<entry colname="col5"><para>2 100base2</para></entry>
+
+<entry colname="col6"><para>13,000</para></entry>
+
+<entry colname="col7"><para>11,200</para></entry>
+
+</row>
+
+
+</tbody>
+</tgroup>
+</table>
+</sect2>
+</sect1>
+
+
+
+
+
+
+
+
+</appendix>
diff --git a/docs-xml/using_samba/appc.xml b/docs-xml/using_samba/appc.xml
new file mode 100644 (file)
index 0000000..76fc5e8
--- /dev/null
@@ -0,0 +1,3337 @@
+<appendix label="C" id="SAMBA-AP-C">
+<title>Samba Configuration Option Quick Reference</title>
+
+
+
+
+<para>The following pages list each of the Samba configuration
+options. If an option is applicable only to the global section,
+"[global]" will appear before its name. Any lists mentioned are space
+separated, except where noted. A glossary of terms follows the
+options.</para>
+
+
+
+
+
+
+
+
+
+
+
+<sect1 role="" label="C.1" id="appc-SECT-1">
+<title>Configuration Options</title>
+
+
+<refentry id="appc-refentry-1">
+<refmeta>
+<refmiscinfo class="allowable values">user list</refmiscinfo>
+<refmiscinfo class="default">NULL</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>admin users = user list</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>List of users who will be granted root permissions on the share by Samba.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-2">
+<refmeta>
+<refmiscinfo class="allowable values">any</refmiscinfo>
+<refmiscinfo class="default">NULL</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>allow hosts = host list</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Synonym for <literal>hosts allow</literal>. List of machines that may connect to a share.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-3">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">NO</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>alternate permissions = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Obsolete. Has no effect in Samba 2. Files will be shown as read-only if the owner can't write them. In Samba 1.9 and earlier, setting this option would set the DOS filesystem read-only attribute on any file the user couldn't read. This in turn required the <literal>delete readonly</literal> option.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-4">
+<refmeta>
+<refmiscinfo class="allowable values">NT, Win95, WfW</refmiscinfo>
+<refmiscinfo class="default">NT</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] announce as = system type</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Have Samba announce itself as something other than an NT server. Discouraged because it interferes with serving browse lists.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-5">
+<refmeta>
+<refmiscinfo class="allowable values">any</refmiscinfo>
+<refmiscinfo class="default">4.2</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] announce version = number.number</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Instructs Samba to announce itself as an older version SMB server. Discouraged.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-6">
+<refmeta>
+<refmiscinfo class="allowable values">any shares</refmiscinfo>
+<refmiscinfo class="default">NULL</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] auto services = share list</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>List of shares that will always appear in browse lists. A synonym is <literal>preload</literal>.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-7">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">YES</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>available = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>If set to NO, denies access to a share. Doesn't affect browsing.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-8">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">NO</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] bind interfaces only = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>If set to YES, shares and browsing will be provided only on interfaces in an interfaces list (see <literal>interfaces</literal>). New in Samba 1.9.18. If you set this option to YES, be sure to add 127.0.0.1 to the interfaces list to allow <emphasis>smbpasswd</emphasis> to connect to the local machine to change passwords. This is a convienence option; it does not improve security.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-9">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">YES</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>browsable = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Allows a share to be announced in browse lists.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-10">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">YES</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>blocking locks = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>If YES, honors byte range lock requests with time limits for queuing the request and retrying it until the time period expires. New in Samba 2.0.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-11">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">YES</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] browse list = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Turns on/off <literal>browse</literal> <literal>list</literal> from this server. Avoid changing.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-12">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">NO</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] case sensitive = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>If YES, uses exactly the case the client supplied when trying to resolve a filename. If NO, matches either upper- or lowercase name. Avoid changing.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-13">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">NO</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] case sig names = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Synonym for <literal>case sensitive</literal>.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-14">
+<refmeta>
+<refmiscinfo class="allowable values">positive number</refmiscinfo>
+<refmiscinfo class="default">60</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] change notify timeout = number</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets the number of seconds between checks when a client asks for notification of changes in a directory. Introduced in Samba 2.0 to limit the performance cost of the checks. Avoid lowering.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-15">
+<refmeta>
+<refmiscinfo class="allowable values">ISO8859-1, ISO8859-2, ISO8859-5, KOI8-R</refmiscinfo>
+<refmiscinfo class="default">NULL</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>character set = name</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>If set, translates from DOS code pages to the Western European (ISO8859-1), Eastern European (ISO8859-2), Russian Cyrillic (ISO8859-5), or Alternate Russian (KOI8-R) character set. The <literal>client code page</literal> must be set to 850.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-16">
+<refmeta>
+<refmiscinfo class="allowable values">See <link linkend="ch08-20815">Table 8.4</link></refmiscinfo>
+<refmiscinfo class="default">437 (US MS-DOS)</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>client code page = name</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets the DOS code page explicitly, overriding any previous <literal>valid chars</literal> settings. Examples of values are 850 for European, 437 is the US standard, and 932 for Japanese Shift-JIS. Introduced in Samba 1.9.19.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-17">
+<refmeta>
+<refmiscinfo class="allowable values">euc, cap, hex, hexN, sjis, j8bb, j8bj, jis8, j8bh, j8@b, j8@j, j8@h, j7bb, j7bj, jis7, j7bh, j7@b, j7@j, j7@h, jubb, jubj, junet, jubh, ju@b, ju@j, ju@h</refmiscinfo>
+<refmiscinfo class="default">NULL</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>coding system = code</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets the coding system used, notably for Kanji. This is employed for filenames and should  correspond to the code page in use. The <literal>client code page</literal> option must be set to 932 (Japanese Shift-JIS). Introduced in Samba 2.0.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-18">
+<refmeta>
+<refmiscinfo class="allowable values">a text string or NULL</refmiscinfo>
+<refmiscinfo class="default">NULL</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>comment = text</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets the comment that appears beside a share in a NET VIEW or the details list of a Microsoft directory window. See also the <literal>server string</literal> configuration option.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-19">
+<refmeta>
+<refmiscinfo class="allowable values">Unix pathname</refmiscinfo>
+<refmiscinfo class="default">NULL</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] config file = pathname</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Selects an additional Samba configuration file to read instead of the current one. Used to relocate the configuration file, or used with %-variables to select custom configuration files for some users or machines.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-20">
+<refmeta>
+<refmiscinfo class="allowable values">existing section's name</refmiscinfo>
+<refmiscinfo class="default">NULL</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>copy = section name</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Copies the configuration of a previously seen share into the share where it appears. Used with %-variables to select custom configurations for machines, architectures and users. The copied section must be earlier in the configuration file. Copied options are of lesser priority than those explicitly listed in the section.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-21">
+<refmeta>
+<refmiscinfo class="allowable values">octal permission bits, 0-0777</refmiscinfo>
+<refmiscinfo class="default">0744</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>create mask = octal value</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Also called <literal>create mode</literal>. Sets the maximum allowable permissions for new files (e.g., 0755). See also <literal>directory mask</literal>. To require certain permissions to be set, see <literal>force create mask/force directory mask</literal>. This option stopped affecting directories in Samba 1.9.17, and the default value changed in Samba 2.0.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-22">
+<refmeta>
+<refmiscinfo class="allowable values">octal permission bits, 0-0777</refmiscinfo>
+<refmiscinfo class="default">0744</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>create mode = octal permission bits</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Synonym for <literal>create mask</literal>.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-23">
+<refmeta>
+<refmiscinfo class="allowable values">minutes</refmiscinfo>
+<refmiscinfo class="default">0 </refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] deadtime = minutes</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>The time in minutes before an unused connection will be terminated. Zero means forever. Used to keep clients from tying up server resources forever. If used, clients will have to auto-reconnect after minutes of inactivity. See also <literal>keepalive</literal>.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-24">
+<refmeta>
+<refmiscinfo class="allowable values">number</refmiscinfo>
+<refmiscinfo class="default">0</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] debug level = number</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets the logging level used. Values of 3 or more slow Samba noticeably. A synonym is <literal>log level</literal>. Recommended value: 1.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-25">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">YES</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] debug timestamp = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Timestamps all log messages. Can be turned off when it's not useful (e.g., in debugging). New in Samba 2.0.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-26">
+<refmeta>
+<refmiscinfo class="allowable values">share name</refmiscinfo>
+<refmiscinfo class="default">NULL</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] default = name</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Also called <literal>default service</literal>. The name of a service (share) to provide if someone requests a service they don't have permission to use or which doesn't exist. As of Samba 1.9.14, the path will be set from the name the client specified, with any "_" characters changed to "/" characters, allowing access to any directory on the Samba server. Use is strongly discouraged.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-27">
+<refmeta>
+<refmiscinfo class="allowable values">LOWER, UPPER</refmiscinfo>
+<refmiscinfo class="default">LOWER</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>default case = case</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets the case in which to store new filenames. LOWER indicates mixed case, UPPER indicates uppercase letters.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-28">
+<refmeta>
+<refmiscinfo class="allowable values">share name</refmiscinfo>
+<refmiscinfo class="default">NULL</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] default service = share name</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Synonym for <literal>default</literal>.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-29">
+<refmeta>
+<refmiscinfo class="allowable values">NO, YES</refmiscinfo>
+<refmiscinfo class="default">NO</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>delete readonly = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Allow delete requests to remove read-only files. This is not allowed in DOS/Windows, but is normal in Unix, which has separate directory permissions. Used with programs like RCS, or with the older <literal>alternate permissions</literal> option.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-30">
+<refmeta>
+<refmiscinfo class="allowable values">NO, YES</refmiscinfo>
+<refmiscinfo class="default">NO</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>delete veto files = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Allow delete requests for a directory containing files or subdirectories the user can't see due to the <literal>veto files</literal> option. If set to NO, the directory will not be deleted and will still contain invisible files.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-31">
+<refmeta>
+<refmiscinfo class="allowable values">host list</refmiscinfo>
+<refmiscinfo class="default">NULL</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>deny hosts = host list</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>A synonym is <literal>hosts deny</literal>. Specifies a list of machines from which to refuse connections or shares.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-32">
+<refmeta>
+<refmiscinfo class="allowable values">shell command</refmiscinfo>
+<refmiscinfo class="default">varies</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] dfree command = command</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>A command to run on the server to return disk free space. Not needed unless the OS command does not work properly.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-33">
+<refmeta>
+<refmiscinfo class="allowable values">pathname</refmiscinfo>
+<refmiscinfo class="default">NULL</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>directory = pathname</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Synonym for <literal>path</literal>. A directory provided by a file share, or used by a printer share. Set automatically in the <literal>[homes]</literal> share to user's home directory, otherwise defaults to<filename> /tmp</filename>.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-34">
+<refmeta>
+<refmiscinfo class="allowable values">octal value from 0 to 0777</refmiscinfo>
+<refmiscinfo class="default">0755</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>directory mask = octal permission bits</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Also called <literal>directory mode</literal>. Sets the maximum allowable permissions for newly created directories. To require certain permissions be set, see the <literal>force create mask</literal> and <literal>force directory mask</literal> options.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-35">
+<refmeta>
+<refmiscinfo class="allowable values">octal value from 0 to 0777</refmiscinfo>
+<refmiscinfo class="default">0755</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>directory mode = octal permission bits</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Synonym for <literal>directory mask</literal>.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-36">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">YES</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] dns proxy = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>If set to YES, and if <literal>wins server = YES</literal>, look up hostnames in DNS if they are not found using WINS.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-37">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">NO</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] domain logons = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Allow Windows 95/98 or NT clients to log on to an NT-like domain.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-38">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">NO</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] domain master = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Become a domain master browser list collector if possible for the entire workgroup/domain.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-39">
+<refmeta>
+<refmiscinfo class="allowable values">comma-separated list of paths</refmiscinfo>
+<refmiscinfo class="default">NULL</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>dont descend = comma-list</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Does not allow a change directory or search in the directories specified. This is a browsing convenience option; it doesn't provide any extra security.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-40">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">NO</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>dos filetimes = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Allow non-owners to change file times if they can write to the file. See also <literal>dos filetime resolution</literal>.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-41">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">NO</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>dos filetime resolution = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Set file times on Unix to match DOS standards (round to next even second). Recommended if using Visual C++ or a PC <emphasis>make</emphasis> program to avoid remaking the programs unnecesarily. Use with the <literal>dos filetimes</literal> option.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-42">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">NO</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] encrypt passwords = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Uses Windows NT-style password encryption. Requires an <filename>smbpasswd</filename> on the Samba server.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-43">
+<refmeta>
+<refmiscinfo class="allowable values">shell command</refmiscinfo>
+<refmiscinfo class="default">NULL</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>exec = command</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Synonym of <literal>preexec</literal>, a command to run as the user just before connecting to the share.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-44">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">NO</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>fake directory create times = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Bug fix for users of Microsoft <emphasis>nmake</emphasis>. If set, Samba will set directory create times such that <emphasis>nmake</emphasis> won't remake all files every time.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-45">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">NO</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>fake oplocks = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Return YES whenever a client asks if it can lock a file and cache it locally, but does not enforce lock on the server. Use only for read-only disks, as Samba now supports real <literal>oplocks</literal> and has per-file overrides. See also <literal>oplocks</literal> and <literal>veto oplock files</literal>.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-46">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">YES</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>follow symlinks = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>If YES, Samba will follow symlinks in a file share or shares. See the <literal>wide links</literal> option if you want to restrict symlinks to just the current share.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-47">
+<refmeta>
+<refmiscinfo class="allowable values">octal value from 0 to 0777</refmiscinfo>
+<refmiscinfo class="default">0</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>force create mask = octal permission bits</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Provides bits that will be <literal>OR</literal>ed into the permissions of newly created files. Used with the <literal>create mode</literal> configuration option.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-48">
+<refmeta>
+<refmiscinfo class="allowable values">octal value from 0 to 0777</refmiscinfo>
+<refmiscinfo class="default">0</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>force create mode = octal permission bits</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Synonym for <literal>force create mask</literal>.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-49">
+<refmeta>
+<refmiscinfo class="allowable values">octal value from 0 to 0777</refmiscinfo>
+<refmiscinfo class="default">0</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>force directory mask = octal permission bits</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Provides bits that will be <literal>OR</literal>ed into the permissions of newly created directories, forcing those bits to be set. Used with <literal>directory mode</literal>.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-50">
+<refmeta>
+<refmiscinfo class="allowable values">octal value from 0 to 0777</refmiscinfo>
+<refmiscinfo class="default">0</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>force directory mode = octal permission bits</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Synonym for <literal>force</literal> <literal>directory</literal> <literal>mask</literal>.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-51">
+<refmeta>
+<refmiscinfo class="allowable values">group</refmiscinfo>
+<refmiscinfo class="default">NULL</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>force group = unix group</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets the effective group name assigned to all users accessing a share. Used to override user's normal groups.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-52">
+<refmeta>
+<refmiscinfo class="allowable values">username</refmiscinfo>
+<refmiscinfo class="default">NULL</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>force user = name</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets the effective username assigned to all users accessing a share. Discouraged.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-53">
+<refmeta>
+<refmiscinfo class="allowable values">NTFS, FAT, Samba</refmiscinfo>
+<refmiscinfo class="default">NTFS</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>fstype = string</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets the filesystem type reported to the client.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-54">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">NO</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] getwd cache = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Cache current directory for performance. Recommended with the <literal>wide links</literal> option.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-55">
+<refmeta>
+<refmiscinfo class="allowable values">unix group</refmiscinfo>
+<refmiscinfo class="default">NULL</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>group = group</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>An obsolete form of <literal>force group</literal>.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-56">
+<refmeta>
+<refmiscinfo class="allowable values">username</refmiscinfo>
+<refmiscinfo class="default">NULL</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>guest account = user</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets the name of the unprivileged Unix account to use for tasks like printing and for accessing shares marked with <literal>guest ok</literal>.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-57">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">NO</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>guest ok = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>If YES, passwords are not needed for this share. Synonym of <literal>public</literal>.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-58">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">NO</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>guest only = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Forces user of a share to do so as the guest account. Requires <literal>guest</literal> <literal>ok</literal> or <literal>public</literal> to be <literal>yes</literal>.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-59">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">YES</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>hide dot files = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Treats files beginning with a dot in a share as if they had the DOS/Windows hidden attribute set.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-60">
+<refmeta>
+<refmiscinfo class="allowable values">list of patterns, separated by <literal>/</literal> characters</refmiscinfo>
+<refmiscinfo class="default">NULL</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>hide files = slash-separated list</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>List of file or directory names to set the DOS hidden attribute on. Names may contain <literal>?</literal> or <literal>*</literal> pattern-characters and <literal>%</literal>-variables. See also <literal>hide</literal> <literal>dot</literal> <literal>files</literal> and <literal>veto</literal> <literal>files</literal>.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-61">
+<refmeta>
+<refmiscinfo class="allowable values">NIS map name</refmiscinfo>
+<refmiscinfo class="default">auto.home</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] homedir map = NIS map name</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Used with <literal>nis homedir</literal> to locate user's Unix home directory from Sun NIS (not NIS+).</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-62">
+<refmeta>
+<refmiscinfo class="allowable values">list of hostnames</refmiscinfo>
+<refmiscinfo class="default">NULL</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>hosts allow = host list</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Synonym of <literal>allow hosts</literal>, a list of machines that can access a share or shares. If NULL (the default) any machine can access the share unless there is a <literal>hosts deny</literal> option.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-63">
+<refmeta>
+<refmiscinfo class="allowable values">list of hostnames</refmiscinfo>
+<refmiscinfo class="default">NULL</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>hosts deny = host list</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Synonym of <literal>deny hosts</literal>, a list of machines that cannot connect to a share or shares.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-64">
+<refmeta>
+<refmiscinfo class="allowable values">pathname</refmiscinfo>
+<refmiscinfo class="default">NULL</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] hosts equiv = pathname</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Path to a file of trusted machines from which password-less logins are allowed. Strongly discouraged, because Windows/NT users can always override the user name, the only security in this scheme.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-65">
+<refmeta>
+<refmiscinfo class="allowable values">pathname</refmiscinfo>
+<refmiscinfo class="default">NULL</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>include = pathname</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Include the named file in <filename>smb.conf</filename> at the line where it appears. This option does not understand the variables <literal>%u</literal> (user), <literal>%P</literal> (current share's root directory), or <literal>%S</literal> (current share name), because they are not set at the time the file is read.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-66">
+<refmeta>
+<refmiscinfo class="allowable values">IP addresses separated by spaces</refmiscinfo>
+<refmiscinfo class="default">NULL</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] interfaces = interface list</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets the interfaces to which Samba will respond. The default is the machine's primary interface only. Recommended on multihomed machines or to override erroneous addresses and netmasks.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-67">
+<refmeta>
+<refmiscinfo class="allowable values">list of users</refmiscinfo>
+<refmiscinfo class="default">NULL</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>invalid users = user list</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>List of users that will not be permitted access to a share or shares.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-68">
+<refmeta>
+<refmiscinfo class="allowable values">number of seconds</refmiscinfo>
+<refmiscinfo class="default">0</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] keepalive = number</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Number of seconds between checks for a crashed client. The default of 0 causes no checks to be performed. Recommended if you want checks more often than every four hours. 3600 (10 minutes) is reasonable. See also <literal>socket options</literal> for another approach.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-69">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">automatic</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] kernel oplocks = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Break oplock when a Unix process accesses an <emphasis>oplocked</emphasis> file, preventing corruption. Set to YES on operating systems supporting this, otherwise set to NO. New in Samba 2.0; supported on SGI, and hopefully soon on Linux and BSD. Avoid changing.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-70">
+<refmeta>
+<refmiscinfo class="allowable values">various</refmiscinfo>
+<refmiscinfo class="default">varies</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] ldap filter = various</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Options beginning with <literal>ldap</literal> are part of an experimental (circa Samba 2.0) use of the Lightweight Directory Access Protocol (LDAP) general directory/distributed database for user, name, and host information. This option is reserved for future use.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-71">
+<refmeta>
+<refmiscinfo class="allowable values">various</refmiscinfo>
+<refmiscinfo class="default">various</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] ldap port = various</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Options beginning with <literal>ldap</literal> are part of an experimental (circa Samba 2.0) use of the Lightweight Directory Access Protocol (LDAP) general directory/distributed database for user, name, and host information. This option is reserved for future use.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-72">
+<refmeta>
+<refmiscinfo class="allowable values">various</refmiscinfo>
+<refmiscinfo class="default">various</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] ldap root = various</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Options beginning with <literal>ldap</literal> are part of an experimental (circa Samba 2.0) use of the Lightweight Directory Access Protocol (LDAP) general directory/distributed database for user, name, and host information. This option is reserved for future use.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-73">
+<refmeta>
+<refmiscinfo class="allowable values">various</refmiscinfo>
+<refmiscinfo class="default">various</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] ldap server = various</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Options beginning with <literal>ldap</literal> are part of an experimental (circa Samba 2.0) use of the Lightweight Directory Access Protocol (LDAP) general directory/distributed database for user, name, and host information. This option is reserved for future use.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-74">
+<refmeta>
+<refmiscinfo class="allowable values">various</refmiscinfo>
+<refmiscinfo class="default">various</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] ldap suffix = various</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Options beginning with <literal>ldap</literal> are part of an experimental (circa Samba 2.0) use of the Lightweight Directory Access Protocol (LDAP) general directory/distributed database for user, name, and host information. This option is reserved for future use.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-75">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">YES</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] load printers = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Load all printer names from the system printer capabilities into browse list. Uses configuration options from the <literal>[printers]</literal> section.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-76">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">YES</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] local master = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Stands for election as the local master browser. See also <literal>domain master</literal> and <literal>os level</literal>.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-77">
+<refmeta>
+<refmiscinfo class="allowable values">AUTO, YES, NO</refmiscinfo>
+<refmiscinfo class="default">AUTO</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] lm announce = value</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Produce OS/2 SMB broadcasts at an interval specified by the <literal>lm interval</literal> option. YES/NO turns them on/off unconditionally. AUTO causes the Samba server to wait for a LAN Manager announcement from another client before sending one out. Required for OS/2 client browsing.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-78">
+<refmeta>
+<refmiscinfo class="allowable values">number</refmiscinfo>
+<refmiscinfo class="default">60</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] lm interval = seconds</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets the time period, in seconds, between OS/2 SMB broadcast announcements.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-79">
+<refmeta>
+<refmiscinfo class="allowable values">pathname</refmiscinfo>
+<refmiscinfo class="default"><emphasis>/usr/local/samba/var/locks</emphasis></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] lock directory = pathname</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Set a directory to keep lock files in. The directory must be writable by Samba, readable by everyone.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-80">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">YES</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>locking = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Perform file locking. If set to NO, Samba will accept lock requests but will not actually lock resources. Recommended only for read-only file systems.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-81">
+<refmeta>
+<refmiscinfo class="allowable values">pathname</refmiscinfo>
+<refmiscinfo class="default">varies</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] log file = pathname</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Set name and location of the log file. Allows all %-variables.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-82">
+<refmeta>
+<refmiscinfo class="allowable values">number</refmiscinfo>
+<refmiscinfo class="default">0</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] log level = number</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>A synonym of <literal>debug level</literal>. Sets the logging level used. Values of 3 or more slow the system noticeably.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-83">
+<refmeta>
+<refmiscinfo class="allowable values">DOS drive name</refmiscinfo>
+<refmiscinfo class="default">None</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] logon drive = drive</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets the drive on Windows NT (only) of the <literal>logon path</literal>.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-84">
+<refmeta>
+<refmiscinfo class="allowable values">Unix pathname</refmiscinfo>
+<refmiscinfo class="default"><emphasis>\\</emphasis><replaceable>%N </replaceable><emphasis>\</emphasis><replaceable>%U</replaceable></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] logon home = path</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets the home directory of a Windows 95/98 or NT Workstation user. Allows <literal>NET</literal> <literal>USE</literal> <literal>H:/HOME</literal> from the command prompt.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-85">
+<refmeta>
+<refmiscinfo class="allowable values">Windows pathname</refmiscinfo>
+<refmiscinfo class="default"><emphasis>\\</emphasis><replaceable>%N </replaceable><emphasis>\</emphasis><replaceable>%U </replaceable><emphasis>\profile</emphasis></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] logon path = pathname</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets path to Windows profile directory. This contains <emphasis>USER.MAN</emphasis> and/or <emphasis>USER.DAT</emphasis> profile files and the Windows 95 Desktop, Start Menu, Network Neighborhood, and programs folders.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-86">
+<refmeta>
+<refmiscinfo class="allowable values">pathname</refmiscinfo>
+<refmiscinfo class="default">NULL</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] logon script = pathname</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets pathname relative to <literal>[netlogin]</literal> share of a DOS/NT script to run on the client at login time. Allows all %-variables.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-87">
+<refmeta>
+<refmiscinfo class="allowable values">fully-qualfied Unix shell command</refmiscinfo>
+<refmiscinfo class="default">varies</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>lppause command = /absolute_ path/command</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets the command to pause a print job. Honors the <literal>%p</literal> (printer name) and <literal>%j</literal> (job number) variables.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-88">
+<refmeta>
+<refmiscinfo class="allowable values">fully-qualified Unix shell command</refmiscinfo>
+<refmiscinfo class="default">varies</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>lpresume command = /absolute_ path/command</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets the command to resume a paused print job. Honors the <literal>%p</literal> (printer name) and <literal>%j</literal> ( job number) variables.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-89">
+<refmeta>
+<refmiscinfo class="allowable values">number of seconds</refmiscinfo>
+<refmiscinfo class="default">10</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] lpq cache time = seconds</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets how long to keep print queue (<literal>lpq  </literal>) status is cached, in seconds.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-90">
+<refmeta>
+<refmiscinfo class="allowable values">fully-qualfied Unix shell command</refmiscinfo>
+<refmiscinfo class="default">varies</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>lpq command = /absolute_ path/command</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets the command used to get printer status. Usually initialized to a default value by the <literal>printing</literal> option. Honors the <literal>%p</literal> (printer name) variable.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-91">
+<refmeta>
+<refmiscinfo class="allowable values">fully-qualified Unix shell command</refmiscinfo>
+<refmiscinfo class="default">varies</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>lprm command = /absolute_ path/command</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets the command to delete a print job. Usually initialized to a default value by the <literal>printing</literal> option. Honors the <literal>%p</literal> (printer name) and <literal>%j</literal> (job number) variables.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-92">
+<refmeta>
+<refmiscinfo class="allowable values">number of seconds</refmiscinfo>
+<refmiscinfo class="default">604,800</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>machine password timeout = seconds</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets the period between (NT domain) machine password changes. Default is 1 week, or 604,800 seconds.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-93">
+<refmeta>
+<refmiscinfo class="allowable values">Unix pathname</refmiscinfo>
+<refmiscinfo class="default"><emphasis>script.out</emphasis></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>magic output = pathname</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets the output file for the discouraged <literal>magic scripts</literal> option. Default is the script name, followed by the extension <emphasis>.out</emphasis>.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-94">
+<refmeta>
+<refmiscinfo class="allowable values">Unix pathname</refmiscinfo>
+<refmiscinfo class="default">NULL</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>magic script = pathname</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets a filename for execution via a shell whenever the file is closed from the client, to allow clients to run commands on the server.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-95">
+<refmeta>
+<refmiscinfo class="allowable values"><emphasis>allowable values:</emphasis> YES, NO</refmiscinfo>
+<refmiscinfo class="default">NO</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>mangle case = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Mangle a name if it is in mixed case.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-96">
+<refmeta>
+<refmiscinfo class="allowable values">list of to-from pairs</refmiscinfo>
+<refmiscinfo class="default">NULL</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>mangled map = map list</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Set up a table of names to remap (e.g., <emphasis>.html</emphasis> to <emphasis>.htm</emphasis>).</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-97">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">YES</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>mangled names = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets Samba to abbreviate names that are too long or have unsupported characters to the DOS 8.3 style.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-98">
+<refmeta>
+<refmiscinfo class="allowable values">character</refmiscinfo>
+<refmiscinfo class="default">~</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>mangling char = character</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets the unique mangling character used in all mangled names.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-99">
+<refmeta>
+<refmiscinfo class="allowable values">number</refmiscinfo>
+<refmiscinfo class="default">50</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] mangled stack = number</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets the size of a cache of recently-mangled filenames.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-100">
+<refmeta>
+<refmiscinfo class="allowable values">Unix pathname</refmiscinfo>
+<refmiscinfo class="default">NULL</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>map aliasname = pathname</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Points to a file of Unix group/NT group pairs, one per line. This is used to map NT aliases to Unix group names. See also the configuration options <literal>username</literal> <literal>map</literal> and <literal>map</literal> <literal>groupname</literal>. Introduced in Samba 2.0.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-101">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">YES</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>map archive = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>If YES, Samba sets the executable-by-user (0100) bit on Unix files if the DOS archive attribute is set. Recommended: if used, the <literal>create mask</literal> must contain the 0100 bit.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-102">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">NO</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>map hidden = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>If YES, sets executable-by-other (0001) bit on Unix files if the DOS hidden attribute is set. If used, the <literal>create mask</literal> option must contain the  0001 bit.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-103">
+<refmeta>
+<refmiscinfo class="allowable values">pathname</refmiscinfo>
+<refmiscinfo class="default">NULL</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>map groupname = pathname</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Points to a file of Unix group/NT group, one per line. This is used to map NT group names to Unix group names. See also the configuration options <literal>username</literal> <literal>map</literal> and <literal>map</literal> <literal>aliasname</literal>. Introduced in Samba 2.0.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-104">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">NO</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>map system = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>If YES, Samba sets the executable-by-group (0010) bit on Unix files if the DOS system attribute is set. If used, the <literal>create mask</literal> must contain the  0010 bit.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-105">
+<refmeta>
+<refmiscinfo class="allowable values">number</refmiscinfo>
+<refmiscinfo class="default">0 (infinity)</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>max connections = number</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Set maximum number of connections allowed to a share from each individual client machine.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-106">
+<refmeta>
+<refmiscinfo class="allowable values">size in MB</refmiscinfo>
+<refmiscinfo class="default">0 (unchanged)</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] max disk size = number</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets maximum disk size/free-space size (in megabytes) to return to client. Some clients or applications can't understand large maximum disk sizes.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-107">
+<refmeta>
+<refmiscinfo class="allowable values">size in KB</refmiscinfo>
+<refmiscinfo class="default">5000</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] max log size = number</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets the size (in kilobytes) at which Samba will start a new log file. The current log file will be renamed with an <emphasis>.old</emphasis> extension, replacing any previous file with that name.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-108">
+<refmeta>
+<refmiscinfo class="allowable values">number</refmiscinfo>
+<refmiscinfo class="default">50</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] max mux = number</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets the number of simultaneous operations that Samba clients may make. Avoid changing.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-109">
+<refmeta>
+<refmiscinfo class="allowable values">number</refmiscinfo>
+<refmiscinfo class="default">N/A</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] max packet = number</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Synonym for <literal>packet size</literal>. Obsolete as of Samba 1.7. Use <literal>max xmit</literal> instead.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-110">
+<refmeta>
+<refmiscinfo class="allowable values">number</refmiscinfo>
+<refmiscinfo class="default">10,000</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] max open files = number</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Limits the number of files a Samba process will try to keep open at one time. Samba allows you to set this to less than the Unix maximum. This option is a workaround for a separate problem. Avoid changing. This option was introduced in Samba 2.0.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-111">
+<refmeta>
+<refmiscinfo class="allowable values">time in seconds</refmiscinfo>
+<refmiscinfo class="default">14400 (4 hrs)</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] max ttl = seconds</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets the time to keep NetBIOS names in <emphasis>nmbd</emphasis> cache while trying to perform a lookup on it. Avoid changing.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-112">
+<refmeta>
+<refmiscinfo class="allowable values">time in seconds</refmiscinfo>
+<refmiscinfo class="default">259200 (3 days)</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] max wins ttl = seconds</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Limits time-to-live of a NetBIOS name in <emphasis>nmbd</emphasis> WINS cache, in seconds. Avoid changing.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-113">
+<refmeta>
+<refmiscinfo class="allowable values">size in bytes</refmiscinfo>
+<refmiscinfo class="default">65535</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] max xmit = bytes</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets maximum packet size that will be negotiated by Samba. Tuning parameter for slow links and older client bugs. Values less than 2048 are discouraged.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-114">
+<refmeta>
+<refmiscinfo class="allowable values">shell command</refmiscinfo>
+<refmiscinfo class="default">NULL</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] message command = /absolute_ path/command</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets the command on the server to run when a WinPopup message arrives from a client. The command must end in "<literal>&amp;</literal>" to allow immediate return. Honors all %-variables except <literal>%u</literal> (user), and supports the extra variables <literal>%s</literal> (filename the message is in), <literal>%t</literal> (destination machine), and <literal>%f</literal> (from).</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-115">
+<refmeta>
+<refmiscinfo class="allowable values">space in KB</refmiscinfo>
+<refmiscinfo class="default">0 (unlimited)</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>min print space = kilobytes</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets minimum spool space required before accepting a print request.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-116">
+<refmeta>
+<refmiscinfo class="allowable values">time in seconds</refmiscinfo>
+<refmiscinfo class="default">21600 (6 hrs)</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] min wins ttl = seconds</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets minimum time-to-live of a NetBIOS name in <emphasis>nmbd</emphasis> WINS cache, in seconds. Avoid changing.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-117">
+<refmeta>
+<refmiscinfo class="allowable values">list of lmhosts, wins, hosts and bcast</refmiscinfo>
+<refmiscinfo class="default">lmhosts wins hosts bcast</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>name resolve order = list</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets order of lookup when trying to get IP address from names. The <literal>hosts</literal> parameter carrries out a regular name look up using the server's normal sources: <emphasis>/etc/hosts</emphasis>, DNS, NIS, or a combination of them. Introduced in Samba 1.9.18p4.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-118">
+<refmeta>
+<refmiscinfo class="allowable values">list of netbios names</refmiscinfo>
+<refmiscinfo class="default">NULL</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] netbios aliases = list</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Adds additional NetBIOS names by which a Samba server will advertise itself.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-119">
+<refmeta>
+<refmiscinfo class="allowable values">host name</refmiscinfo>
+<refmiscinfo class="default">varies</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>netbios name = hostname</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets the NetBIOS name by which a Samba server is known, or primary name if NetBIOS aliases exist.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-120">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">YES</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] networkstation user login = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>If set to NO, clients will not do a full login when <literal>security = server</literal>. Avoid changing. Turning it off is a temporary workaround (introduced in Samba 1.9.18p3) for NT trusted domains bug. Automatic correction was introduced in Samba 1.9.18p10; the parameter may eventually be removed.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-121">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">NO</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] nis homedir = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>If YES, the <literal>homedir map</literal> will be used to look up the user's home-directory server name and return it to the client. The client will contact that machine to connect to the share. This avoids mounting from a machine that doesn't actually have the disk. The machine with the home directories must be an SMB server.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-122">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">YES</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] nt pipe support = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Allows turning off NT-specific pipe calls. This is a developer/benchmarking option and may be removed in the future. Avoid changing.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-123">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">YES</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] nt smb support = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>If YES, allow NT-specific SMBs to be used. This is a developer/benchmarking option and may be removed in the future. Avoid changing.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-124">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">NO</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] null passwords = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>If YES, allows access to accounts that have null passwords. Strongly discouraged.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-125">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">YES</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>ole locking compatibility = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>If YES, locking ranges will be mapped to avoid Unix locks crashing when Windows uses locks above 32KB. You should avoid changing this option. Introduced in Samba 1.9.18p10.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-126">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">NO</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>only guest = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>A synonym for <literal>guest only</literal>. Forces user of a share to login as the guest account.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-127">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">NO</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>only user = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Requires that users of the share be on a <literal>username =</literal> list.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-128">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">YES</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>oplocks = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>If YES, support local caching of <emphasis>opportunistic</emphasis> locked files on client. This option is recommended because it improves performance by about 30%. See also <literal>fake</literal> <literal>oplocks</literal> and <literal>veto</literal> <literal>oplock</literal> <literal>files</literal>.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-129">
+<refmeta>
+<refmiscinfo class="allowable values">number</refmiscinfo>
+<refmiscinfo class="default">0</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] os level = number</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets the candidacy of the server when electing a browse master. Used with the <literal>domain</literal> <literal>master</literal> or <literal>local</literal> <literal>master</literal> options. You can set a higher value than a competing operating system if you want Samba to win. Windows for Workgroups and Windows 95 use 1, Windows NT client uses 17, and Windows NT Server uses 33.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-130">
+<refmeta>
+<refmiscinfo class="allowable values">number in bytes</refmiscinfo>
+<refmiscinfo class="default">65535</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] packet size = bytes</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Obsolete. Discouraged synonym of <literal>max packet</literal>. See <literal>max xmit</literal>.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-131">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">NO</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] passwd chat debug = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Logs an entire password chat, including passwords passed, with a log level of 100. For debugging only. Introduced in Samba 1.9.18p5.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-132">
+<refmeta>
+<refmiscinfo class="allowable values">Unix server commands</refmiscinfo>
+<refmiscinfo class="default">compiled-in value</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] passwd chat = command sequence</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets the command used to change passwords on the server. Supports the variables <literal>%o</literal> (old password) and <literal>%n</literal> (new password) and allows <literal>\r</literal> <literal>\n</literal> <literal>\t</literal> and <literal>\s</literal> (space) escapes in the sequence.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-133">
+<refmeta>
+<refmiscinfo class="allowable values">Unix server program</refmiscinfo>
+<refmiscinfo class="default">NULL</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] passwd program = program</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets the command used to change user's password. Will be run as <literal>root</literal>. Supports <literal>%u</literal> (user).</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-134">
+<refmeta>
+<refmiscinfo class="allowable values">number</refmiscinfo>
+<refmiscinfo class="default">0</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] password level = number</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Specifies the number of uppercase letter permutations used to match passwords. Workaround for clients that change passwords to a single case before sending them to the Samba server. Causes repeated login attempts with passwords in different cases, which can trigger account lockouts.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-135">
+<refmeta>
+<refmiscinfo class="allowable values">list of NetBIOS names</refmiscinfo>
+<refmiscinfo class="default">NULL</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] password server = netbios names</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>A list of SMB servers that will validate passwords for you. Used with an NT password server (PDC or BDC) and the <literal>security</literal> <literal>=</literal> <literal>server</literal> or <literal>security</literal> <literal>=</literal> <literal>domain</literal> configuration options. Caution: an NT password server must allow logins from the Samba server.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-136">
+<refmeta>
+<refmiscinfo class="allowable values">fully-qualfied Unix shell command</refmiscinfo>
+<refmiscinfo class="default">NULL</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>panic action = /absolute_ path/command</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets the command to run when Samba panics. For Samba developers and testers, <literal>/usr/bin/X11/xterm -display :0 -e gdb /samba/bin/smbd %d</literal> is a possible value.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-137">
+<refmeta>
+<refmiscinfo class="allowable values">pathname</refmiscinfo>
+<refmiscinfo class="default">varies</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>path = pathname</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets the path to the directory provided by a file share or used by a printer share. Set automatically in <literal>[homes]</literal> share to user's home directory, otherwise defaults to<filename> /tmp</filename>. Honors the <literal>%u</literal> (user) and <literal>%m</literal> (machine) variables.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-138">
+<refmeta>
+<refmiscinfo class="allowable values">fully-qualified Unix shell command</refmiscinfo>
+<refmiscinfo class="default">NULL</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>postexec = /absolute_  path/command</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets a command to run as the user after disconnecting from the share. See also the options <literal>preexec</literal>, <literal>root preexec</literal>, and <literal>root postexec</literal>.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-139">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">NO</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>postscript = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Flags a printer as PostScript to avoid a Windows bug by inserting <literal>%!</literal> as the first line. Works only if printer actually is PostScript compatible.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-140">
+<refmeta>
+<refmiscinfo class="allowable values">fully-qualified Unix shell command</refmiscinfo>
+<refmiscinfo class="default">NULL</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>preexec = /absolute_ path/command</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets a command to run as the user before connecting to the share. See also the options <literal>postexec</literal>, <literal>root preexec</literal>, and <literal>root postexec</literal>.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-141">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">NO</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] preferred master = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>If YES, Samba is preferred to become the master browser. Causes Samba to call a browsing election when it comes online.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-142">
+<refmeta>
+<refmiscinfo class="allowable values">list of services</refmiscinfo>
+<refmiscinfo class="default">NULL</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>preload = share list</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Synonym of <literal>auto</literal> <literal>services</literal>. Specifies a list of shares that will always appear in browse lists.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-143">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">NO</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>preserve case = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>If set to YES, this option leaves filenames in the case sent by client. If no, it forces filenames to the case specified by the <literal>default</literal> <literal>case</literal> option. See also <literal>short preserve case</literal>.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-144">
+<refmeta>
+<refmiscinfo class="allowable values">fully-qualified Unix shell command</refmiscinfo>
+<refmiscinfo class="default">varies</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>print command = /absolute_ path/command</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets the command used to send a spooled file to the printer. Usually initialized to a default value by the <literal>printing</literal> option. This option honors the <literal>%p</literal> (printer name), <literal>%s</literal> (spool file) and <literal>%f</literal> (spool file as a relative path) variables. Note that the command in the value of the option must include file deletion of the spool file.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-145">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">NO</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>print ok = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Synonym of <literal>printable</literal>.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-146">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">NO</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>printable = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets a share to be a print share. Required for all printers.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-147">
+<refmeta>
+<refmiscinfo class="allowable values">pathname</refmiscinfo>
+<refmiscinfo class="default"><emphasis>/etc/printcap</emphasis></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] printcap name = pathname</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets the path to the printer capabilities file used by the <literal>[printers]</literal> share. The default value changes to <filename>/etc/qconfig</filename> under AIX and <filename>lpstat</filename> on System V.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-148">
+<refmeta>
+<refmiscinfo class="allowable values">printer name</refmiscinfo>
+<refmiscinfo class="default"><literal>lp</literal></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>printer = name</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets the name of the Unix printer.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-149">
+<refmeta>
+<refmiscinfo class="allowable values">exact printer driver string used by Windows</refmiscinfo>
+<refmiscinfo class="default">NULL</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>printer driver = printer driver name</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets the string to pass to Windows when asked what driver to use to prepare files for a printer share. Note that the value is case sensitive.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-150">
+<refmeta>
+<refmiscinfo class="allowable values">Unix pathname</refmiscinfo>
+<refmiscinfo class="default"><emphasis>samba-lib/printers.def</emphasis></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] printer driver file = path</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets the location of a <emphasis>msprint.def</emphasis> file, usable by Windows 95/98.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-151">
+<refmeta>
+<refmiscinfo class="allowable values">Windows network path</refmiscinfo>
+<refmiscinfo class="default"><emphasis>\\</emphasis><replaceable>server</replaceable><emphasis>\PRINTER$</emphasis></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>printer driver location = path</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets the location of the driver for a particular printer. The value is a pathname for a share that stores the printer driver files.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-152">
+<refmeta>
+<refmiscinfo class="allowable values">name</refmiscinfo>
+<refmiscinfo class="default">NULL</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>printer name = name</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Synonym of <literal>printer</literal>.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-153">
+<refmeta>
+<refmiscinfo class="allowable values">bsd, sysv, hpux, aix, qnx, plp, lprng</refmiscinfo>
+<refmiscinfo class="default">bsd</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>printing = style</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets printing style to one of the above, instead of the compiled-in value. This sets initial values of at least the <literal>print</literal> <literal>command </literal>, <literal>print</literal> <literal>command </literal>, <literal>lpq</literal> <literal>command </literal>, and <literal>lprm</literal> <literal>command</literal>.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-154">
+<refmeta>
+<refmiscinfo class="allowable values">NT1, LANMAN2, LANMAN1, COREPLUS, CORE</refmiscinfo>
+<refmiscinfo class="default">NT1</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] protocol = protocol</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets SMB protocol version to one of the allowable
+values. Resetting is highly discouraged. Only for backwards
+compatibility with older-client bugs.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-155">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">NO</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>public = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>If YES, passwords are not needed for this share. A synonym is <literal>guest ok</literal>.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-156">
+<refmeta>
+<refmiscinfo class="allowable values">valid Unix command</refmiscinfo>
+<refmiscinfo class="default">varies</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>queuepause command = /absolute_ path/command</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets the command used to pause a print queue. Usually initialized to a default value by the <literal>printing</literal> option. Introduced in Samba 1.9.18p10.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-157">
+<refmeta>
+<refmiscinfo class="allowable values">valid Unix command</refmiscinfo>
+<refmiscinfo class="default">varies</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>queueresume command = /absolute_ path/command</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets the command used to resume a print queue. Usually initialized to a default value by the <literal>printing</literal> option. Introduced in Samba 1.9.18p10.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-158">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">NO</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>read bmpx = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Obsolete. Do not change.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-159">
+<refmeta>
+<refmiscinfo class="allowable values">comma-separated list of users</refmiscinfo>
+<refmiscinfo class="default">NULL</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>read list = comma-separated list</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Specifies a list of users given read-only access to a writeable share.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-160">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">NO</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>read only = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets a share to read-only. Antonym of <literal>writable</literal> and <literal>write ok</literal>.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-161">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">NO</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] read prediction = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Reads ahead data for read-only files. Obsolete; removed in Samba 2.0.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-162">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">YES</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] read raw = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Allows fast streaming reads over TCP using 64K buffers. Recommended.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-163">
+<refmeta>
+<refmiscinfo class="allowable values">size in bytes</refmiscinfo>
+<refmiscinfo class="default">2048</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] read size = bytes</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets a buffering option for servers with mismatched disk and network speeds. Requires experimentation. Avoid changing. Should not exceed 65536.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-164">
+<refmeta>
+<refmiscinfo class="allowable values">list of remote addresses</refmiscinfo>
+<refmiscinfo class="default">NULL</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] remote announce = remote list</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Adds workgroups to the list on which the Samba server will announce itself. Specified as IP address/workgroup (for instance, 192.168.220.215/SIMPLE) with multiple groups separated by spaces. Allows directed broadcasts. The server will appear on those workgroup's browse lists. Does not require WINS.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-165">
+<refmeta>
+<refmiscinfo class="allowable values">IP-address list</refmiscinfo>
+<refmiscinfo class="default">NULL</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] remote browse sync = address list</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Enables Samba-only browse list synchronization with other Samba local master browsers. Addresses can be specific addresses or directed broadcasts (i.e., ###.###.###.255). The latter will cause Samba to hunt down the local master.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-166">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">NO</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>revalidate = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>If set to YES, requires users to re-enter passwords even after a successful initial logon to a share with a password.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-167">
+<refmeta>
+<refmiscinfo class="allowable values">Unix pathname</refmiscinfo>
+<refmiscinfo class="default">NULL</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] root = pathname</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Synonym for <literal>root directory</literal>.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-168">
+<refmeta>
+<refmiscinfo class="allowable values">Unix pathname</refmiscinfo>
+<refmiscinfo class="default">NULL</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] root dir = pathname</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Synonym for <literal>root directory</literal>.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-169">
+<refmeta>
+<refmiscinfo class="allowable values">Unix pathname</refmiscinfo>
+<refmiscinfo class="default">NULL</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] root directory = pathname</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Specifies a directory to <literal>chroot()</literal> to before starting daemons. Prevents any access below that directory tree. See also the <literal>wide links</literal> configuration option.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-170">
+<refmeta>
+<refmiscinfo class="allowable values">fully-qualified Unix shell command</refmiscinfo>
+<refmiscinfo class="default">NULL</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>root postexec = /absolute_ path/command</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets a command to run as root after disconnecting from the share. See also <literal>preexec</literal>, <literal>postexec</literal>, and <literal>root</literal> <literal>preexec</literal> configuration options. Runs after the user's <literal>postexec</literal> command. Use with caution.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-171">
+<refmeta>
+<refmiscinfo class="allowable values">fully-qualified Unix shell command</refmiscinfo>
+<refmiscinfo class="default">NULL</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>root preexec = /absolute_ path/command</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets a command to run as root before connecting to the share. See also <literal>preexec</literal>, <literal>postexec</literal>, and <literal>root</literal> <literal>postexec</literal> configuration options. Runs before the user's <literal>preexec</literal> command. Use with caution.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-172">
+<refmeta>
+<refmiscinfo class="allowable values">share, user, server, domain</refmiscinfo>
+<refmiscinfo class="default">share in Samba 1.0, user in 2.0</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] security = value</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets password-security policy. If <literal>security</literal> <literal>=</literal> <literal>share</literal>, services have a shared password, available to everyone. If <literal>security</literal> <literal>=</literal> <literal>user</literal>, users have (Unix) accounts and passwords. If <literal>security</literal> <literal>=</literal> <literal>server</literal>, users have accounts and passwords and a separate machine authenticates them for Samba. If <literal>security</literal> <literal>=</literal> <literal>domain</literal>, full NT-domain authentication is done. See also the <literal>password server</literal> and <literal>encrypted passwords</literal> configuration options.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-173">
+<refmeta>
+<refmiscinfo class="allowable values">string</refmiscinfo>
+<refmiscinfo class="default">Samba <literal>%v</literal> in 2.0</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] server string = text</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets the name that appears beside a server in browse lists. Honors the <literal>%v</literal> (Samba version number) and <literal>%h</literal> (hostname) variables.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-174">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">NO</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>set directory = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Allows DEC Pathworks client to use the <emphasis>set dir</emphasis> command.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-175">
+<refmeta>
+<refmiscinfo class="allowable values">number</refmiscinfo>
+<refmiscinfo class="default">113</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] shared file entries = number</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Obsolete; do not use.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-176">
+<refmeta>
+<refmiscinfo class="allowable values">size in bytes</refmiscinfo>
+<refmiscinfo class="default">102400</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>shared mem size = bytes</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>If compiled with FAST_SHARE_MODES (mmap), sets the shared memory size in bytes. Avoid changing.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-177">
+<refmeta>
+<refmiscinfo class="allowable values">Unix pathname</refmiscinfo>
+<refmiscinfo class="default"><filename>/usr/local/samba/private/smbpasswd</filename></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] smb passwd file = path</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Overrides compiled-in path to password file if <literal>encrypted passwords</literal> <literal>=</literal> <literal>yes</literal>.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-178">
+<refmeta>
+<refmiscinfo class="allowable values">smbrun command</refmiscinfo>
+<refmiscinfo class="default">compiled-in value</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] smbrun = /absolute_ path/command</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Overrides compiled-in path to <filename>smbrun</filename> binary. Avoid changing.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-179">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">YES</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>share modes = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>If set to YES, this option supports Windows-style whole-file (deny mode) locks.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-180">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">NO</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>short preserve case = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>If set to YES, leaves mangled 8.3-style filenames in the case sent by client. If no, it forces the case to that specified by the <literal>default case</literal> option. See also <literal>preserve case</literal>.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-181">
+<refmeta>
+<refmiscinfo class="allowable values">IP address</refmiscinfo>
+<refmiscinfo class="default">NULL</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] socket address = IP address</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets address on which to listen for connections. Default is to listen to all addresses. Used to support multiple virtual interfaces on one server. Highly discouraged.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-182">
+<refmeta>
+<refmiscinfo class="allowable values">list</refmiscinfo>
+<refmiscinfo class="default">NULL</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] socket options = socket option list</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets OS-specific socket options. <literal>SO_KEEPALIVE</literal> has TCP check clients every 4 hours to see if they are still accessible. <literal>TCP_NODELAY</literal> sends even tiny packets to keep delay low. Recommended wherever the operating system supports them. See <link linkend="SAMBA-AP-B">Appendix B</link>, for more information.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-183">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">YES</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] status = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>If YES, logs connections to a file (or shared memory) accessible to <filename>smbstatus</filename>.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-184">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">NO</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>strict sync = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>If set to YES, Samba will synchronize to disk whenever the client sets the sync bit in a packet. If set to NO, Samba flushes data to disk whenever buffers fill. Defaults to NO because Windows 98 Explorer sets the bit (incorrectly) in all packets. Introduced in Samba 1.9.18p10.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-185">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">NO</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>strict locking = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>If set to YES, Samba checks locks on every access, not just on demand and at open time. Not recommended.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-186">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">NO</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] strip dot = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Removes trailing dots from filenames. Use <literal>mangled map</literal> instead.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-187">
+<refmeta>
+<refmiscinfo class="allowable values">number</refmiscinfo>
+<refmiscinfo class="default">1</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] syslog = number</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets number of Samba log messages to send to <filename>syslog</filename>. Higher is more verbose. The <filename>syslog.conf</filename> file must have suitable logging enabled.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-188">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">NO</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] syslog only = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>If set to YES, log only to <emphasis>syslog,</emphasis> not standard Samba log files.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-189">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">NO</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>sync always = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>If set to YES, Samba calls <emphasis>fsync</emphasis>(3) after every write. Avoid except for debugging crashing servers.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-190">
+<refmeta>
+<refmiscinfo class="allowable values">minutes</refmiscinfo>
+<refmiscinfo class="default">0</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] time offset = minutes</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets number of minutes to add to system time zone calculation. Provided to fix a client daylight-savings bug; not recommended.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-191">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">NO</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] time server = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>If YES, <emphasis>nmbd</emphasis> will provide time service to its clients.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-192">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">NO</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>unix password sync = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>If set, will attempt to change the user's Unix password whenever the user changes his or her SMB password. Used to ease synchronization of Unix and Microsoft password databases. Added in Samba 1.9.18p4. See also <literal>passwd chat</literal>.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-193">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">NO</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>unix realname = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>If set, will provide the GCOS field of <filename>/etc/passwd</filename> to the client as the user's full name.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-194">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">NO</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>update encrypted = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Updates the Microsoft-format password file when a user logs in with unencrypted passwords. Provided to ease conversion to encryped passwords for Windows 95/98 and NT. Added in Samba 1.9.18p5.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-195">
+<refmeta>
+<refmiscinfo class="allowable values">comma-separated list of user names</refmiscinfo>
+<refmiscinfo class="default">NULL</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>user = comma-separated list</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Synonym for <literal>username</literal>.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-196">
+<refmeta>
+<refmiscinfo class="allowable values">comma-separated list of user names</refmiscinfo>
+<refmiscinfo class="default">NULL</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>username = comma-separated list</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets a list of users to try to log in as for a share or shares with share-level security. Synonyms are <literal>user</literal> and <literal>users</literal>. Discouraged. Use <literal>NET USE \\</literal><replaceable>server</replaceable><literal>\</literal><replaceable>share </replaceable><literal>%</literal><replaceable>user</replaceable> from the client instead.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-197">
+<refmeta>
+<refmiscinfo class="allowable values">number</refmiscinfo>
+<refmiscinfo class="default">0</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>username level = number</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Number of uppercase letter permutations allowed to match Unix usernames. Workaround for Windows feature (single-case usernames). Use is discouraged.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-198">
+<refmeta>
+<refmiscinfo class="allowable values">pathname</refmiscinfo>
+<refmiscinfo class="default">NULL</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] username map = pathname</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Names a file of Unix-to-Windows name pairs; used to map different spellings of account names and those Windows usernames longer than eight characters.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-199">
+<refmeta>
+<refmiscinfo class="allowable values">list of numeric values</refmiscinfo>
+<refmiscinfo class="default">NULL</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>valid chars = list</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Semi-obsolete. Adds national characters to a character set map. Overridden by <literal>client code page</literal>.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-200">
+<refmeta>
+<refmiscinfo class="allowable values">list of users</refmiscinfo>
+<refmiscinfo class="default">NULL (everyone)</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>valid users = user list</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>List of users that can log in to a share.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-201">
+<refmeta>
+<refmiscinfo class="allowable values">slash-separated list of filenames</refmiscinfo>
+<refmiscinfo class="default">NULL</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>veto files = slash-list</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>List of files not to allow the client to see when listing a directory's contents. See also <literal>delete veto files</literal>.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-202">
+<refmeta>
+<refmiscinfo class="allowable values">slash-separated list of filenames</refmiscinfo>
+<refmiscinfo class="default">NULL</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>veto oplock files = slash-list</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>List of files not to oplock (and cache on clients). See also <literal>oplocks</literal> and <literal>fake oplocks</literal>.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-203">
+<refmeta>
+<refmiscinfo class="allowable values">string</refmiscinfo>
+<refmiscinfo class="default">NULL</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>volume = share name</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets the volume label of a disk share, notably a CD-ROM.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-204">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">YES</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>wide links = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>If set to YES, Samba will follow symlinks out of the current disk share(s). See also the <literal>root dir</literal> and <literal>follow symlinks</literal> options.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-205">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">NO</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] wins proxy = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>If set to YES, <emphasis>nmbd</emphasis> will proxy resolution requests to WINS servers on behalf of old clients, which use broadcasts. WINS server is typically on another subnet.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-206">
+<refmeta>
+<refmiscinfo class="allowable values">hostname</refmiscinfo>
+<refmiscinfo class="default">NULL</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] wins server = host</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets the DNS name or IP address of the WINS server.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-207">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">NO</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] wins support = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>If set to YES, Samba activates WINS service. The <literal>wins server</literal> option must not be set if <literal>wins support = yes</literal>.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-208">
+<refmeta>
+<refmiscinfo class="allowable values">workgroup name</refmiscinfo>
+<refmiscinfo class="default">compiled-in</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] workgroup = name</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Sets the workgroup to which things will be served. Overrides compiled-in value. Choosing a name other than <literal>WORKGROUP</literal> is strongly recommended.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-209">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">YES</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>writable = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Antonym for <literal>read only</literal>; synonym of <literal>write ok</literal>.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-210">
+<refmeta>
+<refmiscinfo class="allowable values">comma-separated list of users</refmiscinfo>
+<refmiscinfo class="default">NULL (everyone)</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>write list = comma-separated list</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>List of users that are given read-write access to a read-only share. See also <literal>read list</literal>.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-211">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">YES</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>write ok = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Synonym of the <literal>writable</literal> configuration option.</para>
+
+</refsynopsisdiv>
+</refentry>
+
+<refentry id="appc-refentry-212">
+<refmeta>
+<refmiscinfo class="allowable values">YES, NO</refmiscinfo>
+<refmiscinfo class="default">YES</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>[global] write raw = boolean</refname>
+</refnamediv>
+<refsynopsisdiv>
+<para>Allows fast streaming writes over TCP, using 64KB buffers. Recommended.</para>
+
+</refsynopsisdiv>
+</refentry>
+</sect1>
+
+
+
+
+
+
+
+
+
+<sect1 role="" label="C.2" id="appc-SECT-2">
+<title>Glossary of Configuration Values</title>
+
+
+<variablelist>
+<varlistentry><term>
+<indexterm id="appc-idx-990655-0"><primary>glossary</primary></indexterm>Address list</term>
+<listitem><para>A space-separated list of IP addresses in ###.###.###.### format.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term>Comma-separated list</term>
+<listitem><para>A list of items separated by commas.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term>Command</term>
+<listitem><para>A Unix command, with full path and parameters.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term>Host list</term>
+<listitem><para>A space-separated list of hosts. Allows IP addresses, address masks, domain names, ALL, and EXCEPT</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term>Interface list</term>
+<listitem><para>A space-separated list of interfaces, in either address/netmask or address/n-bits format. For example, 192.168.2.10/24 or 192.168.2.10/255.255.255.0</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term>Map list</term>
+<listitem><para>A space-separated list of file-remapping strings such as <literal>(*.html</literal> <literal>*.htm)</literal>.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term>Remote list</term>
+<listitem><para>A space-separated list of subnet-broadcast-address/workgroup pairs. For example, 192.168.2.255/SERVERS 192.168.4.255/STAFF.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term>Service (share) list</term>
+<listitem><para>A space-separated list of share names, without the enclosing square brackets.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term>Slash-list</term>
+<listitem><para>A list of filenames, separated by "/" characters to allow embedded spaces. For example, <literal>/.*/fred</literal> <literal>flintstone/*.frk/</literal>.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term>Text</term>
+<listitem><para>One line of text.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term>User list</term>
+<listitem><para>A space-separated list of usernames. In Samba 1.9, <literal>@group-name</literal> will include everyone in Unix group <literal>group-name</literal>. In Samba 2.0, <literal>@group-name</literal> includes whomever is in the NIS netgroup <literal>group_name</literal> if one exists, otherwise whomever is in the Unix group <literal>group_name</literal>. In addition, +<literal>group_name</literal> is a Unix group, &amp;<literal>group_name</literal> is an NIS netgroup, and &amp;+ and +&amp; cause an ordered search of both Unix and NIS groups.</para></listitem>
+</varlistentry>
+</variablelist>
+</sect1>
+
+
+
+
+
+
+
+
+
+<sect1 role="" label="C.3" id="appc-SECT-3">
+<title>Configuration File Variables</title>
+
+
+<para><link linkend="appc-88529">Table 3.1</link> lists of Samba configuration file variables.</para>
+
+
+<table label="C.1" id="appc-88529">
+<title>Variables in Alphabetic Order </title>
+
+<tgroup cols="2">
+<colspec colnum="1" colname="col1"/>
+<colspec colnum="2" colname="col2"/>
+<thead>
+<row>
+
+<entry colname="col1"><para>Name</para></entry>
+
+<entry colname="col2"><para>Meaning</para></entry>
+
+</row>
+
+</thead>
+
+<tbody>
+<row>
+
+<entry colname="col1"><para><literal>%a</literal></para></entry>
+
+<entry colname="col2"><para>Client's architecture (one of Samba, WfWg, WinNT, Win95, or UNKNOWN)</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>%d</literal></para></entry>
+
+<entry colname="col2"><para>Current server process's processID</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>%f</literal></para></entry>
+
+<entry colname="col2"><para>Print-spool file as a relative path (printing only)</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>%f</literal></para></entry>
+
+<entry colname="col2"><para>User from which a message was sent (messages only)</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>%G</literal></para></entry>
+
+<entry colname="col2"><para>Primary group name of <literal>%U</literal> (requested username)</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>%g</literal></para></entry>
+
+<entry colname="col2"><para>Primary group name of <literal>%u</literal> (actual username)</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>%H</literal></para></entry>
+
+<entry colname="col2"><para>Home directory of <literal>%u</literal> (actual username)</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>%h</literal></para></entry>
+
+<entry colname="col2"><para>Samba server's (Internet) hostname</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>%I</literal></para></entry>
+
+<entry colname="col2"><para>Client's IP address</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>%j</literal></para></entry>
+
+<entry colname="col2"><para>Print job number (printing only)</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>%L</literal></para></entry>
+
+<entry colname="col2"><para>Samba server's NetBIOS name (virtual servers have multiple names)</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>%M</literal></para></entry>
+
+<entry colname="col2"><para>Client's (Internet) hostname</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>%m</literal></para></entry>
+
+<entry colname="col2"><para>Client's NetBIOS name</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>%n</literal></para></entry>
+
+<entry colname="col2"><para>New password (password change only)</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>%N</literal></para></entry>
+
+<entry colname="col2"><para>Name of the NIS home directory server (without NIS, same as <literal>%L</literal>)</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>%o</literal></para></entry>
+
+<entry colname="col2"><para>Old password (password change only)</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>%P</literal></para></entry>
+
+<entry colname="col2"><para>Current share's root directory (actual)</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>%p</literal></para></entry>
+
+<entry colname="col2"><para>Current share's root directory (in an NIS homedir map)</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>%p</literal></para></entry>
+
+<entry colname="col2"><para>Print filename (printing only)</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>%R</literal></para></entry>
+
+<entry colname="col2"><para>Protocol level in use (one of CORE, COREPLUS, LANMAN1, LANMAN2, or NT1)</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>%S</literal></para></entry>
+
+<entry colname="col2"><para>Current share's name</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>%s</literal></para></entry>
+
+<entry colname="col2"><para>Filename the message is in (messages only)</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>%s</literal></para></entry>
+
+<entry colname="col2"><para>Print-spool file name (printing only)</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>%T</literal></para></entry>
+
+<entry colname="col2"><para>Current date and time</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>%t</literal></para></entry>
+
+<entry colname="col2"><para>Destination machine (messages only)</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>%u</literal></para></entry>
+
+<entry colname="col2"><para>Current share's username</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>%U</literal></para></entry>
+
+<entry colname="col2"><para>Requested username for current share</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>%v</literal></para></entry>
+
+<entry colname="col2"><para>Samba version</para></entry>
+
+</row>
+
+</tbody>
+</tgroup>
+</table>
+</sect1>
+
+
+
+
+
+
+
+
+</appendix>
diff --git a/docs-xml/using_samba/appd.xml b/docs-xml/using_samba/appd.xml
new file mode 100644 (file)
index 0000000..05a7dfa
--- /dev/null
@@ -0,0 +1,1615 @@
+<appendix label="D" id="SAMBA-AP-D">
+<title>Summary of Samba Daemons and Commands</title>
+
+
+
+
+<para>This appendix is a reference listing of command-line options and other information to help you use the executables that come with Samba distribution.</para>
+
+
+
+
+
+
+
+
+
+
+
+<sect1 role="" label="D.1" id="appd-SECT-1">
+<title>Samba Distribution Programs</title>
+
+
+<para>The following sections provide information about the command-line parameters for Samba programs.</para>
+
+
+<sect2 role="" label="D.1.1" id="appd-SECT-1.1">
+<title>smbd</title>
+
+
+<para>
+<indexterm id="appd-idx-993627-0" class="startofrange"><primary>smbd daemon</primary></indexterm>
+<indexterm id="appd-idx-993627-1" class="startofrange"><primary>daemons</primary></indexterm>The <emphasis>smbd</emphasis> program provides Samba's file and printer services, using one TCP/IP stream and one daemon per client. It is controlled from the default configuration file, <replaceable>samba_dir</replaceable><emphasis>/lib/smb.conf</emphasis>, and can be overridden by command-line options.</para>
+
+
+<para>The configuration file is automatically re-evaluated every minute. If it has changed, most new options are immediately effective. You can force Samba to immediately reload the configuration file if you send a SIGHUP to <emphasis>smbd</emphasis>. Reloading the configuration file, however, will not affect any clients that are already connected. To escape this "grandfather" configuration, a client would need to disconnect and reconnect, or the server itself would have to be restarted, forcing all clients to reconnect.</para>
+
+
+<sect3 role="" label="D.1.1.1" id="appd-SECT-1.1.1">
+<title>Other signals</title>
+
+
+<para>To shut down a <emphasis>smbd</emphasis> process, send it the termination signal SIGTERM (-15) which allows it to die gracefully instead of a SIGKILL (-9). To increment the debug logging level of <emphasis>smbd</emphasis> at runtime, send the program a SIGUSR1 signal. To decrement it at runtime, send the program a SIGUSR2 signal.</para>
+</sect3>
+
+
+
+<sect3 role="" label="D.1.1.2" id="appd-SECT-1.1.2">
+<title>Command-line options</title>
+
+
+<variablelist>
+<varlistentry><term><literal>-D</literal></term>
+<listitem><para>The <emphasis>smbd</emphasis> program is run as a daemon. This is the recommended way to use <emphasis>smbd</emphasis> (it is also the default action). In addition, <emphasis>smbd</emphasis> can also be run from <emphasis>inetd</emphasis>.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-d</literal> <replaceable>debuglevel</replaceable></term>
+<listitem><para>Sets the debug (sometimes called logging) level. The level can range from 0 all the way to 10. Specifying the value on the command line overrides the value specified in the <filename>smb.conf</filename> file. Debug level 0 logs only the most important messages; level 1 is normal; levels 3 and above are primarily for debugging and slow <emphasis>smbd</emphasis> considerably.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-h</literal> </term>
+<listitem><para>Prints command-line usage information for the <filename>smbd</filename> program.</para></listitem>
+</varlistentry>
+</variablelist>
+</sect3>
+
+
+
+<sect3 role="" label="D.1.1.3" id="appd-SECT-1.1.3">
+<title>Testing/debugging options</title>
+
+
+<variablelist>
+<varlistentry><term><literal>-a</literal></term>
+<listitem><para>If this is specified, each new connection to the Samba server will append all logging messages to the log file. This option is the opposite of <literal>-o</literal>, and is the default.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-i</literal> <replaceable>scope</replaceable></term>
+<listitem><para>This sets a NetBIOS scope identifier. Only machines with the same identifier will communicate with the server. The scope identifier was a predecessor to workgroups, and this option is included only for backwards compatibility.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-l</literal> <replaceable>log_file</replaceable></term>
+<listitem><para>Send the log messages to somewhere other than the location compiled in or specified in the <filename>smb.conf</filename> file. The default is often <filename>/usr/local/samba/var/log.smb</filename>, <filename>/usr/samba/var/log.smb,</filename> or <filename>/var/log/log.smb</filename>. The first two are strongly discouraged on Linux, where <filename>/usr</filename> may be a read-only filesystem.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-O</literal> <replaceable>socket_options</replaceable></term>
+<listitem><para>This sets the TCP/IP socket options, using the same parameters as the <literal>socket</literal> <literal>options</literal> configuration option. It is often used for performance tuning and testing.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-o</literal></term>
+<listitem><para>This option is the opposite of <literal>-a</literal>. It causes log files to be overwritten when opened. Using this option saves hunting for the right log entries if you are performing a series of tests and inspecting the log file each time.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-P</literal></term>
+<listitem><para>This option forces <filename>smbd</filename> not to send any network data out. This option is typically used only by Samba developers.<indexterm id="appd-idx-994096-0" class="endofrange" startref="appd-idx-993627-0"/></para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-P</literal></term>
+<listitem><para>This option forces <filename>smbd</filename> not to send any network data out. This option is typically used only by Samba developers.  <indexterm id="appd-idx-994102-0" class="endofrange" startref="appd-idx-993627-0"/></para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-p</literal> <replaceable>port_number</replaceable></term>
+<listitem><para>This sets the TCP/IP port number that the server will accept requests from. Currently, all Microsoft clients send only to the default port: 139.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-s</literal> <replaceable>configuration_file</replaceable></term>
+<listitem><para>Specifies the location of the Samba configuration file. Although the file defaults to <filename>/usr/local/samba/lib/smb.conf</filename>, you can override it here on the command line, typically for debugging.</para></listitem>
+</varlistentry>
+</variablelist>
+</sect3>
+</sect2>
+
+
+
+
+
+<sect2 role="" label="D.1.2" id="appd-SECT-1.2">
+<title>nmbd</title>
+
+
+<para>
+<indexterm id="appd-idx-993645-0" class="startofrange"><primary>nmbd daemon</primary></indexterm>The <emphasis>nmbd</emphasis> program is Samba's NetBIOS name and browsing daemon. It replies to broadcast NetBIOS over TCP/IP (NBT) name-service requests from SMB clients and optionally to Microsoft's Windows Internet Name Service (WINS) requests. Both of these are versions of the name-to-address lookup required by SMB clients. The broadcast version uses UDP/IP broadcast on the local subnet only, while WINS uses TCP/IP, which may be routed. If running as a WINS server, <emphasis>nmbd</emphasis> keeps a current name and address database in the file <filename>wins.dat</filename> in the <literal>samba_dir</literal><filename>/var/locks</filename> directory.</para>
+
+
+<para>An active <emphasis>nmbd</emphasis> program can also respond to browsing protocol requests used by the Windows Network Neighborhood. Browsing is a combined advertising, service announcement, and active directory protocol. This protocol provides a dynamic directory of servers and the disks and printers that the servers are providing. As with WINS, this was initially done by making UDP/IP broadcasts on the local subnet. Now, with the concept of a local master browser, it is done by making TCP/IP connections to a server. If <emphasis>nmbd</emphasis> is acting as a local master browser, it stores the browsing database in the file <filename>browse.dat</filename> in the <literal>samba_dir</literal><filename>/var/locks</filename> directory.</para>
+
+
+<sect3 role="" label="D.1.2.1" id="appd-SECT-1.2.1">
+<title>Signals</title>
+
+
+<para>Like <emphasis>smbd</emphasis>, the <emphasis>nmbd</emphasis> program responds to several Unix signals. Sending <emphasis>nmbd</emphasis> a SIGHUP signal will cause it to dump the names it knows about to the file <filename>namelist.debug</filename> in the <literal>samba_dir</literal>/<emphasis>locks</emphasis> directory and its browsing database to the <filename>browse.dat </filename>file in the same directory. To shut down a <emphasis>nmbd</emphasis> process send it a SIGTERM (-15) signal instead of a SIGKILL (-9) to allow it to die gracefully. You can increment the debug logging level of <emphasis>nmbd</emphasis> by sending it a SIGUSR1 signal; you can decrement it by sending a SIGUSR2 signal.</para>
+</sect3>
+
+
+
+<sect3 role="" label="D.1.2.2" id="appd-SECT-1.2.2">
+<title>Command-line options</title>
+
+
+<variablelist>
+<varlistentry><term><literal>-D</literal></term>
+<listitem><para>Instructs the <filename>nmbd</filename> program to run as a daemon. This is the recommended way to use <filename>nmbd</filename>. In addition, <filename>nmbd</filename> can also be run from <firstterm>inetd</firstterm>.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-d</literal> <replaceable>debuglevel</replaceable></term>
+<listitem><para>Sets the debug (sometimes called logging) level. The level can range from 0, all the way to 10. Specifying the value on the command line overrides the value specified in the <filename>smb.conf</filename> file. Debug level 0 logs only the most important messages; level 1 is normal; level 3 and above are primarily for debugging, and slow <emphasis>nmbd</emphasis> considerably.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-h</literal> </term>
+<listitem><para>Prints command-line usage information for the <filename>nmbd</filename> program (also <literal>-?</literal>).</para></listitem>
+</varlistentry>
+</variablelist>
+</sect3>
+
+
+
+<sect3 role="" label="D.1.2.3" id="appd-SECT-1.2.3">
+<title>Testing/debugging options</title>
+
+
+<variablelist>
+<varlistentry><term><literal>-a</literal></term>
+<listitem><para>If this is specified, each new connection to the Samba server will append all logging messages to the log file. This option is the opposite of <literal>-o</literal>, and is the default.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-H</literal> <replaceable>hosts_  file</replaceable></term>
+<listitem><para>This option loads a standard <emphasis>hosts</emphasis> file for name resolution.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-i</literal> <replaceable>scope</replaceable></term>
+<listitem><para>This sets a NetBIOS scope identifier. Only machines with the same identifier will communicate with the server. The scope identifier was a predecessor to workgroups, and this option is included only for backward<indexterm id="appd-idx-994134-0" class="endofrange" startref="appd-idx-993627-1"/> compatibility.<indexterm id="appd-idx-994135-0" class="endofrange" startref="appd-idx-993645-0"/></para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-l</literal> <replaceable>log_file</replaceable></term>
+<listitem><para>Sends the log messages to somewhere other than the location compiled-in or specified in the <filename>smb.conf</filename> file. The default is often <filename>/usr/local/samba/var/log.nmb</filename>, <filename>/usr/samba/var/log.nmb,</filename> or <filename>/var/log/log.nmb</filename>. The first two are strongly discouraged on Linux, where <filename>/usr</filename> may be a read-only filesystem.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-n</literal> <replaceable>NetBIOS_name</replaceable></term>
+<listitem><para>This option allows you to override the NetBIOS name by which the daemon will advertise itself. Specifying the option on the command line overrides the <literal>netbios</literal> <literal>name</literal> option in the Samba configuration file.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-O</literal> <replaceable>socket_options</replaceable></term>
+<listitem><para>This sets the TCP/IP socket options, using the same parameters as the <literal>socket</literal> <literal>options</literal> configuration option. It is often used for performance tuning and testing.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-o</literal></term>
+<listitem><para>This option is the opposite of <literal>-a</literal>. It causes log files to be overwritten when opened. Using this option saves hunting for the right log entries if you are performing a series of tests and inspecting the log file each time.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-p</literal> <replaceable>port_number</replaceable></term>
+<listitem><para>This sets the UDP/IP port number from which the server will accept requests. Currently, all Microsoft clients send only to the default port: 137.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-s</literal> <replaceable>configuration_file</replaceable></term>
+<listitem><para>Specifies the location of the Samba configuration file. Although the file defaults to <filename>/usr/local/samba/lib/smb.conf</filename>, you can override it here on the command line, typically for debugging.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-v</literal></term>
+<listitem><para>This option prints the current version of Samba.</para></listitem>
+</varlistentry>
+</variablelist>
+</sect3>
+</sect2>
+
+
+
+
+
+<sect2 role="" label="D.1.3" id="appd-SECT-1.3">
+<title>Samba Startup File </title>
+
+
+<para>
+<indexterm id="appd-idx-993647-0"><primary>Samba</primary><secondary>startup file</secondary></indexterm>
+<indexterm id="appd-idx-993647-1"><primary>scripts</primary><secondary sortas="Samba startup file">for Samba startup file</secondary></indexterm>
+<indexterm id="appd-idx-993647-2"><primary>directories</primary><secondary sortas="Samba startup file">for Samba startup file</secondary></indexterm>Samba is normally started by running it from your Unix system's <filename>rc</filename> files at boot time. For systems with a System V-like set of <filename>/etc/rcN.d</filename> directories, this can be done by placing a suitably named script in the <filename>/rc</filename> directory. Usually, the script  starting Samba is called <emphasis>S91samba</emphasis>, while the script stopping or "killing" Samba is called <emphasis>K91samba.</emphasis> On Linux, the usual subdirectory for the scripts is <filename>/etc/rc2.d.</filename> On Solaris, the directory is <filename>/etc/rc3.d</filename>. For machines with <filename>/etc/rc.local</filename> files, you would normally add the following lines to that file:</para>
+
+
+<programlisting>/usr/local/samba/bin/smbd -D
+/usr/local/samba/bin/nmbd -D</programlisting>
+
+
+<para>The following example script supports two extra commands, <literal>status</literal> and <literal>restart</literal>, in addition to the normal <literal>start</literal> and <literal>stop</literal> for System V machines:</para>
+
+
+<programlisting>#!/bin/sh
+#
+# /etc/rc2.d./S91Samba  --manage the SMB server in a System V manner
+#
+OPTS="-D"
+#DEBUG=-d3
+PS="ps  ax"
+SAMBA_DIR=/usr/local/samba
+case "$1" in
+'start')
+       echo "samba "
+       $SAMBA_DIR/bin/smbd $OPTS $DEBUG
+       $SAMBA_DIR/bin/nmbd $OPTS $DEBUG
+       ;;
+'stop')
+       echo "Stopping samba"
+       $PS | awk '/usr.local.samba.bin/ { print $1}' |\
+       xargs kill
+       ;;
+'status')
+       x=`$PS | grep -v grep | grep '$SAMBA_DIR/bin'`
+       if [ ! "$x" ]; then
+               echo "No samba processes running"
+       else
+               echo "  PID TT STAT  TIME COMMAND"
+               echo "$x"
+       fi
+       ;;
+'restart')
+       /etc/rc2.d/S91samba stop
+       /etc/rc2.d/S91samba start
+       /etc/rc2.d/S91samba status
+       ;;
+*)
+       echo "$0: Usage error -- you must say $0 start,  stop, status or restart ."
+       ;;
+esac
+exit</programlisting>
+
+
+<para>You'll need to set the actual paths and <literal>ps</literal> options to suit the machine you're using. In addition, you might want to add additional commands to tell Samba to reload its <filename>smb.conf</filename> file or dump its <emphasis>nmbd</emphasis> tables, depending on your actual needs.</para>
+</sect2>
+
+
+
+
+
+<sect2 role="" label="D.1.4" id="appd-SECT-1.4">
+<title>smbsh</title>
+
+
+<para>The <emphasis>smbsh</emphasis>
+<indexterm id="appd-idx-993744-0"><primary>smbsh program</primary></indexterm> program lets you use a remote Windows share on your Samba server as if the share was a regular Unix directory. When it's run, it provides an extra directory tree under <filename>/smb</filename>. Subdirectories of <filename>/smb</filename> are servers, and subdirectories of the servers are their individual disk and printer shares. Commands run by <emphasis>smbsh</emphasis> treat the <filename>/smb</filename> filesystem as if it were local to Unix. This means that you don't need <emphasis>smbmount</emphasis> in your kernel to mount Windows filesystems the way you mount with NFS filesystems. However, you do need to configure Samba with the <literal>--with-smbwrappers</literal> option to enable <filename>smbsh</filename>.</para>
+
+
+<sect3 role="" label="D.1.4.1" id="appd-SECT-1.4.1">
+<title>Options</title>
+
+
+<variablelist>
+<varlistentry><term><literal>-d</literal> debuglevel</term>
+<listitem><para>Sets the debug (sometimes called logging) level. The level can range from 0, the default, all the way to 10. Debug level 0 logs only the most important messages; level 1 is normal; level 3 and above are primarily for debugging, and slow <emphasis>smbsh</emphasis> considerably.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-l</literal> <replaceable>logfile</replaceable></term>
+<listitem><para>Sets the name of the logfile to use.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-P</literal> <replaceable>prefix</replaceable></term>
+<listitem><para>Sets the root directory to mount the SMB filesystem. The default is <filename>/smb</filename>.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-R</literal> <replaceable>resolve order</replaceable></term>
+<listitem><para>Sets the resolve order of the name servers. This option is similar to the <literal>resolve order</literal> configuration option, and can take any of the four parameters, <literal>lmhosts</literal>, <literal>host</literal>, <literal>wins</literal>, and <literal>bcast</literal>, in any order.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-U</literal> <replaceable>user</replaceable></term>
+<listitem><para>Supports <replaceable>user%password.</replaceable></para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-W</literal> <replaceable>workgroup</replaceable></term>
+<listitem><para>Sets the NetBIOS workgroup to which the client will connect.</para></listitem>
+</varlistentry>
+</variablelist>
+</sect3>
+</sect2>
+
+
+
+
+
+<sect2 role="" label="D.1.5" id="appd-SECT-1.5">
+<title>smbclient</title>
+
+
+<para>The <emphasis>smbclient</emphasis>
+<indexterm id="appd-idx-993745-0" class="startofrange"><primary>smbclient program</primary></indexterm>
+<indexterm id="appd-idx-993745-1" class="startofrange"><primary>testing</primary><secondary>smbclient program</secondary></indexterm> program is the maid-of-all-work of the Samba suite. Initially intended as a testing tool, it has become a full command-line Unix client, with an FTP-like interactive client. Some of its options are still used for testing and tuning, and it makes a simple tool for ensuring that Samba is running on a server.</para>
+
+
+<para>It's convenient to look at <emphasis>smbclient</emphasis> as a suite of programs:</para>
+
+
+<itemizedlist>
+<listitem><para>FTP-like interactive file transfer program</para></listitem>
+<listitem><para>Interactive printing program</para></listitem>
+<listitem><para>Interactive tar program</para></listitem>
+<listitem><para>Command-line message program</para></listitem>
+<listitem><para>Command-line <emphasis>tar</emphasis> program (but see <emphasis>smbtar</emphasis> later)</para></listitem>
+<listitem><para>"What services do you have" query program</para></listitem>
+<listitem><para>Command-line debugging program</para></listitem>
+</itemizedlist>
+
+<sect3 role="" label="D.1.5.1" id="appd-SECT-1.5.1">
+<title>General command-line options</title>
+
+
+<para>The program has the usual set of <emphasis>smbd</emphasis>-like options, which apply to all the interactive and command-line use. The syntax is:</para>
+
+
+<programlisting>smbclient //<replaceable>server_name</replaceable>/<replaceable>share_name</replaceable> [<replaceable>password</replaceable>] [-<replaceable>options</replaceable>]</programlisting>
+
+
+<para>Here is an explanation of each of the command-line options:</para>
+
+
+<variablelist>
+<varlistentry><term><literal>-d</literal> <replaceable>debug_level</replaceable></term>
+<listitem><para>Sets the debug (logging) level, from 0 to 10, with <literal>A</literal> for all. Overrides the value in <filename>smb.conf</filename>. Debug level 0 logs only the most important messages; level 1 is normal; debug level 3 and above are for debugging, and slow <emphasis>smbclient</emphasis> considerably.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-h</literal></term>
+<listitem><para>Prints the command-line help information (usage) for smbclient.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-n</literal> <replaceable>NetBIOS_name</replaceable></term>
+<listitem><para>Allows you to override the NetBIOS name by which the program will advertise itself.</para></listitem>
+</varlistentry>
+</variablelist>
+</sect3>
+
+
+
+<sect3 role="" label="D.1.5.2" id="appd-SECT-1.5.2">
+<title>Smbclient operations</title>
+
+
+<para>Running <literal>smbclient</literal> <literal>//</literal><replaceable>server_name</replaceable><literal>/</literal><replaceable>share</replaceable> will cause it to prompt you for a username and password. If the login is successful, it will connect to the share and give you a prompt much like an FTP prompt (the backslash in the prompt will be replaced by the current directory within the share as you move around the filesystem):</para>
+
+
+<programlisting>smb:\&gt;</programlisting>
+
+
+<para>
+<indexterm id="appd-idx-994034-0" class="startofrange"><primary>commands for Samba</primary></indexterm>From this command line, you can use several FTP-like commands, as listed in <link linkend="appd-89417">Table 4.1</link>. Arguments in square brackets are optional.</para>
+
+
+<table label="D.1" id="appd-89417">
+<title>smbclient Commands </title>
+
+<tgroup cols="2">
+<colspec colnum="1" colname="col1"/>
+<colspec colnum="2" colname="col2"/>
+<thead>
+<row>
+
+<entry colname="col1"><para>Command</para></entry>
+
+<entry colname="col2"><para>Description</para></entry>
+
+</row>
+
+</thead>
+
+<tbody>
+<row>
+
+<entry colname="col1"><para><literal>?</literal> <replaceable>command</replaceable></para></entry>
+
+<entry colname="col2"><para>Provides list of commands or help on specified command.</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>help</literal> [<replaceable>command</replaceable>]</para></entry>
+
+<entry colname="col2"><para>Provides list of commands or help on specified command.</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>!</literal> [<replaceable>command</replaceable>]</para></entry>
+
+<entry colname="col2"><para>If a command is specified, it will be run in a local shell. If not, you will be placed into a local shell on the client.</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>dir</literal> [<replaceable>filename</replaceable>]</para></entry>
+
+<entry colname="col2"><para>Displays any files matching <replaceable>filename</replaceable> in the current directory on the server, or all files if <replaceable>filename</replaceable> is omitted.</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>ls</literal> [<replaceable>filename</replaceable>]</para></entry>
+
+<entry colname="col2"><para>Displays any files matching <replaceable>filename</replaceable> in the current directory on the server, or all files if <replaceable>filename</replaceable> is omitted.</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>cd</literal> [<replaceable>directory</replaceable>]</para></entry>
+
+<entry colname="col2"><para>If <replaceable>directory</replaceable> is specified, changes to the specified directory on the remote server. If not, reports the current directory on the remote machine.</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>lcd</literal> [<replaceable>director</replaceable><literal>y</literal>]</para></entry>
+
+<entry colname="col2"><para>If <replaceable>directory</replaceable> is specified, the current directory on the local machine will be changed. If not, the name of the current directory on the local machine will be reported.</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>get</literal> <emphasis>remotefile</emphasis> [<replaceable>localfile</replaceable>]</para></entry>
+
+<entry colname="col2"><para>Copies the file <replaceable>remotefile</replaceable> to the local machine. If a <replaceable>localfile</replaceable> is specified, uses that name to copy the file to. Treats the file as binary; does <emphasis>not</emphasis> do LF to CR/LF conversions.</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>put</literal> <emphasis>localfile</emphasis> [<replaceable>remotefile</replaceable>]</para></entry>
+
+<entry colname="col2"><para>Copies <replaceable>localfile</replaceable> to the remote machine. If a <replaceable>remotefile</replaceable> is specified, uses that as the name to copy to on the remote server. Treats the file as binary; does <emphasis>not</emphasis> do LF to CR/LF conversions.</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>mget</literal> <replaceable>pattern</replaceable></para></entry>
+
+<entry colname="col2"><para>Gets all files matching <replaceable>pattern</replaceable> from the remote machine.</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>mput</literal><replaceable> pattern</replaceable></para></entry>
+
+<entry colname="col2"><para>Places all local files matching <replaceable>pattern</replaceable> on the remote machine.</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>prompt</literal></para></entry>
+
+<entry colname="col2"><para>Toggles interactive prompting on and off for <literal>mget</literal> and <literal>mput</literal>.</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>lowercase ON </literal>(or<literal> OFF </literal>)</para></entry>
+
+<entry colname="col2"><para>If lowercase is on, <emphasis>smbclient</emphasis> will convert filenames to lowercase during an <literal>mget</literal> or <literal>get</literal> (but not a <literal>mput</literal> or <literal>put</literal>).</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>del</literal> <replaceable>filename</replaceable></para></entry>
+
+<entry colname="col2"><para>Delete a file on the remote machine.</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>md</literal> <replaceable>directory</replaceable></para></entry>
+
+<entry colname="col2"><para>Create a directory on the remote machine.</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>mkdir</literal> <replaceable>directory</replaceable></para></entry>
+
+<entry colname="col2"><para>Create a directory on the remote machine.</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>rd</literal> <replaceable>directory</replaceable></para></entry>
+
+<entry colname="col2"><para>Remove the specified directory on the remote machine.</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>rmdir</literal> <replaceable>directory</replaceable></para></entry>
+
+<entry colname="col2"><para>Remove the specified directory on the remote machine.</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>setmode</literal> <replaceable>filename</replaceable> <literal>[+|-]rsha</literal></para></entry>
+
+<entry colname="col2"><para>Set DOS filesystem attribute bits, using Unix-like modes. <literal>r</literal> is read-only, <literal>s</literal> is system, <literal>h</literal> is hidden, and <literal>a</literal> is archive.</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>exit</literal></para></entry>
+
+<entry colname="col2"><para>Exits <emphasis>smbclient</emphasis>.</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>quit</literal></para></entry>
+
+<entry colname="col2"><para>Exits <emphasis>smbclient</emphasis>.</para></entry>
+
+</row>
+
+</tbody>
+</tgroup>
+</table>
+
+
+<para>There are also mask and recursive commands for large copies; see the <filename>smbclient</filename> manual page for details on how to use these. With the exception of mask, recursive, and the lack of an ASCII transfer mode, <emphasis>smbclient</emphasis> works exactly the same as FTP. Note that because it does binary transfers, Windows files copied to Unix will have lines ending in carriage-return and linefeed (<literal>\r\n</literal>), not Unix's linefeed (<literal>\n</literal>).</para>
+</sect3>
+
+
+
+<sect3 role="" label="D.1.5.3" id="appd-SECT-1.5.3">
+<title>Printing commands</title>
+
+
+<para>The <emphasis>smbclient</emphasis> program can also be used for access to a printer by connecting to a print share. Once connected, the commands shown in <link linkend="appd-39300">Table 4.2</link> can be used to print.</para>
+
+
+<table label="D.2" id="appd-39300">
+<title>smbclient Printing Commands </title>
+
+<tgroup cols="2">
+<colspec colnum="1" colname="col1"/>
+<colspec colnum="2" colname="col2"/>
+<thead>
+<row>
+
+<entry colname="col1"><para>Command</para></entry>
+
+<entry colname="col2"><para>Description</para></entry>
+
+</row>
+
+</thead>
+
+<tbody>
+<row>
+
+<entry colname="col1"><para><literal>print</literal><replaceable> filename</replaceable></para></entry>
+
+<entry colname="col2"><para>Prints the file by copying it from the local machine to the remote one and then submitting it as a print job there.</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>printmode</literal> <replaceable>text </replaceable>|<replaceable> graphics</replaceable></para></entry>
+
+<entry colname="col2"><para>Instructs the server that the following files will be plain text (ASCII) or the binary graphics format that the printer requires. It's up to the user to ensure that the file is indeed the right kind.</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>queue</literal></para></entry>
+
+<entry colname="col2"><para>Displays the queue for the print share you're connected to, showing job ID, name, size, and status.</para></entry>
+
+</row>
+
+</tbody>
+</tgroup>
+</table>
+
+
+<para>Finally, to print from the <emphasis>smbclient</emphasis>, use the <literal>-c</literal> option:</para>
+
+
+<programlisting>cat <replaceable>printfile</replaceable> | smbclient //<replaceable>server</replaceable>/<replaceable>printer_name</replaceable>  -c "print -"</programlisting>
+</sect3>
+
+
+
+<sect3 role="" label="D.1.5.4" id="appd-SECT-1.5.4">
+<title>Tar commands</title>
+
+
+<para><emphasis>smbclient</emphasis> can tar up files from a file share. This is normally done from the command line using the <emphasis>smbtar</emphasis> command, but the commands shown in <link linkend="appd-54517">Table 4.3</link> are also available interactively.</para>
+
+
+<table label="D.3" id="appd-54517">
+<title>smbclient Printing Commands </title>
+
+<tgroup cols="2">
+<colspec colnum="1" colname="col1"/>
+<colspec colnum="2" colname="col2"/>
+<thead>
+<row>
+
+<entry colname="col1"><para>Command</para></entry>
+
+<entry colname="col2"><para>Description</para></entry>
+
+</row>
+
+</thead>
+
+<tbody>
+<row>
+
+<entry colname="col1"><para><literal>tar c|x[IXbgNa]</literal> <replaceable>operands</replaceable></para></entry>
+
+<entry colname="col2"><para>Performs a creation or extraction <emphasis>tar</emphasis> similar to the command-line program.</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>blocksize</literal> <replaceable>size</replaceable></para></entry>
+
+<entry colname="col2"><para>Sets the block size to be used by <emphasis>tar</emphasis>, in 512-byte blocks.</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>noreset</literal></para></entry>
+
+<entry colname="col2"><para>Makes <emphasis>tar</emphasis> pay attention to DOS archive bit for all following commands. In <literal>full</literal> mode (the default), <emphasis>tar</emphasis> will back up everything. In <literal>inc</literal> (incremental) mode, <emphasis>tar</emphasis> will back up only those files with the archive bit set. In <literal>reset</literal> mode, <emphasis>tar</emphasis> will reset the archive bit on all files it backs up. (this requires the share to be writable), and in <literal>noreset</literal> mode the archive bit will not be reset even after the file has been backed up.</para></entry>
+
+</row>
+
+</tbody>
+</tgroup>
+</table>
+</sect3>
+
+
+
+<sect3 role="" label="D.1.5.5" id="appd-SECT-1.5.5">
+<title>Command-line message program options</title>
+
+
+<variablelist>
+<varlistentry><term><literal>-M</literal> <replaceable>NetBIOS_machine_name</replaceable></term>
+<listitem><para>This option allows you to send immediate messages using the WinPopup protocol to another computer. Once a connection is established, you can type your message, pressing control-D to end. If WinPopup is not running on the receiving machine, the program returns an error.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-U</literal> <replaceable>user</replaceable> </term>
+<listitem><para>This<replaceable> </replaceable>option allows you to indirectly control the FROM part of the message.</para></listitem>
+</varlistentry>
+</variablelist>
+</sect3>
+
+
+
+<sect3 role="" label="D.1.5.6" id="appd-SECT-1.5.6">
+<title>Command-line tar program options</title>
+
+
+<para>The <literal>-T</literal> (tar), <literal>-D</literal> (starting directory), and <literal>-c</literal> (command) options are used together to tar up files interactively. This is better done with <filename>smbtar</filename>, which will be discussed shortly. We don't recommend using <emphasis>smbclient</emphasis> directly as a <emphasis>tar</emphasis> program.</para>
+
+
+<variablelist>
+<varlistentry><term><literal>-D</literal> <replaceable>initial_directory</replaceable></term>
+<listitem><para>Changes to initial directory before starting.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-c</literal> <replaceable>command_string</replaceable> </term>
+<listitem><para>Passes a command string to the <emphasis>smbclient</emphasis> command interpreter, which treats it as a semicolon-separated list of commands to be executed. This is handy to say things such as <literal>tarmode</literal> <literal>inc</literal>, for example, which forces <literal>smbclient</literal> <literal>-T</literal> to back up only files with the archive bit set.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-T</literal> <replaceable>command filename</replaceable></term>
+<listitem><para>Runs the <emphasis>tar</emphasis> driver, which is <emphasis>gtar</emphasis> compatible. The two main commands are: <literal>c</literal> (create) and <literal>x</literal> (extract), which may be followed by any of:</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>a</literal></term>
+<listitem><para>Resets archive bits once files are saved.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>b</literal> <replaceable>size</replaceable></term>
+<listitem><para>Sets blocksize in 512-byte units.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>g</literal></term>
+<listitem><para>Backs up only files with the archive bit set.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>I</literal> <replaceable>file</replaceable></term>
+<listitem><para>Includes files and directories (this is the default). Does not do pattern-matching.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>N</literal> <replaceable>filename</replaceable></term>
+<listitem><para>Backs up only those files newer than <replaceable>filename.</replaceable></para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>q</literal></term>
+<listitem><para>Does not produce diagnostics.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>X</literal> <replaceable>file</replaceable></term>
+<listitem><para>Excludes files.</para></listitem>
+</varlistentry>
+</variablelist>
+</sect3>
+
+
+
+<sect3 role="" label="D.1.5.7" id="appd-SECT-1.5.7">
+<title>Command-line query program</title>
+
+
+<para>If <filename>smbclient</filename> is run as:</para>
+
+
+<programlisting>smbclient -L <replaceable>server_name</replaceable></programlisting>
+
+
+<para>it will list the shares and other services that machine provides. This is handy if you don't have <filename>smbwrappers</filename>. It can also be helpful as a testing program in its own right.</para>
+</sect3>
+
+
+
+<sect3 role="" label="D.1.5.8" id="appd-SECT-1.5.8">
+<title>Command-line debugging /diagnostic program options</title>
+
+
+<para>Any of the various modes of operation of <emphasis>smbclient</emphasis> can be used with the debugging and testing command-line options:</para>
+
+
+<variablelist>
+<varlistentry><term><literal>-B</literal> <replaceable>IP_addr</replaceable></term>
+<listitem><para>Sets the broadcast address.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-d</literal> <replaceable>debug_level</replaceable></term>
+<listitem><para>Sets the debug (sometimes called logging) level. The level can range from 0 all the way to 10. In addition, you can specify <literal>A</literal> for all debugging options. Debug level 0 logs only the most important messages; level 1 is normal; level 3 and above are primarily for debugging and slow operations considerably.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-E</literal></term>
+<listitem><para>Sends all messages to stderr instead of stdout.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-I</literal> <replaceable>IP_address</replaceable> </term>
+<listitem><para>Sets the IP address of the server to which it connects.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-i</literal> <replaceable>scope</replaceable></term>
+<listitem><para>This sets a NetBIOS scope identifier. Only machines with the same identifier will communicate with the server. The scope identifier was a predecessor to workgroups, and this option is included only for backward compatibility.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-l</literal> <replaceable>log_file</replaceable></term>
+<listitem><para>Sends the log messages to the specified file.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-N</literal></term>
+<listitem><para>Suppresses the password prompt. Unless a password is specified on the command line or this parameter is specified, the client will prompt for a password.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-n</literal> <replaceable>NetBIOS_name</replaceable></term>
+<listitem><para>This option allows you to override the NetBIOS name by which the daemon will advertise itself.</para></listitem>
+</varlistentry>
+</variablelist>
+
+
+<variablelist>
+<varlistentry><term><literal>-O</literal> <replaceable>socket_options</replaceable></term>
+<listitem><para>Sets the TCP/IP socket options using the same parameters as the <literal>socket</literal> <literal>options</literal> configuration option. It is often used for performance tuning and testing.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-p</literal> <replaceable>port_number</replaceable></term>
+<listitem><para>Sets the port number from which the client will accept requests.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-R</literal> <replaceable>resolve_order</replaceable></term>
+<listitem><para>Sets the resolve order of the name servers. This option is similar to the <literal>resolve</literal> <literal>order</literal> configuration option, and can take any of the four parameters, <literal>lmhosts</literal>, <literal>host</literal>, <literal>wins</literal>, and <literal>bcast</literal>, in any order .</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-s</literal> <replaceable>configuration_file</replaceable></term>
+<listitem><para>Specifies the location of the Samba configuration file. Used for debugging.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-t</literal> <replaceable>terminal_code</replaceable></term>
+<listitem><para>Sets the terminal code for Asian languages.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-U</literal> <replaceable>username</replaceable></term>
+<listitem><para>Sets the username and optionally password (e.g., <literal>-U</literal> <literal>fred%secret</literal>).</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-W</literal> <replaceable>workgroup</replaceable></term>
+<listitem><para>Specifies the workgroup that you want the client to connect as.</para></listitem>
+</varlistentry>
+</variablelist>
+
+
+<para>If you want to test a particular name service, run <emphasis>smbclient</emphasis> with <literal>-R</literal> and just the name of the service. This will force <emphasis>smbclient</emphasis> to use only the service you gave.<emphasis></emphasis>
+<indexterm id="appd-idx-993802-0" class="endofrange" startref="appd-idx-993745-0"/>
+<indexterm id="appd-idx-993802-1" class="endofrange" startref="appd-idx-993745-1"/></para>
+</sect3>
+</sect2>
+
+
+
+
+
+<sect2 role="" label="D.1.6" id="appd-SECT-1.6">
+<title>smbstatus</title>
+
+
+<para>The <filename>smbstatus</filename>
+<indexterm id="appd-idx-993754-0"><primary>smbstatus program</primary></indexterm>
+<indexterm id="appd-idx-993754-1"><primary>connections</primary><secondary>current, list of</secondary></indexterm> program lists the current connections on a Samba server. There are three separate sections. The first section lists various shares that are in use by specific users. The second section lists the locked files that Samba currently has on all of its shares. Finally, the third section lists the amount of memory usage for each of the shares. For example:</para>
+
+
+<programlisting># <emphasis role="bold">smbstatus</emphasis>
+Samba version 2.0.3
+Service      uid      gid      pid     machine
+----------------------------------------------
+network      davecb   davecb   7470   phoenix  (192.168.220.101) Sun May 16
+network      davecb   davecb   7589   chimaera (192.168.220.102) Sun May 16
+
+Locked files:
+Pid    DenyMode   R/W        Oplock           Name
+--------------------------------------------------
+7589   DENY_NONE  RDONLY   EXCLUSIVE+BATCH  /home/samba/quicken/inet/common/system/help.bmp
+Sun May 16 21:23:40 1999
+7470   DENY_WRITE RDONLY   NONE             /home/samba/word/office/findfast.exe
+Sun May 16 20:51:08 1999
+7589   DENY_WRITE RDONLY   EXCLUSIVE+BATCH  /home/samba/quicken/lfbmp70n.dll
+Sun May 16 21:23:39 1999
+7589   DENY_WRITE RDWR     EXCLUSIVE+BATCH  /home/samba/quicken/inet/qdata/runtime.dat
+Sun May 16 21:23:41 1999
+7470   DENY_WRITE RDONLY   EXCLUSIVE+BATCH  /home/samba/word/office/osa.exe
+Sun May 16 20:51:09 1999
+7589   DENY_WRITE RDONLY   NONE             /home/samba/quicken/qversion.dll
+Sun May 16 21:20:33 1999
+7470   DENY_WRITE RDONLY   NONE             /home/samba/quicken/qversion.dll
+Sun May 16 20:51:11 1999
+
+Share mode memory usage (bytes):
+   1043432(99%) free + 4312(0%) used + 832(0%) overhead = 1048576(100%) total</programlisting>
+
+
+<sect3 role="" label="D.1.6.1" id="appd-SECT-1.6.1">
+<title>Options</title>
+
+
+<variablelist>
+<varlistentry><term><literal>-b</literal></term>
+<listitem><para>Forces <filename>smbstatus</filename> to produce brief output. This includes the version of Samba and auditing information about the users that have logged into the server.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-d</literal></term>
+<listitem><para>Gives verbose output, including each of the three reporting sections listed in the previous example. This is the default.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-L</literal></term>
+<listitem><para>Forces <filename>smbstatus</filename> to print only the current file locks it has. This corresponds to the second section in a verbose output.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-p</literal></term>
+<listitem><para>Prints a list of <filename>smbd</filename> process IDs only. This is often used for scripts.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-S</literal></term>
+<listitem><para>Prints only a list of shares and their connections. This corresponds to the first section in a verbose output.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-s</literal> <replaceable>configuration_file</replaceable></term>
+<listitem><para>Sets the Samba configuration file to use when processing this command.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-u</literal> <replaceable>username</replaceable></term>
+<listitem><para>Limits the <filename>smbstatus</filename> report to the activity of a single user.</para></listitem>
+</varlistentry>
+</variablelist>
+</sect3>
+</sect2>
+
+
+
+
+
+<sect2 role="" label="D.1.7" id="appd-SECT-1.7">
+<title>smbtar</title>
+
+
+<para>The <emphasis>smbtar</emphasis>
+<indexterm id="appd-idx-993755-0"><primary>smbtar program</primary><secondary>tar operations and</secondary></indexterm>
+<indexterm id="appd-idx-993755-1"><primary>tar operations</primary></indexterm> program is a shell script on top of <emphasis>smbclient</emphasis> that gives the program more intelligible options when doing tar operations. Functionally, it is equivalent to the Unix <emphasis>tar</emphasis> program.</para>
+
+
+<sect3 role="" label="D.1.7.1" id="appd-SECT-1.7.1">
+<title>Options</title>
+
+
+<variablelist>
+<varlistentry><term><literal>-a</literal></term>
+<listitem><para>Resets the archive bit mode</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-b</literal> <replaceable>blocksize</replaceable></term>
+<listitem><para>Blocking size. Defaults to 20.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-d</literal> <replaceable>directory</replaceable></term>
+<listitem><para>Changes to initial directory before restoring or backing up files.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-i</literal></term>
+<listitem><para>Incremental mode; tar files are backed up only if they have the DOS archive bit set. The archive bit is reset after each file is read.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-l</literal> <replaceable>log_level</replaceable></term>
+<listitem><para> Sets the logging level.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-N</literal> <replaceable>filename</replaceable></term>
+<listitem><para>Backs up only the files newer than the last modification date of <replaceable>filename</replaceable>. For incremental backups.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-p</literal> <replaceable>password</replaceable></term>
+<listitem><para>Specifies the password to use to access a share.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-r</literal></term>
+<listitem><para>Restores files to the share from the tar file.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-s</literal> <replaceable>server</replaceable></term>
+<listitem><para>Specifies the SMB/CIFS server in which the share resides.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-t</literal> <replaceable>tape</replaceable></term>
+<listitem><para>Tape device or file. Default is the value of the environment variable <literal>$TAPE</literal>, or <emphasis>tar.out</emphasis> if <literal>$TAPE</literal> isn't set.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-u</literal> <replaceable>user</replaceable></term>
+<listitem><para>Specifies the user to connect to the share as. You can specify the password as well, in the format <replaceable>username</replaceable><literal>%</literal><replaceable>password</replaceable>.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-v</literal></term>
+<listitem><para>Specifies the use of verbose mode.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-X</literal> <replaceable>file</replaceable></term>
+<listitem><para>Tells <firstterm>smbtar</firstterm> to exclude the specified file from the <emphasis>tar</emphasis> create or restore.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-x</literal> <replaceable>share</replaceable></term>
+<listitem><para>States the share name on the server to connect to. The default is <literal>backup</literal>, which is a common share name to perform backups with.</para></listitem>
+</varlistentry>
+</variablelist>
+
+
+<para>For example, a trivial backup command to archive the data for user <literal>sue</literal> is:</para>
+
+
+<programlisting># <emphasis role="bold">smbtar -s pc_name -x sue -u sue -p secret -t sue.tar</emphasis></programlisting>
+</sect3>
+</sect2>
+
+
+
+
+
+<sect2 role="" label="D.1.8" id="appd-SECT-1.8">
+<title>nmblookup</title>
+
+
+<para>The <filename>nmblookup</filename>
+<indexterm id="appd-idx-993756-0"><primary>nmblookup program</primary></indexterm>
+<indexterm id="appd-idx-993756-1"><primary>name services</primary><secondary>nmblookup program</secondary></indexterm> program is a client program that exercises the NetBIOS-over-UDP/IP name service for resolving NBT machine names into IP addresses. The command works by broadcasting its queries on the local subnet until a machine with that name responds. You can think of it as a Windows <emphasis>nslookup(1)</emphasis> or <emphasis>dig(1)</emphasis>. This is useful for looking up both normal NetBIOS names, and the odd ones like <literal>_ _MSBROWSE_ _</literal> that the Windows name services use to provide directory-like services. If you wish to query for a particular type of NetBIOS name, add the NetBIOS <literal>&lt;type&gt;</literal> to the end of the name.</para>
+
+
+<para>The command line is:</para>
+
+
+<programlisting>nmblookup [-options] <replaceable>name</replaceable></programlisting>
+
+
+<para>The options supported are:</para>
+
+
+<variablelist>
+<varlistentry><term><literal>-A</literal></term>
+<listitem><para>Interprets <replaceable>name</replaceable> as an IP address and do a node-status query on this address.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-B</literal> <replaceable>broadcast _address</replaceable></term>
+<listitem><para>Sends the query to the given broadcast address. The default is to send the query to the broadcast address of the primary network interface.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-d</literal> <replaceable>debuglevel</replaceable></term>
+<listitem><para>Sets the debug (sometimes called logging) level. The level can range from 0 all the way to 10. Debug level 0 logs only the most important messages; level 1 is normal; level 3 and above are primarily for debugging and slow the program considerably.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-h</literal></term>
+<listitem><para>Prints command-line usage information for the program.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-i</literal> <replaceable>scope</replaceable></term>
+<listitem><para>Sets a NetBIOS scope identifier. Only machines with the same identifier will communicate with the server. The scope identifier was a predecessor to workgroups, and this option is included only for backward compatibility.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-M</literal></term>
+<listitem><para>Searches for a local master browser. This is done with a broadcast searching for a machine that will respond to the special name <literal>_ _MSBROWSE_ _ </literal>, and then asking that machine for information, instead of broadcasting the query itself.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-R</literal></term>
+<listitem><para>Sets the recursion desired bit in the packet. This will cause the machine that responds to try to do a WINS lookup and return the address and any other information the WINS server has saved.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-r</literal></term>
+<listitem><para>Use the root port of 137 for Windows 95 machines.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-S</literal></term>
+<listitem><para>Once the name query has returned an IP address, does a node status query as well. This returns all the resource types that the machine knows about, with their numeric attributes. For example:</para></listitem>
+</varlistentry>
+</variablelist>
+
+
+<programlisting>% <emphasis role="bold">nmblookup -d 4 -S elsbeth</emphasis>
+received 6 names
+      ELSBETH                &lt;00&gt; - &lt;GROUP&gt; B &lt;ACTIVE&gt;
+      ELSBETH                &lt;03&gt; -         B &lt;ACTIVE&gt;
+      ELSBETH                &lt;1d&gt; -         B &lt;ACTIVE&gt;
+      ELSBETH                &lt;1e&gt; - &lt;GROUP&gt; B &lt;ACTIVE&gt;
+      ELSBETH                &lt;20&gt; -         B &lt;ACTIVE&gt;
+      .._ _MSBROWSE_   _..   &lt;01&gt; - &lt;GROUP&gt; B &lt;ACTIVE&gt;</programlisting>
+
+
+<variablelist>
+<varlistentry><term><literal>-s</literal> <replaceable>configuration_file</replaceable></term>
+<listitem><para>Specifies the location of the Samba configuration file. Although the file defaults to <filename>/usr/local/samba/lib/smb.conf</filename>, you can override it here on the command-line, normally for debugging.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-T</literal></term>
+<listitem><para>This option can be used to translate IP addresses into resolved names.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-U</literal> <replaceable>unicast_address</replaceable></term>
+<listitem><para>Performs a unicast query to the specified address. Used with <literal>-R</literal> to query WINS servers.</para></listitem>
+</varlistentry>
+</variablelist>
+
+
+<para>Note that there is no workgroup option for <emphasis>nmblookup</emphasis> ; you can get around this by putting <literal>workgroup</literal> <literal>=</literal> <replaceable>workgroup_name </replaceable>in a file and passing it to <emphasis>nmblookup</emphasis> with the <literal>-s</literal> <replaceable>smb.conf_file</replaceable> option.</para>
+</sect2>
+
+
+
+
+
+<sect2 role="" label="D.1.9" id="appd-SECT-1.9">
+<title>smbpasswd</title>
+
+
+<para>The <emphasis>smbpasswd</emphasis>
+<indexterm id="appd-idx-993757-0"><primary>smbpasswd program</primary></indexterm>
+<indexterm id="appd-idx-993757-1"><primary>passwords</primary><secondary>smbpasswd program </secondary></indexterm> password has two distinct sets of functions. When run by users, it changes their encrypted passwords. When run by <literal>root</literal>, it updates the encrypted password file. When run by an ordinary user with no options, it connects to the primary domain controller and changes his or her Windows password.</para>
+
+
+<para>The program will fail if <emphasis>smbd</emphasis> is not operating, if the <literal>hosts</literal> <literal>allow</literal> or <literal>hosts</literal> <literal>deny</literal> configuration options will not permit connections from localhost (IP address 127.0.0.1), or the <literal>encrypted</literal> <literal>passwords</literal> <literal>=</literal> <literal>no</literal> option is set.</para>
+
+
+<sect3 role="" label="D.1.9.1" id="appd-SECT-1.9.1">
+<title>Regular user options</title>
+
+
+<variablelist>
+<varlistentry><term><literal>-D</literal> <replaceable>debug_level</replaceable></term>
+<listitem><para>Sets the debug (also called logging) level. The level can range from 0 to 10. Debug level 0 logs only the most important messages; level 1 is normal; level 3 and above are primarily for debugging and slow the program considerably.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-h</literal></term>
+<listitem><para>Prints command-line usage information for the program.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-r</literal> <replaceable>remote_machine_name</replaceable></term>
+<listitem><para>Specifies on which machine the password should change. The remote machine must be a primary domain controller (PDC).</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-R</literal> <replaceable>resolve_order</replaceable></term>
+<listitem><para>Sets the resolve order of the name servers. This option is similar to the <literal>resolve</literal> <literal>order</literal> configuration option, and can take any of the four parameters, <literal>lmhosts</literal>, <literal>host</literal>, <literal>wins</literal>, and <literal>bcast</literal>,<literal> </literal>in any order.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-U</literal> <replaceable>username</replaceable></term>
+<listitem><para>Used only with <literal>-r</literal>, to modify a username that is spelled differently on the remote machine.</para></listitem>
+</varlistentry>
+</variablelist>
+</sect3>
+
+
+
+<sect3 role="" label="D.1.9.2" id="appd-SECT-1.9.2">
+<title>Root-only options</title>
+
+
+<variablelist>
+<varlistentry><term><literal>-a</literal> <replaceable>username</replaceable></term>
+<listitem><para>Adds a user to the encrypted password file.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-d</literal> <replaceable>username</replaceable></term>
+<listitem><para>Disables a user in the encrypted password file.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-e</literal> <replaceable>username</replaceable></term>
+<listitem><para>Enables a disabled user in the encrypted password file.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-m</literal> <replaceable>machine_name</replaceable></term>
+<listitem><para>Changes a machine account's password. The machine accounts are used to authenticate machines when they connect to a primary or backup domain controller.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-j</literal> <replaceable>domain_name</replaceable></term>
+<listitem><para>Adds a Samba server to a Windows NT Domain.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-n</literal></term>
+<listitem><para>Sets no password for the user.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-s</literal> <replaceable>username</replaceable></term>
+<listitem><para>Causes <emphasis>smbpasswd</emphasis> to be silent and to read its old and new passwords from standard input, rather than from <filename>/dev/tty</filename>. This is useful for writing scripts.</para></listitem>
+</varlistentry>
+</variablelist>
+</sect3>
+</sect2>
+
+
+
+
+
+<sect2 role="" label="D.1.10" id="appd-SECT-1.10">
+<title>testparm</title>
+
+
+<para>The <emphasis>testparm</emphasis>
+<indexterm id="appd-idx-993999-0"><primary>testparm program</primary></indexterm>
+<indexterm id="appd-idx-993999-1"><primary>smb.conf (Samba configuration) file</primary><secondary>testparm program for</secondary></indexterm> program checks an <filename>smb.conf</filename> file for obvious errors and self-consistency. Its command line is:</para>
+
+
+<programlisting>testparm [options] <replaceable>configfile_name [hostname IP_addr]</replaceable></programlisting>
+
+
+<para>If the configuration file is not specified, the file at <replaceable>samba_dir</replaceable><filename>/lib/smb.conf</filename> is checked by default. If you specify a hostname and an IP address, an extra check will be made to ensure that the specified machine would be allowed to connect to Samba. If a hostname is specified, an IP address should be present as well.</para>
+
+
+<sect3 role="" label="D.1.10.1" id="appd-SECT-1.10.1">
+<title>Options</title>
+
+
+<variablelist>
+<varlistentry><term><literal>-h</literal></term>
+<listitem><para>Prints command-line information for the program.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-L</literal> server_name</term>
+<listitem><para>Resets the <literal>%L</literal> configuration variable to the specified server name.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-s</literal></term>
+<listitem><para>This option prevents the <emphasis>testparm</emphasis> program from prompting the user to press the Enter key before printing a list of the configuration options for the server.</para></listitem>
+</varlistentry>
+</variablelist>
+</sect3>
+</sect2>
+
+
+
+
+
+<sect2 role="" label="D.1.11" id="appd-SECT-1.11">
+<title>testprns</title>
+
+
+<para>The<indexterm id="appd-idx-993761-0"><primary>testprns program</primary></indexterm>
+<indexterm id="appd-idx-993761-1"><primary>printers</primary><secondary>names</secondary><tertiary>checking</tertiary></indexterm> <emphasis>testprns</emphasis> program checks a specified printer name against the system printer capabilities (<filename>printcap</filename>) file. Its command line is:</para>
+
+
+<programlisting>testprns <replaceable>printername</replaceable> [<replaceable>printcapname</replaceable>]</programlisting>
+
+
+<para>If the <literal>printcapname</literal> isn't specified, Samba attempts to use one located in the <filename>smb.conf</filename> file. If one isn't specified there, Samba will try <filename>/etc/printcap</filename>. If that fails, the program will generate an error.</para>
+</sect2>
+
+
+
+
+
+<sect2 role="" label="D.1.12" id="appd-SECT-1.12">
+<title>rpcclient</title>
+
+
+<para>This is a new client that exercises the <indexterm id="appd-idx-993762-0"><primary>RPC (remote procedure call)</primary></indexterm>
+<indexterm id="appd-idx-993762-1"><primary>remote procedure call (RPC)</primary></indexterm>RPC (remote procedure call) interfaces of an SMB server. Like <emphasis>smbclient</emphasis>, <emphasis>rpcclient</emphasis>
+<indexterm id="appd-idx-993763-0"><primary>rpcclient program</primary></indexterm> started its life as a test program for the Samba developers and will likely stay that way for a while. Its command line is:</para>
+
+
+<programlisting>rpcclient //<replaceable>server</replaceable>/<replaceable>share</replaceable></programlisting>
+
+
+<para>The command-line options are the same as the Samba 2.0 <emphasis>smbclient</emphasis>, and the operations you can try are listed in <link linkend="appd-65243">Table 4.4</link>.</para>
+
+
+<table label="D.4" id="appd-65243">
+<title>rpcclient commands </title>
+
+<tgroup cols="2">
+<colspec colnum="1" colname="col1"/>
+<colspec colnum="2" colname="col2"/>
+<thead>
+<row>
+
+<entry colname="col1"><para>Command</para></entry>
+
+<entry colname="col2"><para>Description</para></entry>
+
+</row>
+
+</thead>
+
+<tbody>
+<row>
+
+<entry colname="col1"><para><literal>regenum keyname</literal></para></entry>
+
+<entry colname="col2"><para>Registry Enumeration (keys, values)</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>regdeletekey keyname </literal></para></entry>
+
+<entry colname="col2"><para>Registry Key Delete</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>regcreatekey keyname [keyvalue]</literal></para></entry>
+
+<entry colname="col2"><para>Registry Key Create</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>regquerykey keyname</literal></para></entry>
+
+<entry colname="col2"><para>Registry Key Query</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>regdeleteval valname</literal></para></entry>
+
+<entry colname="col2"><para>Registry Value Delete</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>regcreateval valname valtype value</literal></para></entry>
+
+<entry colname="col2"><para>Registry Key Create</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>reggetsec keyname</literal></para></entry>
+
+<entry colname="col2"><para>Registry Key Security</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>regtestsec keyname</literal></para></entry>
+
+<entry colname="col2"><para>Test Registry Key Security</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>ntlogin [username] [password]</literal></para></entry>
+
+<entry colname="col2"><para>NT Domain Login Test</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>wksinfo</literal></para></entry>
+
+<entry colname="col2"><para>Workstation Query Info</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>srvinfo</literal></para></entry>
+
+<entry colname="col2"><para>Server Query Info</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>srvsessions</literal></para></entry>
+
+<entry colname="col2"><para>List Sessions on a Server</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>srvshares</literal></para></entry>
+
+<entry colname="col2"><para>List shares on a server</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>srvconnections</literal></para></entry>
+
+<entry colname="col2"><para>List connections on a server</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>srvfiles</literal></para></entry>
+
+<entry colname="col2"><para>List files on a server</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>lsaquery</literal></para></entry>
+
+<entry colname="col2"><para>Query Info Policy (domain member or server)</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>lookupsids</literal></para></entry>
+
+<entry colname="col2"><para>Resolve names from SIDs</para></entry>
+
+</row>
+
+<row>
+
+<entry colname="col1"><para><literal>ntpass</literal></para></entry>
+
+<entry colname="col2"><para>NT SAM Password Change</para></entry>
+
+</row>
+
+</tbody>
+</tgroup>
+</table>
+</sect2>
+
+
+
+
+
+<sect2 role="" label="D.1.13" id="appd-SECT-1.13">
+<title>tcpdump</title>
+
+
+<para>The <emphasis>tcpdump</emphasis>
+<indexterm id="appd-idx-993765-0"><primary>tcpdump utility</primary></indexterm>
+<indexterm id="appd-idx-993765-1"><primary>packets</primary><secondary>headers for, tcpdump utility and</secondary></indexterm> utility, a classic system administration tool, dumps all the packet headers it sees on an interface that match an expression. The version included in the Samba distribution is enhanced to understand the SMB protocol. The <emphasis>expression</emphasis> is a logical expression with "and," "or," and "not," although sometimes it's very simple. For example, <literal>host</literal> <literal>escrime</literal> would select every packet going to or from <literal>escrime</literal>. The expression is normally one or more of:</para>
+
+
+<itemizedlist>
+
+<listitem><para><literal>host</literal> <replaceable>name</replaceable></para></listitem>
+
+<listitem><para><literal>ne</literal>t <replaceable>network_number</replaceable></para></listitem>
+<listitem><para><literal>port</literal> <replaceable>number</replaceable></para></listitem>
+<listitem><para><literal>src</literal> <replaceable>name </replaceable></para></listitem>
+<listitem><para><literal>dst</literal> <replaceable>name</replaceable></para></listitem>
+</itemizedlist>
+
+<para>The most common options are <literal>src</literal> (source), <literal>dst</literal> (destination), and <literal>port</literal>. For example, in the book we used the command:</para>
+
+
+<programlisting>tcpdump port not telnet</programlisting>
+
+
+<para>This dumps all the packets except telnet; we were logged-in via telnet and  wanted to see only the SMB packets.</para>
+
+
+<para>Another <emphasis>tcpdump</emphasis> example is selecting traffic between server and either <literal>sue</literal> or <literal>joe</literal>:</para>
+
+
+<programlisting>tcpdump host server and \( sue or joe \)</programlisting>
+
+
+<para>We recommend using the <literal>-s</literal> <literal>1500</literal> option so that you capture all of the SMB messages sent, instead of just the header information.</para>
+
+
+<sect3 role="" label="D.1.13.1" id="appd-SECT-1.13.1">
+<title>Options</title>
+
+
+<para>There are many options, and many other kinds of expressions that can be used with <emphasis>tcpdump</emphasis>. See the manual page for details on the advanced options. The most common options are as follows:</para>
+
+
+<variablelist>
+<varlistentry><term><literal>-c</literal> <replaceable>count</replaceable></term>
+<listitem><para>Forces the program to exit after receiving the specified number of packets.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-F</literal> <replaceable>file</replaceable></term>
+<listitem><para>Reads the expression from the specified file and ignores expressions on the command line.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-i</literal> <replaceable>interface</replaceable></term>
+<listitem><para>Forces the program to listen on the specified interface.</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-r</literal> <replaceable>file</replaceable></term>
+<listitem><para>Reads packets from the specified file (captured with <literal>-w</literal>).</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-s</literal> <replaceable>length</replaceable></term>
+<listitem><para>Saves the specified number of bytes of data from each packet (rather than 68 bytes).</para></listitem>
+</varlistentry>
+
+
+<varlistentry><term><literal>-w</literal> <replaceable>file</replaceable></term>
+<listitem><para>Writes the packets to the specified file.<indexterm id="appd-idx-993743-0" class="endofrange" startref="appd-idx-994034-0"/></para></listitem>
+</varlistentry>
+</variablelist>
+</sect3>
+</sect2>
+</sect1>
+
+
+
+
+
+
+
+
+</appendix>
diff --git a/docs-xml/using_samba/appe.xml b/docs-xml/using_samba/appe.xml
new file mode 100644 (file)
index 0000000..2e5863a
--- /dev/null
@@ -0,0 +1,46 @@
+<appendix label="E" id="SAMBA-AP-E">
+<title>Downloading Samba with CVS</title>
+
+
+
+
+<para>
+<indexterm id="appe-idx-992918-0"><primary>downloads</primary><secondary>Samba</secondary><tertiary sortas="obtainedusing CVS">obtained using CVS</tertiary></indexterm>
+<indexterm id="appe-idx-992918-1"><primary>Samba</primary><secondary>downloading</secondary><tertiary>with CVS</tertiary></indexterm>This appendix contains information on how to download the latest source version of Samba using the C<indexterm id="appe-idx-992919-0"><primary>Concurrent Versions System (CVS)</primary></indexterm>
+<indexterm id="appe-idx-992919-1"><primary>CVS (Concurrent Versions Systems)</primary></indexterm>oncurrent Versions System (CVS). CVS is a freely available configuration management tool available from <indexterm id="appe-idx-992920-0"><primary>Cyclic Software</primary></indexterm>Cyclic Software and is distributed under the<indexterm id="appe-idx-992921-0"><primary>GNU General Public License (GPL)</primary></indexterm> GNU General Public License. You can download the latest copy from <systemitem role="url">http://www.cyclic.com/</systemitem>.<indexterm id="appe-idx-992922-0"><primary>URLs (uniform resource locators)</primary><secondary>Cyclic Software</secondary></indexterm></para>
+
+
+<para>CVS works on top of the GNU <indexterm id="appe-idx-992923-0"><primary>Revision Control System
+(RCS)</primary></indexterm>
+<indexterm id="appe-idx-992923-1"><primary>RCS (Revision Control
+System)</primary></indexterm>Revision Control System (RCS). Many Unix
+systems come preinstalled with RCS. However, if you want to download
+the latest version of RCS, you can find it at <indexterm id="appe-idx-992936-0"><primary>URLs (uniform resource
+locators)</primary><secondary>RCS (Revision Control
+System)</secondary></indexterm><systemitem role="url">http://ftp.gnu.org/gnu/rcs/</systemitem>.</para>
+
+
+<para>One of the nicest things about CVS is its ability to handle remote logins. This means that people across the globe on the Internet can download and update various source files for any project that uses a CVS repository. Such is the case with Samba. Once you have RCS and CVS installed on your system, you must first log in to the Samba source server with the following command:</para>
+
+
+<programlisting>cvs -d :pserver:cvs@cvs.samba.org:/cvsroot login</programlisting>
+
+
+<para>This tells CVS to connect to the CVS server at <filename>cvs.samba.org</filename>. Once you are connected, you can download the latest source tree with the following command:</para>
+
+
+<programlisting>cvs -d :pserver:cvs@cvs.samba.org:/cvsroot co samba</programlisting>
+
+
+<para>This will download the entire Samba distribution (file by file) into a directory entitled <filename>/samba</filename>, which it will create on your hard drive. This directory will have the same structure as the Samba source distribution described in <link linkend="SAMBA-CH-2">Chapter 2</link>. It includes source and header files, documentation, and sample configuration files to help get you started. After that is completed, you can follow the instructions in <link linkend="SAMBA-CH-2">Chapter 2</link> to configure and compile Samba on your server.</para>
+
+
+
+
+
+
+
+
+
+
+</appendix>
diff --git a/docs-xml/using_samba/appf.xml b/docs-xml/using_samba/appf.xml
new file mode 100644 (file)
index 0000000..b4965f0
--- /dev/null
@@ -0,0 +1,250 @@
+<appendix label="F" id="SAMBA-AP-F">
+<title>Sample Configuration File</title>
+
+
+
+
+<para>
+<indexterm id="appf-idx-993481-0" class="startofrange"><primary>configuration files</primary><secondary>sample of</secondary></indexterm>This appendix gives an example of a production <filename>smb.conf</filename> file and looks at how many of the options are used in practice. The following is a slightly disguised version of one we used at a corporation with five Linux servers, five Windows for Workgroups clients and three NT Workstation clients:</para>
+
+
+<programlisting># smb.conf -- File Server System for: 1 Example.COM  BSC &amp; Management Office
+[globals]
+       workgroup = 1EG_BSC
+       interfaces = 10.10.1.14/24</programlisting>
+
+
+<para>We provide this service on only one of the machine's interfaces. The <literal>interfaces</literal> option sets its address and netmask, where <literal>/24</literal> is the same as using the netmask 255.255.255.0:</para>
+
+
+<programlisting>comment = Samba ver. %v
+       preexec = csh -c `echo /usr/samba/bin/smbclient \
+                     -M %m -I %I` &amp;</programlisting>
+
+
+<para>We use the <command>preexec</command> command to log information about all connections by machine name (<literal>%m</literal>) and IP address (<literal>%I)</literal>:</para>
+
+
+<programlisting># smbstatus will output various info on current status
+       status = yes
+       browseable = yes
+       printing = bsd
+
+       # the username that will be used for access to services
+       # specified with 'guest = ok'
+       guest account = samba</programlisting>
+
+
+<para>The default guest account was <literal>nobody</literal>, uid -1, which produced log messages on one of our machines saying "your server is being unfriendly," so we created a specific Samba guest account for browsing and printing:</para>
+
+
+<programlisting># superuser account - admin privilages to shares, with no
+       # restrictions
+       # WARNING - use this with care: files can be modified,
+       # regardless of file permissions
+       admin users = root
+
+       # who is NOT allowed to connect to ANY service
+       invalid users = @wheel, mail, deamon, adt</programlisting>
+
+
+<para>Daemons can't use Samba, only people. The <literal>invalid</literal> <literal>users</literal> option closes a security hole; it prevents intruders from breaking in by pretending to be a daemon process.</para>
+
+
+<programlisting># hosts that are ALLOWED or DENIED from connecting to ANY service
+       hosts allow = 10.10.1.
+       hosts deny = 10.10.1.6
+
+       # where the lock files will be located
+       lock directory = /var/lock/samba/locks
+
+       # debug log files
+       # %m = separate log for each NetBIOS name (each machine)
+       log file = /var/log/samba/log.%m
+
+       # We send priority 0, 1 and 2 messages to the system logs
+       syslog = 2
+
+       # If a WinPopup message is sent to the server,
+       # redirect it to a user via e-mail
+
+       message command = /bin/mail -s 'message from #% on %m' \
+                               pkelly &lt; %s; rm %s
+
+# ---------------------------------------------------
+# [globals] Performance Tuning
+# ---------------------------------------------------
+
+       # caching algorithm to reduce time doing getwd() calls.
+       getwd cache = yes
+
+       socket options = TCP_NODELAY
+
+       # tell the server whether the client is present and
+       # responding in seconds
+       keep alive = 60
+
+       # num minutes of inactivity before a connection is
+       # considered dead
+       dead time = 30
+
+       read prediction = yes
+       share modes = yes
+       max xmit = 17384
+       read size = 512</programlisting>
+
+
+<para>The <literal>share</literal> <literal>modes</literal>, <literal>max</literal>, <literal>xinit</literal>, and <literal>read</literal> <literal>size</literal> options are machine-specific (see <link linkend="SAMBA-AP-B">Appendix B</link>):</para>
+
+
+<programlisting># locking is done by the server
+       locking = yes
+
+       # control whether dos style attributes should be mapped
+       # to unix execute bits
+       map hidden = yes
+       map archive = yes
+       map system = yes</programlisting>
+
+
+<para>The three <literal>map</literal> options will work only on shares with a create mode that includes the execute bits (0111). Our <literal>homes</literal> and <literal>printers</literal> shares won't honor them, but the [<literal>www]</literal> share will:</para>
+
+
+<programlisting># ---------------------------------------------------------
+# [globals] Security and Domain Logon Services
+# ---------------------------------------------------------
+# connections are made with UID and GID, not as shares
+       security = user
+
+# boolean variable that controls whether passwords
+# will be encrypted
+       encrypt passwords = yes
+       passwd chat = "*New password:*" %n\r "*New password (again):*" %n\r \ "*Password changed*"
+       passwd program = /usr/bin/passwd %u
+
+# Always become the local master browser
+       domain master = yes
+       preferred master = yes
+       os level = 34
+
+# For domain logons to work correctly. Samba acts as a
+# primary domain controller.
+       domain logons = yes
+
+# Logon script to run for user off the server each time
+# username (%U) logs in.  Set the time, connect to shares,
+# virus checks, etc.
+       logon script = scripts\%U.bat
+
+[netlogon]
+       comment = "Domain Logon Services"
+       path = /u/netlogon
+       writable = yes
+       create mode = 444
+       guest ok = no
+       volume = "Network"</programlisting>
+
+
+<para>This share, discussed in <link linkend="SAMBA-CH-6">Chapter 6</link>, is required for Samba to work smoothly in a Windows NT domain:</para>
+
+
+<programlisting># -----------------------------------------------------------
+# [homes] User Home Directories
+# -----------------------------------------------------------
+[homes]
+       comment = "Home Directory for : %u "
+       path = /u/users/%u</programlisting>
+
+
+<para>The password file of the Samba server specifies each person's home directory as   <emphasis>/home/</emphasis><replaceable>machine_name</replaceable><emphasis>/</emphasis><replaceable>person</replaceable>, which NFS converts to point to the actual physicl location under <emphasis>/u/users</emphasis>. The <literal>path</literal> option in the <literal>[homes]</literal> share tells Samba the actual (non-NFS) location:</para>
+
+
+<programlisting>guest ok = no
+       read only = no
+       create mode = 644
+       writable = yes
+       browseable = no
+
+# -----------------------------------------------------------
+# [printers] System Printers
+# -----------------------------------------------------------
+[printers]
+       comment = "Printers"
+       path = /var/spool/lpd/samba
+       printcap name = /etc/printcap
+       printable = yes
+       public = no
+       writable = no
+
+       lpq command = /usr/bin/lpq -P%p
+       lprm command = /usr/bin/lprm -P%p %j
+       lppause command = /usr/sbin/lpc stop %p
+       lpresume command = /usr/sbin/lpc start %p
+
+       create mode = 0700
+
+       browseable = no
+       load printers = yes
+
+# -----------------------------------------------------------
+# Specific Descriptions: [programs] [data] [retail]
+# -----------------------------------------------------------
+[programs]
+       comment = "Shared Programs %T"
+       volume = "programs"</programlisting>
+
+
+<para>Shared Programs shows up in the Network Neighborhood, and <literal>programs</literal> is the volume name you specify when an installation program wants to know the label of the CD-ROM from which it thinks it's loading:</para>
+
+
+<programlisting>path = /u/programs
+       public = yes
+       writeable = yes
+       printable = no
+       create mode = 664
+[cdrom]
+       comment = "Unix CDROM"
+       path = /u/cdrom
+       public = no
+       writeable = no
+       printable = no
+       volume = "cdrom"
+
+[data]
+       comment =  "Data Directories %T"
+       path = /u/data
+       public = no
+       create mode = 770
+       writeable = yes
+       volume = "data"
+
+[nt4]
+       comment =  "NT4 Server"
+       path = /u/systems/nt4
+       public = yes
+       create mode = 770
+       writeable = yes
+       volume = "nt4_server"
+
+[www]
+       comment =  "WWW System"
+       path = /usr/www/http
+       public = yes
+       create mode = 775
+       writeable = yes
+       volume = "www_system"</programlisting>
+
+
+<para>The <literal>[www]</literal> share is the directory used on the Unix server to serve web pages. Samba makes the directory available to local PC users so the art department can update web pages.</para>
+
+
+
+
+
+
+
+
+
+
+
+</appendix>
diff --git a/docs-xml/using_samba/book.html b/docs-xml/using_samba/book.html
new file mode 100644 (file)
index 0000000..302ba33
--- /dev/null
@@ -0,0 +1,2924 @@
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Using Samba</title><meta name="generator" content="DocBook XSL Stylesheets V1.71.0"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="book" lang="en"><div class="titlepage"><div><div><h1 class="title"><a name="id2491109"></a>Using Samba</h1></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="preface"><a href="#copyright"></a></span></dt><dt><span class="preface"><a href="#ch00">Preface</a></span></dt><dd><dl><dt><span class="sect1"><a href="#ch00-SECT-1">The Samba Suite</a></span></dt><dt><span class="sect1"><a href="#ch00-SECT-2">Audience for this Book</a></span></dt><dt><span class="sect1"><a href="#ch00-SECT-3">Samba Installation Checklist</a></span></dt><dt><span class="sect1"><a href="#ch00-SECT-4">Organization</a></span></dt><dt><span class="sect1"><a href="#ch00-SECT-5">Conventions</a></span></dt><dt><span class="sect1"><a href="#ch00-SECT-6">Request for Comments</a></span></dt><dt><span class="sect1"><a href="#ch00-SECT-7">Acknowledgments</a></span></dt></dl></dd><dt><span class="chapter"><a href="#ch01-48078">1. Learning the Samba</a></span></dt><dd><dl><dt><span class="sect1"><a href="#ch01-28119">1.1. What is Samba?</a></span></dt><dt><span class="sect1"><a href="#ch01-SECT-2">1.2. What Can Samba Do For Me?</a></span></dt><dd><dl><dt><span class="sect2"><a href="#ch01-SECT-2.1">1.2.1. Sharing a Disk Service</a></span></dt><dt><span class="sect2"><a href="#ch01-SECT-2.2">1.2.2. Sharing a Printer</a></span></dt></dl></dd><dt><span class="sect1"><a href="#ch01-88536">1.3. Getting Familiar with a SMB/CIFS Network</a></span></dt><dd><dl><dt><span class="sect2"><a href="#ch01-SECT-3.1">1.3.1. Understanding NetBIOS</a></span></dt><dt><span class="sect2"><a href="#ch01-SECT-3.2">1.3.2. Getting a Name</a></span></dt><dt><span class="sect2"><a href="#ch01-SECT-3.3">1.3.3. Node Types</a></span></dt><dt><span class="sect2"><a href="#ch01-SECT-3.4">1.3.4. What's in a Name?</a></span></dt><dt><span class="sect2"><a href="#ch01-SECT-3.5">1.3.5. Datagrams and Sessions</a></span></dt></dl></dd><dt><span class="sect1"><a href="#ch01-43359">1.4. Microsoft Implementations</a></span></dt><dd><dl><dt><span class="sect2"><a href="#ch01-SECT-4.1">1.4.1. Windows Domains</a></span></dt><dt><span class="sect2"><a href="#ch01-SECT-4.2">1.4.2. Browsing</a></span></dt><dt><span class="sect2"><a href="#ch01-SECT-4.3">1.4.3. Can a Windows Workgroup Span Multiple Subnets?</a></span></dt><dt><span class="sect2"><a href="#ch01-SECT-4.4">1.4.4. The Windows Internet Name Service (WINS)</a></span></dt><dt><span class="sect2"><a href="#ch01-12452">1.4.5. What Can Samba Do?</a></span></dt></dl></dd><dt><span class="sect1"><a href="#ch01-32691">1.5. An Overview of the Samba Distribution</a></span></dt><dt><span class="sect1"><a href="#ch01-SECT-6">1.6. How Can I Get Samba?</a></span></dt><dt><span class="sect1"><a href="#ch01-40528">1.7. What's New in Samba 2.0?</a></span></dt><dd><dl><dt><span class="sect2"><a href="#ch01-SECT-7.1">1.7.1. NT Domains</a></span></dt><dt><span class="sect2"><a href="#ch01-SECT-7.2">1.7.2. Ease of Administration</a></span></dt><dt><span class="sect2"><a href="#ch01-SECT-7.3">1.7.3. Performance</a></span></dt><dt><span class="sect2"><a href="#ch01-SECT-7.4">1.7.4. More Features</a></span></dt><dt><span class="sect2"><a href="#ch01-SECT-7.5">1.7.5. Compatibility Improvements</a></span></dt><dt><span class="sect2"><a href="#ch01-SECT-7.6">1.7.6. Smbwrapper</a></span></dt></dl></dd><dt><span class="sect1"><a href="#ch01-99818">1.8. And That's Not All...</a></span></dt></dl></dd><dt><span class="chapter"><a href="#SAMBA-CH-2">2. Installing Samba on a Unix System</a></span></dt><dd><dl><dt><span class="sect1"><a href="#ch02-85028">2.1. Downloading the Samba Distribution</a></span></dt><dd><dl><dt><span class="sect2"><a href="#ch02-SECT-1.1">2.1.1. Binary or Source?</a></span></dt><dt><span class="sect2"><a href="#ch02-SECT-1.2">2.1.2. Read the Documentation</a></span></dt></dl></dd><dt><span class="sect1"><a href="#ch02-28558">2.2. Configuring Samba</a></span></dt><dt><span class="sect1"><a href="#ch02-13217">2.3. Compiling and Installing Samba</a></span></dt><dd><dl><dt><span class="sect2"><a href="#ch02-SECT-3.1">2.3.1. Final Installation Steps</a></span></dt></dl></dd><dt><span class="sect1"><a href="#ch02-13464">2.4. A Basic Samba Configuration File</a></span></dt><dd><dl><dt><span class="sect2"><a href="#ch02-SECT-4.1">2.4.1. Using SWAT</a></span></dt><dt><span class="sect2"><a href="#ch02-SECT-4.2">2.4.2. Testing the Configuration File</a></span></dt></dl></dd><dt><span class="sect1"><a href="#ch02-29069">2.5. Starting the Samba Daemons</a></span></dt><dd><dl><dt><span class="sect2"><a href="#ch02-SECT-5.1">2.5.1. Starting the Daemons by Hand</a></span></dt><dt><span class="sect2"><a href="#ch02-SECT-5.2">2.5.2. Stand-alone Daemons</a></span></dt><dt><span class="sect2"><a href="#ch02-SECT-5.3">2.5.3. Starting From Inetd</a></span></dt></dl></dd><dt><span class="sect1"><a href="#ch02-67898">2.6. Testing the Samba Daemons</a></span></dt></dl></dd><dt><span class="chapter"><a href="#SAMBA-CH-3">3. Configuring Windows Clients</a></span></dt><dd><dl><dt><span class="sect1"><a href="#ch03-55770">3.1. Setting Up Windows 95/98 Computers</a></span></dt><dd><dl><dt><span class="sect2"><a href="#ch03-SECT-1.1">3.1.1. Accounts and Passwords</a></span></dt><dt><span class="sect2"><a href="#ch03-36280">3.1.2. Setting Up the Network</a></span></dt><dt><span class="sect2"><a href="#ch03-48802">3.1.3. Setting Your Name and Workgroup </a></span></dt><dt><span class="sect2"><a href="#ch03-13238">3.1.4. Accessing the Samba Server</a></span></dt></dl></dd><dt><span class="sect1"><a href="#ch03-23093">3.2. Setting Up Windows NT 4.0 Computers</a></span></dt><dd><dl><dt><span class="sect2"><a href="#ch03-SECT-2.1">3.2.1. Basic Configuration</a></span></dt><dt><span class="sect2"><a href="#ch03-85837">3.2.2. Configuring TCP/IP</a></span></dt><dt><span class="sect2"><a href="#ch03-SECT-2.3">3.2.3. Connecting to the Samba Server</a></span></dt></dl></dd><dt><span class="sect1"><a href="#ch03-64069">3.3. An Introduction to SMB/CIFS</a></span></dt><dd><dl><dt><span class="sect2"><a href="#ch03-SECT-3.1">3.3.1. SMB Format</a></span></dt><dt><span class="sect2"><a href="#ch03-SECT-3.2">3.3.2. SMB Clients and Servers</a></span></dt><dt><span class="sect2"><a href="#ch03-SECT-3.3">3.3.3. A Simple SMB Connection</a></span></dt><dt><span class="sect2"><a href="#ch03-SECT-3.4">3.3.4. Negotiating the Protocol Variant</a></span></dt><dt><span class="sect2"><a href="#ch03-SECT-3.5">3.3.5. Set Session and Login Parameters</a></span></dt><dt><span class="sect2"><a href="#ch03-SECT-3.6">3.3.6. Making Connection to a Resource</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#ch04-21486">4. Disk Shares </a></span></dt><dd><dl><dt><span class="sect1"><a href="#ch04-76968">4.1. Learning the Samba Configuration File</a></span></dt><dd><dl><dt><span class="sect2"><a href="#ch04-52415">4.1.1. Configuration File Structure</a></span></dt><dt><span class="sect2"><a href="#ch04-87365">4.1.2. Variables</a></span></dt></dl></dd><dt><span class="sect1"><a href="#ch04-81402">4.2. Special Sections</a></span></dt><dd><dl><dt><span class="sect2"><a href="#ch04-SECT-2.1">4.2.1. The [globals] Section</a></span></dt><dt><span class="sect2"><a href="#ch04-SECT-2.2">4.2.2. The [ homes] Section</a></span></dt><dt><span class="sect2"><a href="#ch04-SECT-2.3">4.2.3. The [printers] Section</a></span></dt><dt><span class="sect2"><a href="#ch04-SECT-2.4">4.2.4. Configuration Options</a></span></dt></dl></dd><dt><span class="sect1"><a href="#ch04-46076">4.3. Configuration File Options</a></span></dt><dd><dl><dt><span class="sect2"><a href="#ch04-SECT-3.0.1">4.3.1.
+config file</a></span></dt><dt><span class="sect2"><a href="#ch04-SECT-3.0.2">4.3.2.
+include</a></span></dt><dt><span class="sect2"><a href="#ch04-SECT-3.0.3">4.3.3.
+copy</a></span></dt></dl></dd><dt><span class="sect1"><a href="#ch04-71382">4.4. Server Configuration</a></span></dt><dd><dl><dt><span class="sect2"><a href="#ch04-SECT-4.1">4.4.1. Server Configuration Options</a></span></dt></dl></dd><dt><span class="sect1"><a href="#ch04-14274">4.5. Disk Share Configuration</a></span></dt><dd><dl><dt><span class="sect2"><a href="#ch04-SECT-5.1">4.5.1. Disk Share Configuration Options</a></span></dt></dl></dd><dt><span class="sect1"><a href="#ch04-86705">4.6. Networking Options with Samba</a></span></dt><dd><dl><dt><span class="sect2"><a href="#ch04-SECT-6.1">4.6.1. Networking Options</a></span></dt></dl></dd><dt><span class="sect1"><a href="#ch04-16899">4.7. Virtual Servers</a></span></dt><dd><dl><dt><span class="sect2"><a href="#ch04-SECT-7.0.1">4.7.1.
+netbios aliases</a></span></dt></dl></dd><dt><span class="sect1"><a href="#ch04-29331">4.8. Logging Configuration Options</a></span></dt><dd><dl><dt><span class="sect2"><a href="#ch04-97929">4.8.1. Using syslog</a></span></dt><dt><span class="sect2"><a href="#ch04-SECT-8.1">4.8.2. Logging Configuration Options</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#SAMBA-CH-5">5. Browsing and Advanced Disk Shares </a></span></dt><dd><dl><dt><span class="sect1"><a href="#ch05-23763">5.1. Browsing</a></span></dt><dd><dl><dt><span class="sect2"><a href="#ch05-SECT-1.1">5.1.1. Preventing Browsing</a></span></dt><dt><span class="sect2"><a href="#ch05-SECT-1.2">5.1.2. Default Services</a></span></dt><dt><span class="sect2"><a href="#ch05-SECT-1.3">5.1.3. Browsing Elections</a></span></dt><dt><span class="sect2"><a href="#ch05-SECT-1.4">5.1.4. Domain Master Browser</a></span></dt><dt><span class="sect2"><a href="#ch05-SECT-1.5">5.1.5. Browsing Options</a></span></dt></dl></dd><dt><span class="sect1"><a href="#ch05-34221">5.2. Filesystem Differences</a></span></dt><dd><dl><dt><span class="sect2"><a href="#ch05-SECT-2.1">5.2.1. Hiding and Vetoing Files</a></span></dt><dt><span class="sect2"><a href="#ch05-SECT-2.2">5.2.2. Links</a></span></dt><dt><span class="sect2"><a href="#ch05-SECT-2.3">5.2.3. Filesystem Options</a></span></dt></dl></dd><dt><span class="sect1"><a href="#ch05-34062">5.3. File Permissions and Attributes on MS-DOS and Unix</a></span></dt><dd><dl><dt><span class="sect2"><a href="#ch05-SECT-3.0.1">5.3.1. Creation masks</a></span></dt><dt><span class="sect2"><a href="#ch05-SECT-3.1">5.3.2. File and Directory Permission Options</a></span></dt></dl></dd><dt><span class="sect1"><a href="#ch05-30534">5.4. Name Mangling and Case</a></span></dt><dd><dl><dt><span class="sect2"><a href="#ch05-SECT-4.1">5.4.1. The Samba Mangling Operation</a></span></dt><dt><span class="sect2"><a href="#ch05-SECT-4.2">5.4.2. Mangling Options</a></span></dt></dl></dd><dt><span class="sect1"><a href="#ch05-75933">5.5. Locks and Oplocks</a></span></dt><dd><dl><dt><span class="sect2"><a href="#ch05-SECT-5.1">5.5.1. Opportunistic Locking</a></span></dt><dt><span class="sect2"><a href="#ch05-SECT-5.2">5.5.2. Unix and Locking</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#SAMBA-CH-6">6. Users, Security, and Domains </a></span></dt><dd><dl><dt><span class="sect1"><a href="#ch06-92902">6.1. Users and Groups</a></span></dt><dd><dl><dt><span class="sect2"><a href="#ch06-SECT-1.1">6.1.1. The [ homes] Share</a></span></dt></dl></dd><dt><span class="sect1"><a href="#ch06-27678">6.2. Controlling Access to Shares</a></span></dt><dd><dl><dt><span class="sect2"><a href="#ch06-SECT-2.1">6.2.1. Guest Access</a></span></dt><dt><span class="sect2"><a href="#ch06-SECT-2.2">6.2.2. Access Control Options</a></span></dt><dt><span class="sect2"><a href="#ch06-SECT-2.3">6.2.3. Username Options</a></span></dt></dl></dd><dt><span class="sect1"><a href="#ch06-88596">6.3. Authentication Security</a></span></dt><dd><dl><dt><span class="sect2"><a href="#ch06-SECT-3.1">6.3.1. Share-level Security</a></span></dt><dt><span class="sect2"><a href="#ch06-SECT-3.2">6.3.2. User-level Security</a></span></dt><dt><span class="sect2"><a href="#ch06-SECT-3.3">6.3.3. Server-level Security</a></span></dt><dt><span class="sect2"><a href="#ch06-SECT-3.4">6.3.4. Domain-level Security</a></span></dt></dl></dd><dt><span class="sect1"><a href="#ch06-61393">6.4. Passwords</a></span></dt><dd><dl><dt><span class="sect2"><a href="#ch06-SECT-4.0.1">6.4.1. Disabling encrypted passwords on the client</a></span></dt><dt><span class="sect2"><a href="#ch06-17782">6.4.2. The smbpasswd File</a></span></dt><dt><span class="sect2"><a href="#ch06-97004">6.4.3. Password Synchronization</a></span></dt><dt><span class="sect2"><a href="#ch06-SECT-4.3">6.4.4. Password Configuration Options</a></span></dt></dl></dd><dt><span class="sect1"><a href="#ch06-23084">6.5. Windows Domains</a></span></dt><dd><dl><dt><span class="sect2"><a href="#ch06-36822">6.5.1. Configuring Samba for Windows Domain Logons</a></span></dt><dt><span class="sect2"><a href="#ch06-SECT-5.2">6.5.2. Configuring Windows Clients for Domain Logons</a></span></dt><dt><span class="sect2"><a href="#ch06-SECT-5.3">6.5.3. Domain Options</a></span></dt></dl></dd><dt><span class="sect1"><a href="#ch06-38153">6.6. Logon Scripts</a></span></dt><dd><dl><dt><span class="sect2"><a href="#ch06-SECT-6.0.1">6.6.1. Roaming profiles</a></span></dt><dt><span class="sect2"><a href="#ch06-SECT-6.0.2">6.6.2. Mandatory profiles</a></span></dt><dt><span class="sect2"><a href="#ch06-SECT-6.1">6.6.3. Logon Script Options</a></span></dt><dt><span class="sect2"><a href="#ch06-SECT-6.2">6.6.4. Other Connection Scripts</a></span></dt><dt><span class="sect2"><a href="#ch06-SECT-6.3">6.6.5. Working with NIS and NFS</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#SAMBA-CH-7">7. Printing and Name Resolution</a></span></dt><dd><dl><dt><span class="sect1"><a href="#ch07-61388">7.1. Sending Print Jobs to Samba</a></span></dt><dd><dl><dt><span class="sect2"><a href="#ch07-SECT-1.1">7.1.1. Print Commands</a></span></dt><dt><span class="sect2"><a href="#ch07-SECT-1.2">7.1.2. Printing Variables</a></span></dt><dt><span class="sect2"><a href="#ch07-SECT-1.3">7.1.3. A Minimal Printing Setup</a></span></dt><dt><span class="sect2"><a href="#ch07-SECT-1.4">7.1.4. The [printers] Share</a></span></dt><dt><span class="sect2"><a href="#ch07-SECT-1.5">7.1.5. Test Printing</a></span></dt><dt><span class="sect2"><a href="#ch07-SECT-1.6">7.1.6. Setting Up and Testing a Windows Client</a></span></dt><dt><span class="sect2"><a href="#ch07-30008">7.1.7. Automatically Setting Up Printer Drivers</a></span></dt></dl></dd><dt><span class="sect1"><a href="#ch07-31526">7.2. Printing to Windows Client Printers</a></span></dt><dd><dl><dt><span class="sect2"><a href="#ch07-SECT-2.0.1">7.2.1. BSD printers</a></span></dt><dt><span class="sect2"><a href="#ch07-SECT-2.0.2">7.2.2. System V printers</a></span></dt><dt><span class="sect2"><a href="#ch07-SECT-2.1">7.2.3. Samba Printing Options</a></span></dt></dl></dd><dt><span class="sect1"><a href="#ch07-12219">7.3. Name Resolution with Samba</a></span></dt><dd><dl><dt><span class="sect2"><a href="#ch07-SECT-3.1">7.3.1. The LMHOSTS File</a></span></dt><dt><span class="sect2"><a href="#ch07-SECT-3.2">7.3.2. Setting Up Samba to Use Another WINS Server</a></span></dt><dt><span class="sect2"><a href="#ch07-83429">7.3.3. Setting Up Samba as a WINS Server</a></span></dt><dt><span class="sect2"><a href="#ch07-SECT-3.4">7.3.4. Name Resolution Configuration Options</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#SAMBA-CH-8">8. Additional Samba Information </a></span></dt><dd><dl><dt><span class="sect1"><a href="#ch08-56646">8.1. Supporting Programmers</a></span></dt><dd><dl><dt><span class="sect2"><a href="#ch08-SECT-1.1">8.1.1. Time Synchronization</a></span></dt></dl></dd><dt><span class="sect1"><a href="#ch08-79987">8.2. Magic Scripts</a></span></dt><dd><dl><dt><span class="sect2"><a href="#ch08-SECT-2.0.1">8.2.1. magic script</a></span></dt><dt><span class="sect2"><a href="#ch08-SECT-2.0.2">8.2.2.
+magic output</a></span></dt></dl></dd><dt><span class="sect1"><a href="#ch08-91233">8.3. Internationalization</a></span></dt><dd><dl><dt><span class="sect2"><a href="#ch08-17721">8.3.1.
+client code page</a></span></dt><dt><span class="sect2"><a href="#ch08-SECT-3.0.2">8.3.2. character set</a></span></dt><dt><span class="sect2"><a href="#ch08-SECT-3.0.3">8.3.3. coding system</a></span></dt><dt><span class="sect2"><a href="#ch08-SECT-3.0.4">8.3.4. valid chars</a></span></dt></dl></dd><dt><span class="sect1"><a href="#ch08-82569">8.4. WinPopup Messages</a></span></dt><dd><dl><dt><span class="sect2"><a href="#ch08-SECT-4.0.1">8.4.1. message command</a></span></dt></dl></dd><dt><span class="sect1"><a href="#ch08-SECT-5">8.5. Recently Added Options</a></span></dt><dd><dl><dt><span class="sect2"><a href="#ch08-SECT-5.0.1">8.5.1. change notify timeout</a></span></dt><dt><span class="sect2"><a href="#ch08-SECT-5.0.2">8.5.2. machine password timeout</a></span></dt><dt><span class="sect2"><a href="#ch08-SECT-5.0.3">8.5.3. stat cache</a></span></dt><dt><span class="sect2"><a href="#ch08-SECT-5.0.4">8.5.4. stat cache size</a></span></dt></dl></dd><dt><span class="sect1"><a href="#ch08-70923">8.6. Miscellaneous Options</a></span></dt><dd><dl><dt><span class="sect2"><a href="#ch08-SECT-6.0.1">8.6.1.
+deadtime</a></span></dt><dt><span class="sect2"><a href="#ch08-SECT-6.0.2">8.6.2.
+dfree command</a></span></dt><dt><span class="sect2"><a href="#ch08-SECT-6.0.3">8.6.3.
+fstype</a></span></dt><dt><span class="sect2"><a href="#ch08-SECT-6.0.4">8.6.4. keep alive</a></span></dt><dt><span class="sect2"><a href="#ch08-SECT-6.0.5">8.6.5.
+max disk size</a></span></dt><dt><span class="sect2"><a href="#ch08-SECT-6.0.6">8.6.6.
+max mux</a></span></dt><dt><span class="sect2"><a href="#ch08-SECT-6.0.7">8.6.7.
+max open files</a></span></dt><dt><span class="sect2"><a href="#ch08-SECT-6.0.8">8.6.8.
+max xmit</a></span></dt><dt><span class="sect2"><a href="#ch08-SECT-6.0.9">8.6.9.
+nt pipe support</a></span></dt><dt><span class="sect2"><a href="#ch08-SECT-6.0.10">8.6.10.
+nt smb support</a></span></dt><dt><span class="sect2"><a href="#ch08-SECT-6.0.11">8.6.11.
+ole locking compatibility</a></span></dt><dt><span class="sect2"><a href="#ch08-SECT-6.0.12">8.6.12.
+panic action</a></span></dt><dt><span class="sect2"><a href="#ch08-SECT-6.0.13">8.6.13.
+set directory</a></span></dt><dt><span class="sect2"><a href="#ch08-SECT-6.0.14">8.6.14.
+smbrun</a></span></dt><dt><span class="sect2"><a href="#ch08-SECT-6.0.15">8.6.15.
+status</a></span></dt><dt><span class="sect2"><a href="#ch08-SECT-6.0.16">8.6.16.
+strict sync</a></span></dt><dt><span class="sect2"><a href="#ch08-SECT-6.0.17">8.6.17.
+sync always</a></span></dt><dt><span class="sect2"><a href="#ch08-SECT-6.0.18">8.6.18.
+strip dot</a></span></dt></dl></dd><dt><span class="sect1"><a href="#ch08-74829">8.7. Backups with smbtar</a></span></dt></dl></dd><dt><span class="chapter"><a href="#SAMBA-CH-9">9. Troubleshooting Samba</a></span></dt><dd><dl><dt><span class="sect1"><a href="#ch09-36385">9.1. The Tool Bag</a></span></dt><dd><dl><dt><span class="sect2"><a href="#ch09-SECT-1.1">9.1.1. Samba Logs</a></span></dt><dt><span class="sect2"><a href="#ch09-SECT-1.2">9.1.2. Samba Test Utilities</a></span></dt><dt><span class="sect2"><a href="#ch09-SECT-1.3">9.1.3. Unix Utilities</a></span></dt></dl></dd><dt><span class="sect1"><a href="#ch09-29538">9.2. The Fault Tree</a></span></dt><dd><dl><dt><span class="sect2"><a href="#ch09-SECT-2.1">9.2.1. How to use the fault tree</a></span></dt><dt><span class="sect2"><a href="#ch09-SECT-2.2">9.2.2. Troubleshooting Low-level IP </a></span></dt><dt><span class="sect2"><a href="#ch09-SECT-2.3">9.2.3. Troubleshooting TCP</a></span></dt><dt><span class="sect2"><a href="#ch09-88968">9.2.4. Troubleshooting Server Daemons</a></span></dt><dt><span class="sect2"><a href="#ch09-SECT-2.5">9.2.5. Troubleshooting SMB Connections</a></span></dt><dt><span class="sect2"><a href="#ch09-23573">9.2.6. Troubleshooting Browsing </a></span></dt><dt><span class="sect2"><a href="#ch09-21713">9.2.7. Other Things that Fail </a></span></dt><dt><span class="sect2"><a href="#ch09-23768">9.2.8. Troubleshooting Name Services</a></span></dt><dt><span class="sect2"><a href="#ch09-SECT-2.9">9.2.9. Troubleshooting Network Addresses</a></span></dt><dt><span class="sect2"><a href="#ch09-35552">9.2.10. Troubleshooting NetBIOS Names</a></span></dt></dl></dd><dt><span class="sect1"><a href="#ch09-49719">9.3. Extra Resources</a></span></dt><dd><dl><dt><span class="sect2"><a href="#ch09-SECT-3.1">9.3.1. Documentation and FAQs</a></span></dt><dt><span class="sect2"><a href="#ch09-SECT-3.2">9.3.2. Samba Newsgroups</a></span></dt><dt><span class="sect2"><a href="#ch09-SECT-3.3">9.3.3. Samba Mailing Lists</a></span></dt><dt><span class="sect2"><a href="#ch09-SECT-3.4">9.3.4. Samba Discussion Archives</a></span></dt><dt><span class="sect2"><a href="#ch09-SECT-3.5">9.3.5. Further Reading</a></span></dt></dl></dd></dl></dd><dt><span class="appendix"><a href="#SAMBA-AP-A">A. Configuring Samba with SSL</a></span></dt><dd><dl><dt><span class="sect1"><a href="#appa-SECT-1">A.1. About Certificates</a></span></dt><dd><dl><dt><span class="sect2"><a href="#appa-SECT-1.1">A.1.1. What is a Certificate?</a></span></dt><dt><span class="sect2"><a href="#appa-SECT-1.2">A.1.2. What is an X.509 certificate, technically?</a></span></dt><dt><span class="sect2"><a href="#appa-SECT-1.3">A.1.3. What are the implications of this certificate structure?</a></span></dt></dl></dd><dt><span class="sect1"><a href="#appa-SECT-2">A.2. Requirements</a></span></dt><dt><span class="sect1"><a href="#appa-SECT-3">A.3. Installing SSLeay</a></span></dt><dd><dl><dt><span class="sect2"><a href="#appa-SECT-3.1">A.3.1. Configuring SSLeay for Your System</a></span></dt><dt><span class="sect2"><a href="#appa-SECT-3.2">A.3.2. Configuring Samba to use SSL</a></span></dt><dt><span class="sect2"><a href="#appa-62097">A.3.3. Becoming a Certificate Authority</a></span></dt><dt><span class="sect2"><a href="#appa-SECT-3.4">A.3.4. Creating Certificates for Clients</a></span></dt><dt><span class="sect2"><a href="#appa-SECT-3.5">A.3.5. Configuring the Samba Server</a></span></dt><dt><span class="sect2"><a href="#appa-SECT-3.6">A.3.6. Testing with smbclient</a></span></dt></dl></dd><dt><span class="sect1"><a href="#appa-SECT-4">A.4. Setting Up SSL Proxy</a></span></dt><dt><span class="sect1"><a href="#appa-SECT-5">A.5. SSL Configuration Options</a></span></dt><dd><dl><dt><span class="sect2"><a href="#appa-SECT-5.0.1">A.5.1.
+ssl</a></span></dt><dt><span class="sect2"><a href="#appa-SECT-5.0.2">A.5.2.
+ssl hosts</a></span></dt><dt><span class="sect2"><a href="#appa-SECT-5.0.3">A.5.3.
+ssl hosts resign</a></span></dt><dt><span class="sect2"><a href="#appa-SECT-5.0.4">A.5.4.
+ssl CA certDir</a></span></dt><dt><span class="sect2"><a href="#appa-SECT-5.0.5">A.5.5.
+ssl CA certFile</a></span></dt><dt><span class="sect2"><a href="#appa-SECT-5.0.6">A.5.6.
+ssl server cert</a></span></dt><dt><span class="sect2"><a href="#appa-SECT-5.0.7">A.5.7.
+ssl server key</a></span></dt><dt><span class="sect2"><a href="#appa-SECT-5.0.8">A.5.8.
+ssl client cert</a></span></dt><dt><span class="sect2"><a href="#appa-SECT-5.0.9">A.5.9.
+ssl client key</a></span></dt><dt><span class="sect2"><a href="#appa-SECT-5.0.10">A.5.10.
+ssl require clientcert</a></span></dt><dt><span class="sect2"><a href="#appa-SECT-5.0.11">A.5.11.
+ssl require servercert</a></span></dt><dt><span class="sect2"><a href="#appa-SECT-5.0.12">A.5.12.
+ssl ciphers</a></span></dt><dt><span class="sect2"><a href="#appa-SECT-5.0.13">A.5.13.
+ssl version</a></span></dt><dt><span class="sect2"><a href="#appa-SECT-5.0.14">A.5.14.
+ssl compatibility</a></span></dt></dl></dd></dl></dd><dt><span class="appendix"><a href="#SAMBA-AP-B">B. Samba Performance Tuning</a></span></dt><dd><dl><dt><span class="sect1"><a href="#appb-47134">B.1. A Simple Benchmark</a></span></dt><dt><span class="sect1"><a href="#appb-50295">B.2. Samba Tuning</a></span></dt><dd><dl><dt><span class="sect2"><a href="#appb-SECT-2.1">B.2.1. Benchmarking</a></span></dt><dt><span class="sect2"><a href="#appb-SECT-2.2">B.2.2. Things to Tweak</a></span></dt><dt><span class="sect2"><a href="#appb-SECT-2.3">B.2.3. Other Samba Options</a></span></dt><dt><span class="sect2"><a href="#appb-SECT-2.4">B.2.4. Our Recommendations </a></span></dt></dl></dd><dt><span class="sect1"><a href="#appb-22511">B.3. Sizing Samba Servers</a></span></dt><dd><dl><dt><span class="sect2"><a href="#appb-SECT-3.1">B.3.1. The Bottlenecks</a></span></dt><dt><span class="sect2"><a href="#appb-SECT-3.2">B.3.2. Reducing Bottlenecks </a></span></dt><dt><span class="sect2"><a href="#appb-SECT-3.3">B.3.3. Practical Examples</a></span></dt><dt><span class="sect2"><a href="#appb-SECT-3.4">B.3.4. How Many Clients can Samba Handle?</a></span></dt><dt><span class="sect2"><a href="#appb-90359">B.3.5. Measurement Forms</a></span></dt></dl></dd></dl></dd><dt><span class="appendix"><a href="#SAMBA-AP-C">C. Samba Configuration Option Quick Reference</a></span></dt><dd><dl><dt><span class="sect1"><a href="#appc-SECT-1">C.1. Configuration Options</a></span></dt><dt><span class="sect1"><a href="#appc-SECT-2">C.2. Glossary of Configuration Values</a></span></dt><dt><span class="sect1"><a href="#appc-SECT-3">C.3. Configuration File Variables</a></span></dt></dl></dd><dt><span class="appendix"><a href="#SAMBA-AP-D">D. Summary of Samba Daemons and Commands</a></span></dt><dd><dl><dt><span class="sect1"><a href="#appd-SECT-1">D.1. Samba Distribution Programs</a></span></dt><dd><dl><dt><span class="sect2"><a href="#appd-SECT-1.1">D.1.1. smbd</a></span></dt><dt><span class="sect2"><a href="#appd-SECT-1.2">D.1.2. nmbd</a></span></dt><dt><span class="sect2"><a href="#appd-SECT-1.3">D.1.3. Samba Startup File </a></span></dt><dt><span class="sect2"><a href="#appd-SECT-1.4">D.1.4. smbsh</a></span></dt><dt><span class="sect2"><a href="#appd-SECT-1.5">D.1.5. smbclient</a></span></dt><dt><span class="sect2"><a href="#appd-SECT-1.6">D.1.6. smbstatus</a></span></dt><dt><span class="sect2"><a href="#appd-SECT-1.7">D.1.7. smbtar</a></span></dt><dt><span class="sect2"><a href="#appd-SECT-1.8">D.1.8. nmblookup</a></span></dt><dt><span class="sect2"><a href="#appd-SECT-1.9">D.1.9. smbpasswd</a></span></dt><dt><span class="sect2"><a href="#appd-SECT-1.10">D.1.10. testparm</a></span></dt><dt><span class="sect2"><a href="#appd-SECT-1.11">D.1.11. testprns</a></span></dt><dt><span class="sect2"><a href="#appd-SECT-1.12">D.1.12. rpcclient</a></span></dt><dt><span class="sect2"><a href="#appd-SECT-1.13">D.1.13. tcpdump</a></span></dt></dl></dd></dl></dd><dt><span class="appendix"><a href="#SAMBA-AP-E">E. Downloading Samba with CVS</a></span></dt><dt><span class="appendix"><a href="#SAMBA-AP-F">F. Sample Configuration File</a></span></dt></dl></div><div class="list-of-figures"><p><b>List of Figures</b></p><dl><dt>1.1. <a href="#ch01-45964">A simple network setup with a Samba server</a></dt><dt>1.2. <a href="#ch01-60493">The Network Neighborhood directory</a></dt><dt>1.3. <a href="#ch01-76011">Shares available on the hydra sever as viewed from phoenix</a></dt><dt>1.4. <a href="#ch01-55465">Mapping a network drive to a Windows letter-drive</a></dt><dt>1.5. <a href="#ch01-32686">The Network directory mapped to the client letter-drive G</a></dt><dt>1.6. <a href="#ch01-29255">Shares available on hydra (viewed from chimaera) </a></dt><dt>1.7. <a href="#ch01-46265">A network printer available on hydra (viewed from chimaera)</a></dt><dt>1.8. <a href="#ch01-86658">NBNS versus non-NBNS name registration</a></dt><dt>1.9. <a href="#ch01-72484">NBNS versus non-NBNS name resolution</a></dt><dt>1.10. <a href="#ch01-74707">The structure of NetBIOS names</a></dt><dt>1.11. <a href="#ch01-96972">A simple Windows domain</a></dt><dt>1.12. <a href="#ch01-49344">Using a domain controller for authentication</a></dt><dt>1.13. <a href="#ch01-77521">A Windows domain with a local master and local backup browser</a></dt><dt>1.14. <a href="#ch01-52572">A workgroup that spans more than one subnet</a></dt><dt>2.1. <a href="#ch02-60915">SWAT login</a></dt><dt>2.2. <a href="#ch02-49138">SWAT Global Variables page</a></dt><dt>2.3. <a href="#ch02-29175">SWAT Share Creation screen</a></dt><dt>2.4. <a href="#ch02-37186">SWAT Share Parameters screen</a></dt><dt>3.1. <a href="#ch03-84319">The Passwords Properties panel</a></dt><dt>3.2. <a href="#ch03-26778">The Change Passwords tab</a></dt><dt>3.3. <a href="#ch03-97002">The Change Windows Password dialog box</a></dt><dt>3.4. <a href="#ch03-48947">Windows Networking profiles</a></dt><dt>3.5. <a href="#ch03-15320">The Windows 95/98 Network panel</a></dt><dt>3.6. <a href="#ch03-24245">Selecting a protocol to install</a></dt><dt>3.7. <a href="#ch03-50801">Selecting a protocol to install</a></dt><dt>3.8. <a href="#ch03-61576">Selecting the correct TCP/IP protocol</a></dt><dt>3.9. <a href="#ch03-73526">STCP/IP Properties panel</a></dt><dt>3.10. <a href="#ch03-86883">The DNS Configuration tab</a></dt><dt>3.11. <a href="#ch03-95608">The WINS Configuration tab</a></dt><dt>3.12. <a href="#ch03-42906">The Bindings tab</a></dt><dt>3.13. <a href="#ch03-42408">The Identification tab</a></dt><dt>3.14. <a href="#ch03-88553">Windows Network Neighborhood</a></dt><dt>3.15. <a href="#ch03-17463">Shares on Server</a></dt><dt>3.16. <a href="#ch03-82592">Network panel Identification tab</a></dt><dt>3.17. <a href="#ch03-67735">Changing the identification</a></dt><dt>3.18. <a href="#ch03-66055">The Protocols tab</a></dt><dt>3.19. <a href="#ch03-22321">Select Network Protocol dialog box</a></dt><dt>3.20. <a href="#ch03-97222">Network Services panel dialog box</a></dt><dt>3.21. <a href="#ch03-40000">Select Network Service dialog box </a></dt><dt>3.22. <a href="#ch03-97098">Microsoft TCP/IP Properties for Windows NT</a></dt><dt>3.23. <a href="#ch03-61878">The DNS panel</a></dt><dt>3.24. <a href="#ch03-20855">The WINS Address tab</a></dt><dt>3.25. <a href="#ch03-83060">Service bindings</a></dt><dt>3.26. <a href="#ch03-50785">Windows NT Network Neighborhood</a></dt><dt>3.27. <a href="#ch03-89532">Server's shares</a></dt><dt>3.28. <a href="#ch03-69480">Two computers that both have resources to share</a></dt><dt>4.1. <a href="#ch04-97340">The include option in a Samba configuration file</a></dt><dt>4.2. <a href="#ch04-38915">Network Neighborhood showing the Samba server</a></dt><dt>4.3. <a href="#ch04-50900">Network Neighborhood details listing</a></dt><dt>4.4. <a href="#ch04-13866">The initial data share on the Samba server</a></dt><dt>4.5. <a href="#ch04-88746">Windows client view of a network filesystem specified by path</a></dt><dt>4.6. <a href="#ch04-34850">Windows client view of a share comment</a></dt><dt>4.7. <a href="#ch04-28393">Using NetBIOS aliases for a Samba server
+ </a></dt><dt>5.1. <a href="#ch05-15706">Multiple subnets with Samba servers</a></dt><dt>5.2. <a href="#ch05-77260">Hidden files in the [data] share</a></dt><dt>5.3. <a href="#ch05-19743">Hiding files based on filename patterns</a></dt><dt>5.4. <a href="#ch05-62659">Contents of the [data] share with dont descend
+
+ </a></dt><dt>5.5. <a href="#ch05-36377">An error dialog trying to follow symbolic links when forbidden by Samba</a></dt><dt>5.6. <a href="#ch05-76568">DOS and Windows file properties</a></dt><dt>5.7. <a href="#ch05-56404">How Samba and Unix view the permissions of a file</a></dt><dt>5.8. <a href="#ch05-74304">Opportunistic locking</a></dt><dt>6.1. <a href="#ch06-33100">Selecting share-level security on a Windows machine</a></dt><dt>6.2. <a href="#ch06-89929">A typical system setup using server level security</a></dt><dt>6.3. <a href="#ch06-54128">Structure of the smbpasswd file entry (actually one line)</a></dt><dt>6.4. <a href="#ch06-48609">Configuring a Windows 95/98 client for domain logons</a></dt><dt>6.5. <a href="#ch06-89804">Configuring a Windows NT client for domain logons</a></dt><dt>6.6. <a href="#ch06-71393">Local profiles versus roaming profiles</a></dt><dt>7.1. <a href="#ch07-35075">A Samba printer in the Network Neighborhood</a></dt><dt>7.2. <a href="#ch07-60084">A printer in the Network Neighborhood</a></dt><dt>7.3. <a href="#ch07-69466">Printer manufacturers and models</a></dt><dt>7.4. <a href="#ch07-43374">Printing successfully completed</a></dt><dt>7.5. <a href="#ch07-52397">The Printers window</a></dt><dt>7.6. <a href="#ch07-60108">Automatically configuring the printer driver</a></dt><dt>7.7. <a href="#ch07-32814">The Printers window</a></dt><dt>7.8. <a href="#ch07-92021">The Sharing tab of the printer</a></dt><dt>7.9. <a href="#ch07-46183">The Add Printer Wizard dialog box in Windows 98</a></dt><dt>8.1. <a href="#ch08-66444">The WinPopup application</a></dt><dt>8.2. <a href="#ch08-18303">The Networking window</a></dt><dt>8.3. <a href="#ch08-41042">TCP/IP Bindings</a></dt><dt>8.4. <a href="#ch08-64918">My Documents Properties</a></dt><dt>8.5. <a href="#ch08-29192">MyFiles Properties as shared</a></dt><dt>9.1. <a href="#ch09-91668">Pinging the Samba server from a Windows client</a></dt><dt>9.2. <a href="#ch09-99328">Results of the NET USE command</a></dt><dt>9.3. <a href="#ch09-74414">Accessing the /tmp directory with Windows Explorer</a></dt><dt>9.4. <a href="#ch09-83710">Using the net view command</a></dt><dt>9.5. <a href="#ch09-60004">List of shares on a server</a></dt><dt>A.1. <a href="#appa-89929">Two possible ways of proxying Windows 95/98 clients</a></dt><dt>B.1. <a href="#appb-34738">SO_SNDBUF size and performance</a></dt><dt>B.2. <a href="#appb-98866">Data flow through a Samba server, with possible bottlenecks</a></dt></dl></div><div class="list-of-tables"><p><b>List of Tables</b></p><dl><dt>1.1. <a href="#ch01-91681">NetBIOS Node Types </a></dt><dt>1.2. <a href="#ch01-11471">NetBIOS Unique Resource Types </a></dt><dt>1.3. <a href="#ch01-52395">NetBIOS Group Resource Types </a></dt><dt>1.4. <a href="#ch01-29352">Datagram Primitives </a></dt><dt>1.5. <a href="#ch01-75575">Session Primitives </a></dt><dt>1.6. <a href="#ch01-14021">Samba Roles (as of 2.0.4b) </a></dt><dt>2.1. <a href="#ch02-85125">Additional Configure Options </a></dt><dt>2.2. <a href="#SAMBA-CH-2-TBL-2.2">Samba Installation Directories </a></dt><dt>3.1. <a href="#ch03-31015">SMB Header Fields  </a></dt><dt>3.2. <a href="#ch03-38178">SMB Command Contents </a></dt><dt>3.3. <a href="#ch03-67366">SMB Protocol Dialects </a></dt><dt>4.1. <a href="#ch04-10883">Samba Variables </a></dt><dt>4.2. <a href="#ch04-94939">Configuration File Options </a></dt><dt>4.3. <a href="#ch04-61150">Server Configuration Options </a></dt><dt>4.4. <a href="#ch04-82964">Basic Share Configuration Options </a></dt><dt>4.5. <a href="#ch04-32963">Networking Configuration Options </a></dt><dt>4.6. <a href="#ch04-92259">Virtual Server Configuration Options </a></dt><dt>4.7. <a href="#ch04-92838">Global Configuration Options </a></dt><dt>4.8. <a href="#ch04-80576">Syslog Priority Conversion </a></dt><dt>5.1. <a href="#ch05-51423">Operating System Values in an Election </a></dt><dt>5.2. <a href="#SAMBA-CH-5-TBL-5.2">Computer Role Settings in an Election </a></dt><dt>5.3. <a href="#ch05-81028">Browsing Configuration Options </a></dt><dt>5.4. <a href="#ch05-48353">Filesystem Configuration Options </a></dt><dt>5.5. <a href="#ch05-96508">File and Directory Permission Options </a></dt><dt>5.6. <a href="#ch05-24354">Operating System Filename Limitations </a></dt><dt>5.7. <a href="#ch05-47431">Name Mangling Options </a></dt><dt>5.8. <a href="#ch05-53407">Locks and Oplocks Configuration Options </a></dt><dt>5.9. <a href="#ch05-55885">SMB Deny-Mode Locks </a></dt><dt>6.1. <a href="#ch06-28077">Share-level Access Options </a></dt><dt>6.2. <a href="#ch06-82964">Username Options </a></dt><dt>6.3. <a href="#ch06-73905">Security Option </a></dt><dt>6.4. <a href="#ch06-80998">Share-Level Access Options </a></dt><dt>6.5. <a href="#ch06-75183">Windows Operating Systems with Encrypted Passwords </a></dt><dt>6.6. <a href="#ch06-77246">Password Chat Response Characters </a></dt><dt>6.7. <a href="#ch06-38512">Password Chat Send Characters </a></dt><dt>6.8. <a href="#ch06-68460">Password Configuration Options </a></dt><dt>6.9. <a href="#ch06-53106">Windows 95/98 Domain Logon Options </a></dt><dt>6.10. <a href="#ch06-46661">Logon Script Options </a></dt><dt>6.11. <a href="#ch06-67528">Connection Script Options </a></dt><dt>6.12. <a href="#ch06-27466">NIS Options </a></dt><dt>7.1. <a href="#ch07-29758">Printing Variables </a></dt><dt>7.2. <a href="#ch07-19361">Printing Configuration Options </a></dt><dt>7.3. <a href="#ch07-28758">Printing Types </a></dt><dt>7.4. <a href="#ch07-82964">Default Commands for Various Printing Commands </a></dt><dt>7.5. <a href="#ch07-82331">WINS Options </a></dt><dt>8.1. <a href="#ch08-73167">Programming Configuration Options </a></dt><dt>8.2. <a href="#ch08-33693">Networking Configuration Options </a></dt><dt>8.3. <a href="#ch08-40870">Networking Configuration Options </a></dt><dt>8.4. <a href="#ch08-20815">Valid Code Pages with Samba 2.0 </a></dt><dt>8.5. <a href="#ch08-14126">Valid Character Sets with Samba 2.0 </a></dt><dt>8.6. <a href="#ch08-57476">Valid Coding System Parameters with Samba 2.0 </a></dt><dt>8.7. <a href="#ch08-18671">WinPopup Configuration Option </a></dt><dt>8.8. <a href="#ch08-29758">Message Command Variables </a></dt><dt>8.9. <a href="#ch08-72538">Recently Added Options </a></dt><dt>8.10. <a href="#ch08-83566">Miscellaneous Options </a></dt><dt>8.11. <a href="#ch08-80519">Filesystem Types </a></dt><dt>A.1. <a href="#appa-61150">SSL Configuration Options </a></dt><dt>B.1. <a href="#appb-73167">Sample Benchmark Benchmarks </a></dt><dt>B.2. <a href="#appb-78077">Disk Throughput </a></dt><dt>B.3. <a href="#appb-42029">CPU Throughput </a></dt><dt>B.4. <a href="#appb-67604">Network Throughput </a></dt><dt>B.5. <a href="#appb-26613">Tuning a Medium-Sized Server </a></dt><dt>B.6. <a href="#appb-82208">Ethernet Interface to Same Host: FTP </a></dt><dt>B.7. <a href="#appb-34846">Ethernet Interface to Same Host: FTP </a></dt><dt>B.8. <a href="#appb-51003">Bottleneck Calculation Table</a></dt><dt>B.9. <a href="#appb-37370">Ethernet Interface to Same Host: FTP </a></dt><dt>B.10. <a href="#SAMBA-AP-B-TBL-10">Sparc 20 Example, Redux</a></dt><dt>C.1. <a href="#appc-88529">Variables in Alphabetic Order </a></dt><dt>D.1. <a href="#appd-89417">smbclient Commands </a></dt><dt>D.2. <a href="#appd-39300">smbclient Printing Commands </a></dt><dt>D.3. <a href="#appd-54517">smbclient Printing Commands </a></dt><dt>D.4. <a href="#appd-65243">rpcclient commands </a></dt></dl></div><div class="preface" lang="en"><div class="titlepage"></div><p>Copyright © 2000 O'Reilly &amp; Associates, Inc. All rights reserved. This material may be redistributed only under the terms of the Open Content
+License.  For information on the Open Content License under which the
+contents of this book are licensed, see <code class="systemitem">http://www.oreilly.com/catalog/samba/</code>.</p><p>Printed in the United States of America.</p><p>Published by O'Reilly &amp; Associates, Inc., 101 Morris Street,
+Sebastopol, CA 95472.</p><p>The O'Reilly logo is a registered trademark of O'Reilly &amp;
+Associates, Inc.  Many of the designations used by manufacturers and
+sellers to distinguish their products are claimed as trademarks.
+Where those designations appear in this book, and O'Reilly &amp;
+Associates, Inc. was aware of a trademark claim, the designations have
+been printed in caps or initial caps. The association between the
+image of the North African ground hornbill and the topic of Samba is
+a trademark of O'Reilly &amp; Associates, Inc.</p><p>While every precaution has been taken in the preparation of this
+book, the publisher assumes no responsibility for errors or omissions,
+or for damages resulting from the use of the information contained
+herein.</p></div><div class="preface" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="ch00"></a>Preface</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="#ch00-SECT-1">The Samba Suite</a></span></dt><dt><span class="sect1"><a href="#ch00-SECT-2">Audience for this Book</a></span></dt><dt><span class="sect1"><a href="#ch00-SECT-3">Samba Installation Checklist</a></span></dt><dt><span class="sect1"><a href="#ch00-SECT-4">Organization</a></span></dt><dt><span class="sect1"><a href="#ch00-SECT-5">Conventions</a></span></dt><dt><span class="sect1"><a href="#ch00-SECT-6">Request for Comments</a></span></dt><dt><span class="sect1"><a href="#ch00-SECT-7">Acknowledgments</a></span></dt></dl></div><p>It's nine in the morning and you've just arrived at the computer center after a refreshing night's sleep. Your pager hasn't gone off in months. Life is pretty good as a system administrator &#8212; and why shouldn't it be, with the network you're running? Two hundred identical machines, all running the same operating system. All of the printers are networked, accessible from anywhere in the building, and the auto-configuration scripts that the manufacturer supplied ensure that everyone in the company has a consistent view of the shared disks you've set up. Yes, this is the good life. You lean back and take that first delicious sip of morning coffee . . . .</p><p>And then, the alarm clock jolts you out of your blissful reverie. If you're like most system administrators, this could only be a dream. Your morning probably starts with a tireless struggle to get four different computer platforms running three different operating systems simply to talk to each other &#8212; that is, if the phone ever stops ringing. Most of your users don't understand why it's so hard to access a file on another computer or to send a job to a remote printer. The logs show that the backups are late. For some reason the PCs on the second floor can't find the tape server. With all these headaches, what's a network administrator to do?</p><p>Easy: take the day off, read this book, and learn Samba!</p><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="ch00-SECT-1"></a>The Samba Suite</h2></div></div></div><p>Samba is a suite of tools for sharing resources such as printers and files across a network. This may be a bit of an oversimplification, but Samba is really designed to make your life easier. Samba uses the Server Message Block (SMB) protocol, which is endorsed jointly by Microsoft and IBM, to communicate low-level data between Windows clients and Unix servers on a TCP/IP network.</p><p>
+<a class="indexterm" name="ch00-idx-941381-0"></a>Four features of Samba make it extremely attractive:</p><div class="itemizedlist"><ul type="disc"><li><p>Samba speaks the same SMB protocol that Microsoft and IBM operating systems have used as their standard since DOS 3.0. This means that almost all Windows machines already understand it and there is no extra client software to install.</p></li><li><p>Samba runs on a variety of platforms, including most variants of Unix, OpenVMS, OS/2, AmigaDOS, and NetWare. This means that you can use a single program on the server to provide files and printers to a community of PCs.</p></li><li><p>Samba is free. There are several commercial products that duplicate Samba's features, and some of them are quite expensive. Samba offers you an alternative to packages that could gobble up a significant portion of your IS budget. Samba is distributed under the GNU General Public License (GPL), and is considered by its authors to be <em class="firstterm">Open Source</em> software. In other words, you can freely download both the application and the accompanying source code to your computer, and even improve on the original Samba programs if you like.</p></li><li><p>Samba administration is centralized on the server. You don't have to visit every one of your machines, floppy or CD-ROM in hand, to upgrade the client software.</p></li></ul></div><p>Samba is a complete solution for local area networks (LANs) of all sizes&#8212;everything from the two-computer home network to corporate installations with hundreds of nodes. Samba is simple to set up and to administer, and presents itself as a transparent network environment that offers users access to all of the resources they need to get their work done. Once you've set it up, Samba will let you:</p><div class="itemizedlist"><ul type="disc"><li><p>Serve Unix files to Windows, OS/2, and other OS clients</p></li><li><p>Allow Unix clients to access PC files</p></li><li><p>Serve network printers to Windows clients</p></li><li><p>Provide name services (broadcast and WINS)</p></li><li><p>Allow browsing of network resources from Windows clients</p></li><li><p>Create Windows workgroups or domains</p></li><li><p>Enforce username and password authentication of clients</p></li></ul></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="ch00-SECT-2"></a>Audience for this Book</h2></div></div></div><p>The primary audience of this book is Unix administrators who need to support PCs on their network, and anyone who needs to provide a Unix server in a PC environment. But we don't want to burden you with an endless series of arcane system administration tools and vocabulary. While we assume you are familiar with basic Unix system administration, we will <span class="emphasis"><em>not</em></span> assume you are a networking expert. We'll do our best along the way to help out with unusual definitions and terms.</p><p>Because we don't assume a tremendous amount of experience with Microsoft Windows, we will go through the PC side of the installation task in considerable detail and give examples for both Windows 95/98 and Windows NT, which are subtly different. For the Unix side, we will give examples for common Unix operating systems, such as Linux 2.0 or Solaris 2.6.</p></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="ch00-SECT-3"></a>Samba Installation Checklist</h2></div></div></div><p>Before you get started, you should have:</p><div class="itemizedlist"><ul type="disc"><li><p><a class="indexterm" name="ch00-idx-941383-0"></a><a class="indexterm" name="ch00-idx-941383-1"></a><a class="indexterm" name="ch00-idx-941383-2"></a>
+
+
+
+The latest Samba distribution, which you can download directly off the Internet at <code class="systemitem">http://www.samba.org/</code>.</p></li><li><p>The names and IP addresses of the servers and client machines you plan to use, the netmask of your network, and the names and IP addresses of your domain name (DNS) servers.</p></li></ul></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="ch00-SECT-4"></a>Organization</h2></div></div></div><p>The book can be roughly divided into two sections: Samba installation (<a href="#ch01-48078" title="Chapter 1. Learning the Samba">Chapter 1</a> through <a href="#SAMBA-CH-3" title="Chapter 3. Configuring Windows Clients">Chapter 3</a>) and Samba configuration and optimization (<a href="#ch04-21486" title="Chapter 4. Disk Shares">Chapter 4</a> through <a href="#SAMBA-CH-9" title="Chapter 9. Troubleshooting Samba">Chapter 9</a>). Here is a detailed breakdown of each of the chapters:</p><div class="variablelist"><dl><dt><span class="term"><a href="#ch01-48078" title="Chapter 1. Learning the Samba">Chapter 1</a></span></dt><dd><p>This chapter introduces each of the Samba components and gives a brief overview of NetBIOS and Windows networking.</p></dd><dt><span class="term"><a href="#SAMBA-CH-2" title="Chapter 2. Installing Samba on a Unix System">Chapter 2</a></span></dt><dd><p>This chapter covers configuring, compiling, installing, and testing the Samba server on a Unix platform.</p></dd><dt><span class="term"><a href="#SAMBA-CH-3" title="Chapter 3. Configuring Windows Clients">Chapter 3</a></span></dt><dd><p>This chapter explains how to configure Microsoft Windows 95/98 and NT 4.0 clients to participate in an SMB network. It also gives a brief introduction to the SMB protocol in action.</p></dd><dt><span class="term"><a href="#ch04-21486" title="Chapter 4. Disk Shares">Chapter 4</a></span></dt><dd><p>This chapter gets you up to speed with the individual parts of the Samba configuration file and shows you how to configure disk services.</p></dd><dt><span class="term"><a href="#SAMBA-CH-5" title="Chapter 5. Browsing and Advanced Disk Shares">Chapter 5</a></span></dt><dd><p>This chapter continues the discussion of disk options and examines browsing with Samba.</p></dd><dt><span class="term"><a href="#SAMBA-CH-6" title="Chapter 6. Users, Security, and Domains">Chapter 6</a></span></dt><dd><p>This chapter discusses how to set up users, introduces you to Samba security, and shows you how to work with encrypted and non-encrypted passwords. We also discuss how to set up Samba as a primary domain controller for Windows 95/98 and NT clients.</p></dd><dt><span class="term"><a href="#SAMBA-CH-7" title="Chapter 7. Printing and Name Resolution">Chapter 7</a></span></dt><dd><p>This chapter discusses printer and Windows Internet Naming Service (WINS) setup with Samba.</p></dd><dt><span class="term"><a href="#SAMBA-CH-8" title="Chapter 8. Additional Samba Information">Chapter 8</a></span></dt><dd><p>This chapter bundles several miscellaneous activities associated with Samba, such as configuring Samba shares for programmers, internationalization issues, and backing up with <span class="emphasis"><em>smbtar</em></span>.</p></dd><dt><span class="term"><a href="#SAMBA-CH-9" title="Chapter 9. Troubleshooting Samba">Chapter 9</a></span></dt><dd><p>If you have problems installing Samba, this comparatively large chapter is packed with troubleshooting hints and strategies as to what might be going wrong.</p></dd><dt><span class="term"><a href="#SAMBA-AP-A" title="Appendix A. Configuring Samba with SSL">Appendix A</a></span></dt><dd><p>This appendix shows you the nitty-gritty of setting up Samba with Secure Sockets Layers (SSL) connections between the server and its clients.</p></dd><dt><span class="term"><a href="#SAMBA-AP-B" title="Appendix B. Samba Performance Tuning">Appendix B</a></span></dt><dd><p>This appendix discusses various techniques to optimize Samba processing on your network.</p></dd><dt><span class="term"><a href="#SAMBA-AP-C" title="Appendix C. Samba Configuration Option Quick Reference">Appendix C</a></span></dt><dd><p>This appendix covers each of the options used in the <code class="filename">smb.conf</code> file.</p></dd><dt><span class="term"><a href="#SAMBA-AP-D" title="Appendix D. Summary of Samba Daemons and Commands">Appendix D</a></span></dt><dd><p>Each of the server daemons and tools that make up the Samba suite are covered in this appendix. In addition, we provide a list of mirror sites on the Internet from which Samba can be downloaded.</p></dd><dt><span class="term"><a href="#SAMBA-AP-E" title="Appendix E. Downloading Samba with CVS">Appendix E</a></span></dt><dd><p>This appendix explains how to download the latest version of Samba with CVS.</p></dd><dt><span class="term"><a href="#SAMBA-AP-F" title="Appendix F. Sample Configuration File">Appendix F</a></span></dt><dd><p>This appendix provides a large-scale Samba configuration file, which you might find in place at a large corporation. We have embedded comments in the file to explain the more arcane options.</p></dd></dl></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="ch00-SECT-5"></a>Conventions</h2></div></div></div><p>The following font conventions are followed throughout this book:</p><div class="variablelist"><dl><dt><span class="term">Italic </span></dt><dd><p>Filenames, file extensions, URLs, Internet addresses, executable files, commands, and emphasis.</p></dd><dt><span class="term"><code class="literal">Constant Width</code> </span></dt><dd><p>Samba configuration options and other code that appear in the text, and command-line information that should be typed verbatim on the screen.</p></dd><dt><span class="term"><strong class="userinput"><code>Bold Constant Width</code></strong> </span></dt><dd><p>Commands that are entered by the user, and new configuration options that we wish to bring to the attention of the reader.</p></dd><dt><span class="term"><em class="replaceable"><code>Constant Width Italic</code></em></span></dt><dd><p>Replaceable content in code and command-line information.</p></dd></dl></div><div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title"><a name="ch00-NOTE-0"></a>Tip</h3><p>This icon designates a note, which is an important aside to the nearby text.</p></div><div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title"><a name="ch00-NOTE-1"></a>Warning</h3><p>This icon designates a warning related to the nearby text.</p></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="ch00-SECT-6"></a>Request for Comments</h2></div></div></div><p>As a reader of this book, you can help us to improve the next edition. If you find errors, inaccuracies, or typographical errors anywhere in the book, please let us at O'Reilly know about them. Also, if you find any misleading statements or confusing explanations, let us know that as well. Send all correspondence to:</p><table class="simplelist" border="0" summary="Simple list"><tr><td>O'Reilly &amp; Associates</td></tr><tr><td>101 Morris Street</td></tr><tr><td>Sebastopol, CA 95472</td></tr><tr><td>1-800-998-9938 (in the U.S. or Canada)</td></tr><tr><td>1-707-829-0515 (international/local)</td></tr><tr><td>1-707-829-0104 (fax)</td></tr><tr><td><code class="email">&lt;<a href="mailto:bookquestions@ora.com">bookquestions@ora.com</a>&gt;</code></td></tr></table><p>Please let us know what we can do to make the book more helpful to you. We take your comments seriously, and will do whatever we can to make this book as useful as it can be.</p></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="ch00-SECT-7"></a>Acknowledgments</h2></div></div></div><p>Robert Eckstein</p><div class="blockquote"><blockquote class="blockquote"><p>I'd first like to recognize Dave Collier-Brown and Peter Kelly for all their help in the creation of this book. I'd also like to thank each of the technical reviewers that helped polish this book into shape on such short notice: Matthew Temple, Jeremy Allison, and of course Andrew Tridgell. Andrew and Jeremy deserve special recognition, not only for creating such a wonderful product, but for providing a tireless amount of support in the final phase of this book&#8212;hats off to you, guys! A warm hug goes out to my wife Michelle, who once again put up with a husband loaded down with too much caffeine on a tight schedule. Thanks to Dave Sifry and the people at LinuxCare, San Francisco, for hosting me on such short notice for Andrew Tridgell's visit. And finally, a huge amount of thanks to our editor, Andy Oram, who (very) patiently helped guide this book through its many stages until we got it right.</p></blockquote></div><p>David Collier-Brown</p><div class="blockquote"><blockquote class="blockquote"><p>I'd especially like to thank Joyce, who put up with me during the sometimes exciting development of the book. My thanks to Andy Oram, who was kind enough to provide the criticism that allowed me to contribute; the crew at Opcom who humored the obvious madman in their midst; and Ian MacMillan, who voluntarily translated several of my early drafts from nerd to English. I would also like to give special thanks to Perry Donham, Drew Sullivan, and Jerry DeRoo.</p></blockquote></div><p>Peter Kelly</p><div class="blockquote"><blockquote class="blockquote"><p>A few people really made this book possible, and I have to bow to them. Dave Collier-Brown, and then Bob Eckstein, took over my part of this project with style and professionalism and I can't explain how much I owe them for the great work that came out of it. Editor Andy Oram is by far the most patient and pleasant person I have met. Also, I don't think that I would have been involved in this book without the help of Xavier Cazin from O'Reilly, who originally came to me asking for a proposal after reading my Linux Journal article. I also would like to thank all of the JDP.COM consultants (  Jerry, Peggyann, Drew, Gord, Jerome, Mark, Rick&#8212;too many to list!) for allowing me to continue to work with them. I thank the O'Reilly staff that I have worked with as well; they are a great bunch of people. Also, thanks to the Samba Team for making Samba in the first place. And most importantly, Kate McKay, for staying with me this long!</p></blockquote></div><p>We would especially like to give thanks to Perry Donham for helping mold the first draft of this book. Although Perry was unable to contribute to subsequent drafts, his material was essential to getting this book off on the right foot. In addition, some of the browsing material came from text originally written by Dan Shearer for O'Reilly.</p><p>We are deeply indebted to the production department at O'Reilly for another fantastic job. Sarah Jane Shangraw worked long hours accommodating our seemingly endless edits, and Rob Romano tirelessly edited our images again and again until they were perfect. Special thanks also to Claire Cloutier LeBlanc, Rhon Porter, and Mike Sierra for their help&#8212;we couldn't have done it without any of them. It is largely through their collective efforts that this book arrived to you in November 1999 instead of November 2000.</p></div></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="ch01-48078"></a>Chapter 1. Learning the Samba</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="#ch01-28119">1.1. What is Samba?</a></span></dt><dt><span class="sect1"><a href="#ch01-SECT-2">1.2. What Can Samba Do For Me?</a></span></dt><dd><dl><dt><span class="sect2"><a href="#ch01-SECT-2.1">1.2.1. Sharing a Disk Service</a></span></dt><dt><span class="sect2"><a href="#ch01-SECT-2.2">1.2.2. Sharing a Printer</a></span></dt></dl></dd><dt><span class="sect1"><a href="#ch01-88536">1.3. Getting Familiar with a SMB/CIFS Network</a></span></dt><dd><dl><dt><span class="sect2"><a href="#ch01-SECT-3.1">1.3.1. Understanding NetBIOS</a></span></dt><dt><span class="sect2"><a href="#ch01-SECT-3.2">1.3.2. Getting a Name</a></span></dt><dt><span class="sect2"><a href="#ch01-SECT-3.3">1.3.3. Node Types</a></span></dt><dt><span class="sect2"><a href="#ch01-SECT-3.4">1.3.4. What's in a Name?</a></span></dt><dt><span class="sect2"><a href="#ch01-SECT-3.5">1.3.5. Datagrams and Sessions</a></span></dt></dl></dd><dt><span class="sect1"><a href="#ch01-43359">1.4. Microsoft Implementations</a></span></dt><dd><dl><dt><span class="sect2"><a href="#ch01-SECT-4.1">1.4.1. Windows Domains</a></span></dt><dt><span class="sect2"><a href="#ch01-SECT-4.2">1.4.2. Browsing</a></span></dt><dt><span class="sect2"><a href="#ch01-SECT-4.3">1.4.3. Can a Windows Workgroup Span Multiple Subnets?</a></span></dt><dt><span class="sect2"><a href="#ch01-SECT-4.4">1.4.4. The Windows Internet Name Service (WINS)</a></span></dt><dt><span class="sect2"><a href="#ch01-12452">1.4.5. What Can Samba Do?</a></span></dt></dl></dd><dt><span class="sect1"><a href="#ch01-32691">1.5. An Overview of the Samba Distribution</a></span></dt><dt><span class="sect1"><a href="#ch01-SECT-6">1.6. How Can I Get Samba?</a></span></dt><dt><span class="sect1"><a href="#ch01-40528">1.7. What's New in Samba 2.0?</a></span></dt><dd><dl><dt><span class="sect2"><a href="#ch01-SECT-7.1">1.7.1. NT Domains</a></span></dt><dt><span class="sect2"><a href="#ch01-SECT-7.2">1.7.2. Ease of Administration</a></span></dt><dt><span class="sect2"><a href="#ch01-SECT-7.3">1.7.3. Performance</a></span></dt><dt><span class="sect2"><a href="#ch01-SECT-7.4">1.7.4. More Features</a></span></dt><dt><span class="sect2"><a href="#ch01-SECT-7.5">1.7.5. Compatibility Improvements</a></span></dt><dt><span class="sect2"><a href="#ch01-SECT-7.6">1.7.6. Smbwrapper</a></span></dt></dl></dd><dt><span class="sect1"><a href="#ch01-99818">1.8. And That's Not All...</a></span></dt></dl></div><p>
+<a class="indexterm" name="ch01-idx-951466-0"></a>If you are a typical system administrator, then you know what it means to be <span class="emphasis"><em>swamped</em></span> with work. Your daily routine is filled with endless hardware incompatibility issues, system outages, data backup problems, and a steady stream of angry users. So adding another program to the mix of tools that you have to maintain may sound a bit perplexing. However, if you're determined to reduce the complexity of your work environment, as well as the workload of keeping it running smoothly, Samba may be the tool you've been waiting for.</p><p>A case in point: one of the authors of this book used to look after 70 Unix developers sharing 5 Unix servers. His neighbor administered 20 Windows 3.1 users and 5 OS/2 and Windows NT servers. To put it mildly, the Windows 3.1 administrator was swamped. When he finally left&#8212;and the domain controller melted&#8212;Samba was brought to the rescue. Our author quickly replaced the Windows NT and   OS/2 servers with Samba running on a Unix server, and eventually bought PCs for most of the company developers. However, he did the latter without hiring a new PC administrator; the administrator now manages one centralized Unix application instead of fifty distributed PCs.</p><p>If you know you're facing a problem with your network and you're sure there is a better way, we encourage you to start reading this book. Or, if you've heard about Samba and you want to see what it can do for you, this is also the place to start. We'll get you started on the path to understanding Samba and its potential. Before long, you can provide Unix services to all your Windows machines&#8212;all without spending tons of extra time or money. Sound enticing? Great, then let's get started.</p><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="ch01-28119"></a>What is Samba?</h2></div></div></div><p>Samba is a suite of Unix applications that speak the <a class="indexterm" name="ch01-idx-951468-0"></a>
+<a class="indexterm" name="ch01-idx-951468-1"></a>SMB (Server Message Block) protocol. Many operating systems, including Windows and OS/2, use SMB to perform client-server networking. By supporting this protocol, Samba allows Unix servers to get in on the action, communicating with the same networking protocol as Microsoft Windows products. Thus, a Samba-enabled Unix machine can masquerade as a server on your Microsoft network and offer the following services:</p><div class="itemizedlist"><ul type="disc"><li><p>
+<a class="indexterm" name="ch01-idx-951506-0"></a>Share one or more filesystems</p></li><li><p>Share printers installed on both the server and its clients</p></li><li><p>Assist clients with Network Neighborhood browsing</p></li><li><p>Authenticate clients logging onto a Windows domain</p></li><li><p>Provide or assist with WINS name server resolution</p></li></ul></div><p>Samba is the brainchild of <a class="indexterm" name="ch01-idx-951508-0"></a>Andrew Tridgell, who currently heads the Samba development team from his home of Canberra, Australia. The project was born in 1991 when Andrew created a fileserver program for his local network that supported an odd DEC protocol from Digital Pathworks. Although he didn't know it at the time, that protocol later turned out to be SMB. A few years later, he expanded upon his custom-made SMB server and began distributing it as a product on the Internet under the name SMB Server. However, Andrew couldn't keep that name&#8212;it already belonged to another company's product&#8212;so he tried the following Unix renaming approach:</p><pre class="programlisting">grep -i 's.*m.*b' /usr/dict/words<a class="indexterm" name="ch01-idx-951514-0"></a></pre><p>And the response was:</p><pre class="programlisting">salmonberry samba sawtimber scramble</pre><p>Thus, the name "Samba" was born.<sup>[<a name="ch01-pgfId-946532" href="#ftn.ch01-pgfId-946532">1</a>]</sup></p><p>Today, the Samba suite revolves around a pair of <a class="indexterm" name="ch01-idx-951515-0"></a>
+<a class="indexterm" name="ch01-idx-951515-1"></a>Unix daemons that provide <a class="indexterm" name="ch01-idx-951518-0"></a>shared resources&#8212;or <em class="firstterm">shares</em>&#8212;to SMB clients on the network. (Shares are sometimes called <a class="indexterm" name="ch01-idx-951527-0"></a>s<em class="firstterm">ervices</em> as well.) These daemons are:</p><div class="variablelist"><dl><dt><span class="term">smbd</span></dt><dd><p>
+<a class="indexterm" name="ch01-idx-951528-0"></a>A daemon that allows file and printer sharing on an SMB network and provides authentication and authorization for SMB clients.</p></dd><dt><span class="term">nmbd</span></dt><dd><p>
+<a class="indexterm" name="ch01-idx-951529-0"></a>A daemon that looks after the <a class="indexterm" name="ch01-idx-951530-0"></a>Windows Internet Name Service (WINS), and assists with browsing.</p></dd></dl></div><p>Samba is currently maintained and extended by a group of volunteers under the active supervision of Andrew Tridgell. Like the Linux operating system, Samba is considered <em class="firstterm">Open Source software </em>
+<a class="indexterm" name="ch01-idx-951531-0"></a>
+<a class="indexterm" name="ch01-idx-951531-1"></a>(OSS) by its authors, and is distributed under the <a class="indexterm" name="ch01-idx-951532-0"></a>GNU General Public License (GPL). Since its inception, development of Samba has been sponsored in part by the <a class="indexterm" name="ch01-idx-951533-0"></a>Australian National University, where Andrew Tridgell earned his Ph.D.<sup>[<a name="ch01-pgfId-946542" href="#ftn.ch01-pgfId-946542">2</a>]</sup> In addition, some development has been sponsored by independent vendors such as <a class="indexterm" name="ch01-idx-951534-0"></a>Whistle and <a class="indexterm" name="ch01-idx-951535-0"></a>SGI. It is a true testament to Samba that both commercial and non-commercial entities are prepared to spend money to support an Open Source effort.</p><p>
+<a class="indexterm" name="ch01-idx-951536-0"></a>Microsoft has also contributed materially by putting forward its definition of SMB and the Internet-savvy <a class="indexterm" name="ch01-idx-951537-0"></a>
+<a class="indexterm" name="ch01-idx-951537-1"></a>Common Internet File System (CIFS), as a public <a class="indexterm" name="ch01-idx-951538-0"></a>
+<a class="indexterm" name="ch01-idx-951538-1"></a>Request for Comments (RFC), a standards document. The CIFS protocol is Microsoft's renaming of future versions of the SMB protocol that will be used in Windows products&#8212;the two terms can be used interchangeably in this book. Hence, you will often see the protocol written as "<a class="indexterm" name="ch01-idx-951539-0"></a>SMB/CIFS."</p></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="ch01-SECT-2"></a>What Can Samba Do For Me?</h2></div></div></div><p>As explained earlier, Samba can help Windows and Unix machines coexist in the same network. However, there are some specific reasons why you might want to set up a Samba server on your network:</p><div class="itemizedlist"><ul type="disc"><li><p>
+<a class="indexterm" name="ch01-idx-951583-0"></a>You don't want to pay for&#8212;or can't afford&#8212;a full-fledged Windows NT server, yet you still need the functionality that one provides.</p></li><li><p>You want to provide a common area for data or user directories in order to transition from a Windows server to a Unix one, or vice versa.</p></li><li><p>You want to be able to share printers across both Windows and Unix workstations.</p></li><li><p>You want to be able to access NT files from a Unix server.</p></li></ul></div><p>Let's take a quick tour of Samba in action. Assume that we have the following basic network configuration: a Samba-enabled Unix machine, to which we will assign the name <code class="literal">hydra</code>, and a pair of Windows clients, to which we will assign the names <code class="literal">phoenix</code> and <code class="literal">chimaera</code>, all connected via a local area network (LAN). Let's also assume that <code class="literal">hydra</code> also has a local inkjet printer connected to it, <code class="literal">lp</code>, and a disk share named <code class="literal">network</code>&#8212;both of which it can offer to the other two machines. A graphic of this network is shown in <a href="#ch01-45964" title="Figure 1.1. A simple network setup with a Samba server">Figure 1.1</a>.</p><div class="figure"><a name="ch01-45964"></a><p class="title"><b>Figure 1.1. A simple network setup with a Samba server</b></p><div class="figure-contents"><div><table border="0" summary="manufactured viewport for HTML img" cellspacing="0" cellpadding="0" width="502"><tr style="height: 209px"><td><img src="figs/sam.0101.gif" height="209" alt="A simple network setup with a Samba server"></td></tr></table></div></div></div><br class="figure-break"><p>In this network, each of the computers listed share the same <em class="firstterm">workgroup</em>
+<a class="indexterm" name="ch01-idx-951584-0"></a>. A workgroup is simply a group nametag that identifies an arbitrary collection of computers and their resources on an <a class="indexterm" name="ch01-idx-951585-0"></a>SMB network. There can be several workgroups on the network at any time, but for our basic network example, we'll have only one: the SIMPLE workgroup.</p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="ch01-SECT-2.1"></a>Sharing a Disk Service</h3></div></div></div><p>
+<a class="indexterm" name="ch01-idx-951617-0"></a>If <a class="indexterm" name="ch01-idx-951876-0"></a>
+<a class="indexterm" name="ch01-idx-951876-1"></a>everything is properly configured, we should be able to see the Samba server, <code class="literal">hydra</code>, through the Network Neighborhood of the <code class="literal">phoenix</code> Windows desktop. In fact, <a href="#ch01-60493" title="Figure 1.2. The Network Neighborhood directory">Figure 1.2</a> shows the Network Neighborhood of the <code class="literal">phoenix</code> computer, including <code class="literal">hydra</code> and each of the computers that reside in the SIMPLE workgroup. Note the Entire Network icon at the top of the list. As we just mentioned, there can be more than one workgroup on an SMB network at any given time. If a user clicks on the <a class="indexterm" name="ch01-idx-951586-0"></a>Entire Network icon, he or she will see a list of all the workgroups that currently exist on the network.</p><div class="figure"><a name="ch01-60493"></a><p class="title"><b>Figure 1.2. The Network Neighborhood directory</b></p><div class="figure-contents"><div><table border="0" summary="manufactured viewport for HTML img" cellspacing="0" cellpadding="0" width="502"><tr style="height: 174px"><td><img src="figs/sam.0102.gif" height="174" alt="The Network Neighborhood directory"></td></tr></table></div></div></div><br class="figure-break"><p>We can take a closer look at the <code class="literal">hydra</code> server by double-clicking on its icon. This contacts <code class="literal">hydra</code> itself and requests a list of its <em class="firstterm">shares</em>&#8212;the file and printer resources&#8212;that the machine provides. In this case, there is a printer entitled <code class="literal">lp</code> and a disk share entitled <code class="literal">network</code> on the server, as shown in <a href="#ch01-76011" title="Figure 1.3. Shares available on the hydra sever as viewed from phoenix">Figure 1.3</a>. Note that the Windows display shows hostnames in mixed case (Hydra). <a class="indexterm" name="ch01-idx-951589-0"></a>Case is irrelevant in <a class="indexterm" name="ch01-idx-951588-0"></a>hostnames, so you may see hydra, Hydra, and HYDRA in various displays or command output, but they all refer to a single system. Thanks to Samba, Windows 98 sees the Unix server as a valid SMB server, and can access the <code class="literal">network</code> folder as if it were just another system folder.</p><div class="figure"><a name="ch01-76011"></a><p class="title"><b>Figure 1.3. Shares available on the hydra sever as viewed from phoenix</b></p><div class="figure-contents"><div><table border="0" summary="manufactured viewport for HTML img" cellspacing="0" cellpadding="0" width="502"><tr style="height: 148px"><td><img src="figs/sam.0103.gif" height="148" alt="Shares available on the hydra sever as viewed from phoenix"></td></tr></table></div></div></div><br class="figure-break"><p>One popular feature of Windows 95/98/NT is that you can map a letter-drive to a known network directory using the <a class="indexterm" name="ch01-idx-951590-0"></a>
+<a class="indexterm" name="ch01-idx-951590-1"></a>
+<a class="indexterm" name="ch01-idx-951590-2"></a>
+<a class="indexterm" name="ch01-idx-951590-3"></a>Map Network Drive option in the Windows Explorer.<sup>[<a name="ch01-pgfId-941061" href="#ftn.ch01-pgfId-941061">3</a>]</sup> Once you do so, your applications can access the folder across the network with a standard <a class="indexterm" name="ch01-idx-951592-0"></a>drive letter. Hence, you can store data on it, install and run programs from it, and even password-protect it against unwanted visitors. See <a href="#ch01-55465" title="Figure 1.4. Mapping a network drive to a Windows letter-drive">Figure 1.4</a> for an example of mapping a letter-drive to a network directory.</p><div class="figure"><a name="ch01-55465"></a><p class="title"><b>Figure 1.4. Mapping a network drive to a Windows letter-drive</b></p><div class="figure-contents"><div><table border="0" summary="manufactured viewport for HTML img" cellspacing="0" cellpadding="0" width="502"><tr style="height: 336px"><td><img src="figs/sam.0104.gif" width="502" alt="Mapping a network drive to a Windows letter-drive"></td></tr></table></div></div></div><br class="figure-break"><p>Take a look at the Path: entry in the dialog box of <a href="#ch01-55465" title="Figure 1.4. Mapping a network drive to a Windows letter-drive">Figure 1.4</a>. An equivalent way to represent a directory on a network machine is by using two <a class="indexterm" name="ch01-idx-951593-0"></a>
+<a class="indexterm" name="ch01-idx-951593-1"></a>backslashes, followed by the name of the networked machine, another backslash, and the networked directory of the machine, as shown below:</p><pre class="programlisting"><span class="emphasis"><em>\\</em></span><em class="replaceable"><code>network-machine</code></em><span class="emphasis"><em>\</em></span><em class="replaceable"><code>directory</code></em></pre><p>This is known as the <em class="firstterm">UNC</em>
+<a class="indexterm" name="ch01-idx-951594-0"></a>
+<a class="indexterm" name="ch01-idx-951594-1"></a> (Universal Naming Convention) in the Windows world. For example, the dialog box in <a href="#ch01-55465" title="Figure 1.4. Mapping a network drive to a Windows letter-drive">Figure 1.4</a> represents the network directory on the <code class="literal">hydra</code> server as:</p><pre class="programlisting">\\HYDRA\<em class="replaceable"><code>network</code></em></pre><p>If this looks somewhat familiar to you, you're probably thinking of <em class="firstterm">uniform resource locators</em>
+<a class="indexterm" name="ch01-idx-951607-0"></a>
+<a class="indexterm" name="ch01-idx-951607-1"></a> (URLs), which are addresses that web browsers such as Netscape Navigator and Internet Explorer use to resolve machines across the Internet. Be sure not to confuse the two: web browsers typically use <a class="indexterm" name="ch01-idx-951608-0"></a>forward slashes instead of back slashes, and they precede the initial slashes with the <a class="indexterm" name="ch01-idx-951611-0"></a>data transfer protocol (i.e., <a class="indexterm" name="ch01-idx-951612-0"></a>ftp, <a class="indexterm" name="ch01-idx-951613-0"></a>http) and a <a class="indexterm" name="ch01-idx-951610-0"></a>
+<a class="indexterm" name="ch01-idx-951610-1"></a>colon (:). In reality, URLs and UNCs are two completely separate things.</p><p>Once the network drive is set up, Windows and its programs will behave as if the networked directory was a fixed disk. If you have any applications that support <a class="indexterm" name="ch01-idx-952014-0"></a>
+<a class="indexterm" name="ch01-idx-952014-1"></a>multiuser functionality on a network, you can install those programs on the network drive.<sup>[<a name="ch01-pgfId-952017" href="#ftn.ch01-pgfId-952017">4</a>]</sup> <a href="#ch01-32686" title="Figure 1.5. The Network directory mapped to the client letter-drive G">Figure 1.5</a> shows the resulting network drive as it would appear with other storage devices in the Windows 98 client. Note the pipeline attachment in the icon for the G: drive; this indicates that it is a network drive instead of a fixed drive.</p><div class="figure"><a name="ch01-32686"></a><p class="title"><b>Figure 1.5. The Network directory mapped to the client letter-drive G</b></p><div class="figure-contents"><div><table border="0" summary="manufactured viewport for HTML img" cellspacing="0" cellpadding="0" width="502"><tr style="height: 224px"><td><img src="figs/sam.0105.gif" height="224" alt="The Network directory mapped to the client letter-drive G"></td></tr></table></div></div></div><br class="figure-break"><p>From our Windows NT Workstation machine, <code class="literal">chimaera</code>, Samba looks almost identical to Windows 98. <a href="#ch01-29255" title="Figure 1.6. Shares available on hydra (viewed from chimaera)">Figure 1.6</a> shows the same view of the <code class="literal">hydra</code> server from the Windows NT 4.0 Network Neighborhood. Setting up the network drive using the Map Network Drive option in Windows NT Workstation 4.0 would have identical results as well.</p><div class="figure"><a name="ch01-29255"></a><p class="title"><b>Figure 1.6. Shares available on hydra (viewed from chimaera) </b></p><div class="figure-contents"><a class="indexterm" name="ch01-idx-951618-0"></a><div><table border="0" summary="manufactured viewport for HTML img" cellspacing="0" cellpadding="0" width="502"><tr style="height: 141px"><td><img src="figs/sam.0106.gif" height="141" alt="Shares available on hydra (viewed from chimaera)"></td></tr></table></div></div></div><br class="figure-break"></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="ch01-SECT-2.2"></a>Sharing a Printer</h3></div></div></div><p>
+<a class="indexterm" name="ch01-idx-951620-0"></a>
+<a class="indexterm" name="ch01-idx-951620-1"></a>You probably noticed that the printer <code class="literal">lp</code> appeared under the available shares for <code class="literal">hydra</code> in <a href="#ch01-76011" title="Figure 1.3. Shares available on the hydra sever as viewed from phoenix">Figure 1.3</a>. This indicates that the Unix server has a printer that can be shared by the various SMB clients in the workgroup. Data sent to the printer from any of the clients will be spooled on the Unix server and printed in the order it is received.</p><p>
+<a class="indexterm" name="ch01-idx-951636-0"></a>Setting up a Samba-enabled printer on the Windows side is even easier than setting up a disk share. By double-clicking on the printer and identifying the manufacturer and model, you can install a driver for this printer on the Windows client. Windows can then properly format any information sent to the network printer and access it as if it were a local printer (we show you how to do this later in the chapter). <a href="#ch01-46265" title="Figure 1.7. A network printer available on hydra (viewed from chimaera)">Figure 1.7</a> shows the resulting network printer in the Printers window of Windows 98. Again, note the pipeline attachment below the printer, which identifies it as being on a network.</p><div class="figure"><a name="ch01-46265"></a><p class="title"><b>Figure 1.7. A network printer available on hydra (viewed from chimaera)</b></p><div class="figure-contents"><div><table border="0" summary="manufactured viewport for HTML img" cellspacing="0" cellpadding="0" width="502"><tr style="height: 223px"><td><img src="figs/sam.0107.gif" height="223" alt="A network printer available on hydra (viewed from chimaera)"></td></tr></table></div></div></div><br class="figure-break"><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="ch01-SECT-2.2.1"></a>Seeing things from the Unix side</h4></div></div></div><p>As mentioned earlier, Samba appears in Unix as a set of <a class="indexterm" name="ch01-idx-951638-0"></a>
+<a class="indexterm" name="ch01-idx-951638-1"></a>
+<a class="indexterm" name="ch01-idx-951638-2"></a>
+<a class="indexterm" name="ch01-idx-951638-3"></a>daemon programs. You can view them with the Unix <code class="literal">ps</code> and <code class="literal">netstat</code> commands, you can read any messages they generate through custom debug files or the Unix <code class="literal">syslog</code> (depending on how Samba is set up), and you can configure it from a single Samba properties file: <span class="emphasis"><em>smb.conf</em></span>
+<a class="indexterm" name="ch01-idx-951639-0"></a>. In addition, if you want to get an idea of what each of the <a class="indexterm" name="ch01-idx-951640-0"></a>
+<a class="indexterm" name="ch01-idx-951640-1"></a>daemons are doing, Samba has a program called <span class="emphasis"><em>smbstatus</em></span>
+<a class="indexterm" name="ch01-idx-951641-0"></a> that will lay it all on the line. Here is how it works:</p><pre class="programlisting"># <span class="bold"><strong>smbstatus</strong></span>
+Samba version 2.0.4
+Service      uid      gid      pid     machine
+----------------------------------------------
+network      davecb   davecb   7470   phoenix  (192.168.220.101) Sun May 16
+network      davecb   davecb   7589   chimaera (192.168.220.102) Sun May 16
+
+Locked files:
+Pid    DenyMode   R/W        Oplock          Name
+--------------------------------------------------
+7589   DENY_NONE  RDONLY     EXCLUSIVE+BATCH /home/samba/quicken/inet/common/system/help.bmp   Sun May 16 21:23:40 1999
+7470   DENY_WRITE RDONLY     NONE            /home/samba/word/office/findfast.exe
+Sun May 16 20:51:08 1999
+7589   DENY_WRITE RDONLY     EXCLUSIVE+BATCH /home/samba/quicken/lfbmp70n.dll   Sun May 16 21:23:39 1999
+7589   DENY_WRITE RDWR       EXCLUSIVE+BATCH /home/samba/quicken/inet/qdata/runtime.dat   Sun May 16 21:23:41 1999
+7470   DENY_WRITE RDONLY     EXCLUSIVE+BATCH /home/samba/word/office/osa.exe
+Sun May 16 20:51:09 1999
+7589   DENY_WRITE RDONLY     NONE            /home/samba/quicken/qversion.dll   Sun May 16 21:20:33 1999
+7470   DENY_WRITE RDONLY     NONE                             /home/samba/quicken/qversion.dll   Sun May 16 20:51:11 1999
+
+Share mode memory usage (bytes):
+   1043432(99%) free + 4312(0%) used + 832(0%) overhead = 1048576(100%) total</pre><p>The Samba status from this output provides three sets of data, each divided into separate sections. The first section tells which systems have <a class="indexterm" name="ch01-idx-951646-0"></a>connected to the Samba server, identifying each client by its machine name (<code class="literal">phoenix</code> and <code class="literal">chimaera</code>) and IP address. The second section reports the name and status of the <a class="indexterm" name="ch01-idx-951647-0"></a>files that are currently in use on a share on the server, including the read/write status and any <a class="indexterm" name="ch01-idx-951648-0"></a>locks on the files. Finally, Samba reports the amount of <a class="indexterm" name="ch01-idx-951649-0"></a>memory it has currently allocated to the shares that it administers, including the amount actively used by the shares plus additional overhead. (Note that this is not the same as the total amount of memory that the <span class="emphasis"><em>smbd</em></span> or <span class="emphasis"><em>nmbd</em></span> processes are using.)</p><p>Don't worry if you don't understand these statistics; they will become easier to understand as you move through the<a class="indexterm" name="ch01-idx-951621-0"></a> book.<a class="indexterm" name="ch01-idx-951467-0"></a></p></div></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="ch01-88536"></a>Getting Familiar with a SMB/CIFS Network</h2></div></div></div><p>
+<a class="indexterm" name="ch01-idx-951651-0"></a>Now that you have had a brief tour of Samba, let's take some time to get familiar with Samba's adopted environment: an SMB/CIFS network. Networking with SMB is significantly different from working with a Unix <a class="indexterm" name="ch01-idx-951650-0"></a>TCP/IP network, because there are several new concepts to learn and a lot of information to cover. First, we will discuss the basic concepts behind an SMB network, followed by some Microsoft implementations of it, and finally we will show you where a Samba server can and cannot fit into the picture.</p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="ch01-SECT-3.1"></a>Understanding NetBIOS</h3></div></div></div><p>To begin, let's step back in time. In 1984, IBM authored a simple <a class="indexterm" name="ch01-idx-951659-0"></a>application programming interface (API) for networking its computers called the <em class="firstterm">Network Basic Input/Output System </em>
+<a class="indexterm" name="ch01-idx-951660-0"></a>
+<a class="indexterm" name="ch01-idx-951660-1"></a>(NetBIOS). The NetBIOS API provided a rudimentary design for an application to connect and share data with other computers.</p><p>It's helpful to think of the NetBIOS API as networking extensions to the standard BIOS API calls. With BIOS, each low-level call is confined to the hardware of the local machine and doesn't need any help traveling to its destination. NetBIOS, however, originally had to exchange instructions with computers across IBM PC or Token Ring networks. It therefore required a low-level transport protocol to carry its requests from one computer to the next.</p><p>In late 1985, IBM released one such protocol, which it merged with the NetBIOS API to become the <em class="firstterm">NetBIOS Extended User Interface</em>
+<a class="indexterm" name="ch01-idx-951661-0"></a>
+<a class="indexterm" name="ch01-idx-951661-1"></a> (<span class="emphasis"><em>NetBEUI</em></span>). NetBEUI was designed for small local area networks (LANs), and it let each machine claim a name (up to 15 characters) that wasn't already in use on the network. By a "small LAN," we mean fewer than 255 nodes on the network&#8212;which was considered a practical restriction in 1985!</p><p>The NetBEUI protocol was very popular with networking applications, including those running under Windows for Workgroups. Later, implementations of NetBIOS over Novell's IPX networking protocols also emerged, which competed with NetBEUI. However, the networking protocols of choice for the burgeoning Internet community were TCP/IP and UDP/IP, and implementing the NetBIOS APIs over those protocols soon became a necessity.</p><p>Recall that <a class="indexterm" name="ch01-idx-951666-0"></a>TCP/IP uses numbers to represent computer addresses, such as 192.168.220.100, while <a class="indexterm" name="ch01-idx-951667-0"></a>
+<a class="indexterm" name="ch01-idx-951667-1"></a>NetBIOS uses only names. This was a major issue when trying to mesh the two protocols together. In 1987, the Internet Engineering Task Force (IETF) published a series of standardization documents, titled RFC 1001 and 1002, that outlined how NetBIOS would work over a TCP/UDP network. This set of documents still governs each of the implementations that exist today, including those provided by Microsoft with their Windows operating systems as well as the Samba suite.</p><p>Since then, the standard this document governs has become known as <em class="firstterm">NetBIOS over TCP/IP</em>
+<a class="indexterm" name="ch01-idx-951668-0"></a>
+<a class="indexterm" name="ch01-idx-951668-1"></a>
+<a class="indexterm" name="ch01-idx-951668-2"></a>, or NBT for short. The NBT standard (RFC 1001/1002) currently outlines a trio of services on a network:</p><div class="itemizedlist"><ul type="disc"><li><p>A name service</p></li><li><p>Two communication services:</p><div class="itemizedlist"><ul type="circle"><li><p>Datagrams</p></li><li><p>Sessions</p></li></ul></div></li></ul></div><p>The <a class="indexterm" name="ch01-idx-951671-0"></a>name service solves the name-to-address problem mentioned earlier; it allows each computer to declare a specific name on the network that can be translated to a machine-readable IP address, much like today's DNS on the Internet. The <a class="indexterm" name="ch01-idx-951672-0"></a>
+<a class="indexterm" name="ch01-idx-951672-1"></a>datagram and session services are both secondary communication protocols used to transmit data back and forth from NetBIOS machines across the network.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="ch01-SECT-3.2"></a>Getting a Name</h3></div></div></div><p>
+<a class="indexterm" name="ch01-idx-951674-0"></a>
+<a class="indexterm" name="ch01-idx-951674-1"></a>For a human being, getting a name is easy. However, for a machine on a NetBIOS network, it can be a little more complicated. Let's look at a few of the issues.</p><p>In the NetBIOS world, when each machine comes online, it wants to claim a name for itself; this is called <em class="firstterm">name registration</em>
+<a class="indexterm" name="ch01-idx-951675-0"></a>. However, no two machines in the same workgroup should be able to claim the same name; this would cause endless confusion for any machine that wanted to communicate with either machine. There are two different approaches to ensuring that this doesn't happen:</p><div class="itemizedlist"><ul type="disc"><li><p>Use a <em class="firstterm">NetBIOS Name Server</em>
+<a class="indexterm" name="ch01-idx-951677-0"></a>
+<a class="indexterm" name="ch01-idx-951677-1"></a> (NBNS) to keep track of which hosts have registered a NetBIOS name.</p></li><li><p>Allow each machine on the network to defend its name in the event that another machine attempts to use it.</p></li></ul></div><p><a href="#ch01-86658" title="Figure 1.8. NBNS versus non-NBNS name registration">Figure 1.8</a> illustrates a (failed) name registration, with and without a NetBIOS Name Server.</p><div class="figure"><a name="ch01-86658"></a><p class="title"><b>Figure 1.8. NBNS versus non-NBNS name registration</b></p><div class="figure-contents"><div><table border="0" summary="manufactured viewport for HTML img" cellspacing="0" cellpadding="0" width="502"><tr style="height: 391px"><td><img src="figs/sam.0108.gif" width="502" alt="NBNS versus non-NBNS name registration"></td></tr></table></div></div></div><br class="figure-break"><p>In addition, there must be a way to resolve a NetBIOS name to a specific IP address as mentioned earlier; this is known as <em class="firstterm">name resolution</em>
+<a class="indexterm" name="ch01-idx-951679-0"></a>. There are two different approaches with NBT here as well:</p><div class="itemizedlist"><ul type="disc"><li><p>Have each machine report back its IP address when it "hears" a broadcast request for its NetBIOS name.</p></li><li><p>Use the NBNS to help resolve NetBIOS names to IP addresses.</p></li></ul></div><p><a href="#ch01-72484" title="Figure 1.9. NBNS versus non-NBNS name resolution">Figure 1.9</a> illustrates the two types of name resolution.</p><div class="figure"><a name="ch01-72484"></a><p class="title"><b>Figure 1.9. NBNS versus non-NBNS name resolution</b></p><div class="figure-contents"><div><table border="0" summary="manufactured viewport for HTML img" cellspacing="0" cellpadding="0" width="502"><tr style="height: 391px"><td><img src="figs/sam.0109.gif" width="502" alt="NBNS versus non-NBNS name resolution"></td></tr></table></div></div></div><br class="figure-break"><p>As you might expect, having an NBNS on your network can help out tremendously. To see exactly why, let's look at the non-NBNS method.</p><p>Here, when a client machine boots, it will broadcast a message declaring that it wishes to register a specified NetBIOS name as its own. If nobody objects to the use of the name after multiple registration attempts, it keeps the name. On the other hand, if another machine on the local <a class="indexterm" name="ch01-idx-951896-0"></a>subnet is currently using the requested name, it will send a message back to the requesting client that the name is already taken. This is known as <em class="firstterm">defending</em>
+<a class="indexterm" name="ch01-idx-951687-0"></a> the hostname. This type of system comes in handy when one client has unexpectedly dropped off the network&#8212;another can take its name unchallenged&#8212;but it does incur an inordinate amount of traffic on the network for something as simple as name registration.</p><p>With an NBNS, the same thing occurs, except that the communication is confined to the requesting machine and the NBNS server. No broadcasting occurs when the machine wishes to register the name; the registration message is simply sent directly from the client to NBNS server and the NBNS server replies whether or not the name is already taken. This is known as <em class="firstterm">point-to-point communication</em>
+<a class="indexterm" name="ch01-idx-951688-0"></a>, and is often beneficial on networks with more than one subnet. This is because routers are often preconfigured to block incoming packets that are broadcast to all machines in the subnet.</p><p>The same principles apply to name resolution. Without an NBNS, NetBIOS name resolution would also be done with a broadcast mechanism. All request packets would be sent to each computer in the network, with the hope that one machine that might be affected will respond directly back to the machine that asked. At this point, it's clear that using an NBNS server and point-to-point communication for this purpose is far less taxing on the network than flooding the network with broadcasts for every name resolution request.<a class="indexterm" name="ch01-idx-951682-0"></a>
+<a class="indexterm" name="ch01-idx-951682-1"></a></p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="ch01-SECT-3.3"></a>Node Types</h3></div></div></div><p>
+<a class="indexterm" name="ch01-idx-951690-0"></a>How can you tell what strategy each client on your network will use when performing name registration and resolution? Each machine on an NBT network earns one of the following designations, depending on how it handles name registration and resolution: <a class="indexterm" name="ch01-idx-951691-0"></a>
+<a class="indexterm" name="ch01-idx-951691-1"></a>
+<a class="indexterm" name="ch01-idx-951691-2"></a>
+<a class="indexterm" name="ch01-idx-951691-3"></a>b-node, p-node, m-node, and h-node. The behaviors of each type of node are summarized in <a href="#ch01-91681" title="Table 1.1. NetBIOS Node Types">Table 1.1</a>.</p><div class="table"><a name="ch01-91681"></a><p class="title"><b>Table 1.1. NetBIOS Node Types </b></p><div class="table-contents"><table summary="NetBIOS Node Types " border="1"><colgroup><col><col></colgroup><thead><tr><th><p>Role</p></th><th><p>Value</p></th></tr></thead><tbody><tr><td><p>b-node</p></td><td><p>Uses<a class="indexterm" name="ch01-idx-951692-0"></a>
+<a class="indexterm" name="ch01-idx-951692-1"></a> broadcast registration and resolution only.</p></td></tr><tr><td><p>p-node</p></td><td><p>Uses <a class="indexterm" name="ch01-idx-951693-0"></a>point-to-point registration and resolution only.</p></td></tr><tr><td><p>m-node</p></td><td><p>Uses broadcast for registration. If successful, it notifies the NBNS server of the result. Uses broadcast for resolution; uses NBNS server if broadcast is unsuccessful.</p></td></tr><tr><td><p>h-node (hybrid)</p></td><td><p>Uses NBNS server for registration and resolution; uses broadcast if the NBNS server is unresponsive or inoperative.</p></td></tr></tbody></table></div></div><br class="table-break"><p>In the case of Windows clients, you will usually find them listed as <em class="firstterm">h-nodes</em> or <em class="firstterm">hybrid nodes</em>. Incidentally, h-nodes were invented later by Microsoft, as a more  fault-tolerant route, and do not appear in RFC 1001/1002.</p><p>You can find out the node type of any Windows machine by typing the command <code class="literal">ipconfig</code> <code class="literal">/all</code> and searching for the line that says <code class="literal">Node Type</code>.</p><pre class="programlisting"><span class="bold"><strong>C:\&gt;ipconfig /all</strong></span>
+Windows 98 IP Configuration
+...
+  Node Type .  .  .  .  .  .  .  .  .  .  : Hybrid
+...</pre></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="ch01-SECT-3.4"></a>What's in a Name?</h3></div></div></div><p>The <a class="indexterm" name="ch01-idx-951695-0"></a>names NetBIOS uses are quite different from the DNS hostnames you might be familiar with. First, NetBIOS names exist in a <a class="indexterm" name="ch01-idx-951696-0"></a>flat namespace. In other words, there are no qualifiers such as <span class="emphasis"><em>ora.com</em></span> or <span class="emphasis"><em>samba.org</em></span> to section off hostnames; there is only a single unique name to represent each computer. Second, NetBIOS names are allowed to be only 15 characters, may not begin with an asterisk (*), and can consist only of standard alphanumeric characters (a-z, A-Z, 0-9) and the following:</p><pre class="programlisting">! @ # $ % ^ &amp; ( ) - ' { } . ~</pre><p>Although you are allowed to use a period (.) in a NetBIOS name, we recommend against it because those names are not guaranteed to work in future versions of NetBIOS over TCP/IP.</p><p>It's not a coincidence that all valid <a class="indexterm" name="ch01-idx-952041-0"></a>DNS names are also valid NetBIOS names. In fact, the DNS name for a Samba server is often reused as its NetBIOS name. For example, if you had a machine <code class="literal">phoenix.ora.com </code>, its NetBIOS name would likely be PHOENIX (followed by 8 blanks).</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="ch01-SECT-3.4.1"></a>Resource names and types</h4></div></div></div><p>With NetBIOS, a machine not only advertises its presence, but also tells others what types of services it offers. For example, <code class="literal">phoenix</code> can indicate that it's not just a workstation, but is also a file server and can receive WinPopup messages. This is done by adding a 16th byte to the end of the machine (<a class="indexterm" name="ch01-idx-951698-0"></a>resource) name, called the <a class="indexterm" name="ch01-idx-951704-0"></a><em class="firstterm">resource type</em>, and registering the name more than once. See <a href="#ch01-74707" title="Figure 1.10. The structure of NetBIOS names">Figure 1.10</a>.</p><div class="figure"><a name="ch01-74707"></a><p class="title"><b>Figure 1.10. The structure of NetBIOS names</b></p><div class="figure-contents"><div><table border="0" summary="manufactured viewport for HTML img" cellspacing="0" cellpadding="0" width="502"><tr style="height: 153px"><td><img src="figs/sam.0110.gif" height="153" alt="The structure of NetBIOS names"></td></tr></table></div></div></div><br class="figure-break"><p>The one-byte resource type indicates a unique service the named machine provides. In this book, you will often see the resource type shown in <a class="indexterm" name="ch01-idx-951708-0"></a>angled brackets (<a class="indexterm" name="ch01-idx-951709-0"></a>&lt;&gt;) after the NetBIOS name, such as:</p><pre class="programlisting">PHOENIX&lt;00&gt;</pre><p>You can see which names are registered for a particular NBT machine using the Windows command-line <a class="indexterm" name="ch01-idx-951710-0"></a>NBTSTAT utility. Because these services are unique (i.e., there cannot be more than one registered), you will see them listed as type UNIQUE in the output. For example, the following partial output describes the <code class="literal">hydra</code> server:</p><pre class="programlisting"><span class="bold"><strong>D:\&gt;NBTSTAT -a hydra</strong></span>
+
+       NetBIOS Remote Machine Name Table
+   Name               Type         Status
+---------------------------------------------
+HYDRA          &lt;00&gt;  UNIQUE      Registered
+HYDRA          &lt;03&gt;  UNIQUE      Registered
+HYDRA          &lt;20&gt;  UNIQUE      Registered
+...</pre><p>This says the server has registered the NetBIOS name <code class="literal">hydra</code> as a <a class="indexterm" name="ch01-idx-951711-0"></a>
+<a class="indexterm" name="ch01-idx-951711-1"></a>machine (workstation) name, a recipient of WinPopup messages, and a file server. Some possible attributes a name can have are listed in <a href="#ch01-11471" title="Table 1.2. NetBIOS Unique Resource Types">Table 1.2</a>.</p><div class="table"><a name="ch01-11471"></a><p class="title"><b>Table 1.2. NetBIOS Unique Resource Types </b></p><div class="table-contents"><table summary="NetBIOS Unique Resource Types " border="1"><colgroup><col><col></colgroup><thead><tr><th><p>
+<a class="indexterm" name="ch01-idx-951723-0"></a>Named Resource</p></th><th><p>
+<a class="indexterm" name="ch01-idx-951735-0"></a>Hexidecimal Byte Value</p></th></tr></thead><tbody><tr><td><p>Standard Workstation Service</p></td><td><p>00</p></td></tr><tr><td><p>Messenger Service (WinPopup)</p></td><td><p>03</p></td></tr><tr><td><p>RAS Server Service</p></td><td><p>06</p></td></tr><tr><td><p>Domain Master Browser Service (associated with primary domain controller)</p></td><td><p>1B</p></td></tr><tr><td><p>Master Browser name</p></td><td><p>1D</p></td></tr><tr><td><p>NetDDE Service</p></td><td><p>1F</p></td></tr><tr><td><p>Fileserver (including printer server)</p></td><td><p>20</p></td></tr><tr><td><p>RAS Client Service</p></td><td><p>21</p></td></tr><tr><td><p>Network Monitor Agent</p></td><td><p>BE</p></td></tr><tr><td><p>Network Monitor Utility</p></td><td><p>BF</p></td></tr></tbody></table></div></div><br class="table-break"><p>Note that because <a class="indexterm" name="ch01-idx-951737-0"></a>DNS names don't have resource types, the designers intentionally made hexidecimal value 20 (an ASCII space) default to the type for a file server.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="ch01-SECT-3.4.2"></a>Group names and types</h4></div></div></div><p>
+<a class="indexterm" name="ch01-idx-951786-0"></a>
+<a class="indexterm" name="ch01-idx-951786-1"></a>SMB also uses the concept of groups, with which machines can register themselves. Earlier, we mentioned that the machines in our example belonged to a <em class="firstterm">workgroup</em>, which is a partition of machines on the same network. For example, a business might very easily have an ACCOUNTING and a SALES workgroup, each with different servers and printers. In the Windows world, a workgroup and an SMB group are the same thing.</p><p>Continuing our NBTSTAT example, the <code class="literal">hydra</code> Samba server is also a member of the SIMPLE workgroup (the GROUP attribute hex 00), and will stand for election as a browse master (GROUP attribute 1E). Here is the remainder of the NBTSTAT utility output:</p><pre class="programlisting">       NetBIOS Remote Machine Name Table, continued
+   Name               Type         Status
+---------------------------------------------
+SIMPLE           &lt;00&gt;  GROUP       Registered
+SIMPLE           &lt;1E&gt;  GROUP       Registered
+.._ _MSBROWSE_ _.&lt;01&gt;  GROUP       Registered</pre><p>The possible group attributes a machine can have are illustrated in <a href="#ch01-52395" title="Table 1.3. NetBIOS Group Resource Types">Table 1.3</a>. More information is available in <a class="indexterm" name="ch01-idx-951787-0"></a><em class="citetitle">Windows NT in a Nutshell</em> by Eric Pearce, also published by O'Reilly.</p><div class="table"><a name="ch01-52395"></a><p class="title"><b>Table 1.3. NetBIOS Group Resource Types </b></p><div class="table-contents"><table summary="NetBIOS Group Resource Types " border="1"><colgroup><col><col></colgroup><thead><tr><th><p>Named Resource</p></th><th><p>
+<a class="indexterm" name="ch01-idx-951781-0"></a>Hexidecimal Byte Value</p></th></tr></thead><tbody><tr><td><p>Standard Workstation group</p></td><td><p>00</p></td></tr><tr><td><p>Logon Server</p></td><td><p>1C</p></td></tr><tr><td><p>Master Browser name</p></td><td><p>1D</p></td></tr><tr><td><p>Normal Group name (used in browser elections)</p></td><td><p>1E</p></td></tr><tr><td><p>Internet Group name (administrative)</p></td><td><p>20</p></td></tr><tr><td><p><code class="literal">&lt;01&gt;&lt;02&gt;_ _MSBROWSE_ _&lt;02&gt;</code></p></td><td><p>01</p></td></tr></tbody></table></div></div><br class="table-break"><p>The final entry, <code class="literal">_ _ MSBROWSE _ _  </code>, is used to announce a group to other master browsers. The nonprinting characters in the name show up as dots in a NBTSTAT printout. Don't worry if you don't understand all of the resource or group types. Some of them you will not need with Samba, and others you will pick up as you move through the rest of the chapter. The important thing to remember here is the logistics of the naming mechanism.<a class="indexterm" name="ch01-idx-951790-0"></a></p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="ch01-SECT-3.5"></a