This is version 1.7 of Samba, the free SMB client and server for unix.

Please read THE WHOLE of this file as it gives important information
about the configuration and use of Samba.

There is a mailing list for discussion of Samba. To subscribe send
mail to listproc@listproc.anu.edu.au with a body of "subscribe samba
Your Name"

To send mail to everyone on the list mail to samba@listproc.anu.edu.au

There is also an announcement mailing list where I announce new
versions.  To subscribe send mail to listproc@listproc.anu.edu.au with
a body of "subscribe samba-announce Your Name". All announcements also
go to the samba list.

The main anonymous ftp distribution site for this software is
nimbus.anu.edu.au in the directory pub/tridge/samba/.

This software is freely distributable under the GNU public license, a
copy of which you should have received with this software (in a file
called COPYING). 

If you want to contribute to the development of the software then
please join the mailing list. I'm always looking for people to
help with the development.

You could also send hardware/software/money/jewelry or pizza vouchers
directly to me. The pizza vouchers would be especially welcome.

If you like the documentation or the smb.conf configuration file
format then you should mail Karl.Auer@anu.edu.au to say thanks. I'm
sure he also wouldn't be adverse to a few pizza vouchers or freebies
as well.

Remember that free software of this kind lives or dies by the response
we get. If noone tells us they like it then we'll probably move onto
something else.

Andrew Tridgell
Andrew.Tridgell@anu.edu.au

July 1994



HOW TO TRY IT OUT
=================

STEP 0. Read the man pages. They contain lots of useful info that will
help to get you started. If you don't know how to read man pages then
try something like:

	nroff -man smbd.8 | more

Also read the "SMB Guide" in the sub-directory SMBGuide of the
distribution. This is an introduction to the Samba server suite, and
also serves as an extended README file, including installation tips
and traps. It is essential reading!

STEP 1. install a smb client. There are several, eg: Pathworks,
Lanmanager for DOS, Windows for Workgroups, Lanmanager for Windows,
Lanmanager for OS/2, and lanmanager for NT come to mind. Lanmanager
for dos is available via ftp from ftp.microsoft.com in
Advsys/MSclient/. Please read the licensing stuff before
downloading. Use the TCP/IP option in the client. Add your server to
the \etc\hosts (or equivalent) file on the client.

Note that your client must support TCP/IP. All the clients that I know
of do, but with many TCP/IP is not installed by default. With some you
have to get an optional add-on to support TCP/IP. The add-ons for
windows for workgroups, dos and OS/2 are available via anonymous ftp
from ftp.microsoft.com.

STEP 2. Install Samba on a unix box. To do this edit the Makefile
for your flavour of unix and preferences then type "make" or "make
install". This will create smbd, nmbd and smbclient. 

STEP 3. Create the smb configuration file. There is a sample
configuration file called smb.conf.sample supplied with the
distribution. It has lots of comments on some of the available
options. See the man page for all the options.

The simplest useful configuration file would be something like this:

[homes]
	guest ok = no
	read only = no

which would allow connections by anyone with an account on the server,
using their login name as the service name.

Note that "make install" will not install a smb.conf file. You need to
create it yourself. You will also need to create the path you specify
in the Makefile for the logs etc, such as /usr/local/samba.

STEP 4. Put the smbd, nmbd and smb configuration file in some
sensible place, like /usr/local/samba/.

STEP 5. Next choose a method for starting the smbd and nmbd. Either
you can put them in inetd.conf and have them started on demand by
inetd, or you can start them as daemons either from the command line
or in /etc/rc.local. See the man pages for details on the command
line options.


STARTING IT FROM INETD.CONF
===========================

Look at your /etc/services. What is defined at port 139/tcp. If
nothing is defined then add a line like this:

netbios-ssn     139/tcp

similarly for 137/udp you should have an entry like:

netbios-ns	137/udp

Next edit your /etc/inetd.conf and add two lines something like this:

netbios-ssn stream tcp nowait root /usr/local/samba/smbd smbd -s /usr/local/samba/smb.conf -l /usr/local/samba/log -d 1
netbios-ns dgram udp wait root /usr/local/samba/nmbd nmbd -d 1

or more simply:
netbios-ssn stream tcp nowait root /usr/local/samba/smbd smbd -d 1
netbios-ns dgram udp wait root /usr/local/samba/nmbd nmbd -d 1

assuming you compiled the appropriate paths in by putting them in the Makefile.

The exact syntax of /etc/inetd.conf varies between unixes. Look at the
other entries in inetd.conf for a guide.

NOTE: On some unixes you may need to give the nmbd a -B parameter to
specify the broadcast address of your interface. Run ifconfig as root
if you don't know what the broadcast is for your net. nmbd tries to
determine it at run time, but fails on some unixes. See the section on
"testing nmbd" for a method of finding if you need to do this.

Restart inetd, perhaps just send it a HUP.

ALTERNATIVE: STARTING IT AS A DAEMON
====================================

To start the server as a daemon you should create a script something
like this one, perhaps calling it "startsmb"

#!/bin/sh
/usr/local/samba/smbd -D -d 1
/usr/local/samba/nmbd -D -d 1

then make it executable with "chmod +x startsmb"

You can then run startsmb by hand or execute it from /etc/rc.local

To kill it send a kill signal to the processes nmbd and smbd.


STEP 7. try connecting with the unix client. eg:

smbclient "\\yourhostname\aservice"

Typically the "yourhostname" would be the name of the host where you
installed smbd. The "aservice" is any service you have defined in the
smb.conf file. Try your user name if you just have a [homes] section
in smb.conf.

For example if your unix host is bambi and your login name is fred you
would type:

smbclient "\\bambi\fred" 

NOTE: The number of slashes to use depends on the type of shell you
use. You may need "\\\\bambi\\fred" with some shells.

STEP 8. Try connecting from a dos/NT/os-2 client. Try mounting disks. eg:

net use d: \\servername\service

Try printing. eg:

net use lpt1: \\servername\spoolservice
print filename

Celebrate, or send me a bug report!


PRINTING FROM UNIX
==================

To use a printer that is available via a smb-based server from a unix
host you will need to compile the smbclient program. You then need to
install the script "smbprint". Read the instruction in smbprint for
more details.


TESTING NMBD
============

As of version 1.7.00 it is possible to test nmbd to see if it is
correctly installed. This can also test to see if it can auto-detect
your broadcast address.

Under some operating systems you can only test the broadcast part if
running as root. You can test other functionality from a non-root
account. To test from root use:

nmbd -L TESTNAME

where TESTNAME is the netbios name you wish to test. This would
typically be the hostname of the unix host where you installed nmbd.
It should return the IP address of the host you are looking for. If it
doesn't then something is wrong with your nmbd configuration.

If it fails then it could mean it is not correctly detecting your
broadcast address or netmask. You will then need to supply the -B and
-N parameters. See the nmbd man page for details.

To test from a non-root account use:

nmbd -B HOSTNAME -L TESTNAME

where hostname is the host name of the host where nmbd is installed
and TESTNAME is the name you want to test. Typically this would be the
same as HOSTNAME.



CHOOSING THE PROTOCOL LEVEL
===========================

The SMB protocol has many dialects. Currently Samba supports 3, called
CORE, COREPLUS and LANMAN1. Support for LANMAN1 is not complete yet.

You can choose what protocols to support in the smb.conf file. The
default is LANMAN1 but many people may prefer to use COREPLUS. 

The main advantage of COREPLUS is that Samba supports print queue
reporting in COREPLUS but not in LANMAN1.

The main advantages of LANMAN1 are better username support and faster
file access. The faster file access only occurs for clients that do
not directly support COREPLUS, but drop back to CORE when COREPLUS is
chosen. The CORE protocol does not include the fast readbraw and
writebraw commands. Windows for Workgroups is a client that does not
directly support COREPLUS, so you may find it's performance is much
better with LANMAN1.

See the smb.conf manual page for more details.

Note: To support print queue reporting you may find that you have to
use TCP/IP as the default protocol under WfWg. For some reason if you
leave Netbeui as the default it breaks the print queue reporting. It
is presumably a WfWg bug.

LIMITATIONS
===========

Currently Samba has several limitations. These are being worked on.

1) Samba does not currently support browsing. This means you cannot
connect to a Samba service using the "browse" method in the Windows
FileManager or PrintManager. Instead the name of the service must be
explicitly given in the "path" box, or connections may be made on the
command line.

2) Samba does not support IPC or named pipes. This has several
effects, the most visible being messages such as "can't find service
$ipc" or "transactions not supported". Some of the consequences
include no print queue reporting from Windows NT, no print queue
reporting using the LANMAN1 protocol and no modem/fax support.

3) The "magic scripts" are fairly primitive, and may not be adaquate for
many purposes.

4) Samba only supports long filenames fully in the client. In the
server long filenames are currently only provided in mangled 8.3
format.


NOTE ABOUT PASSWORDS
====================

Unix systems use a wide variety of methods for checking the validity
of a password. This is primarily controlled with the Makefile defines
of PWDAUTH and SHADOW_PWD. 

You should only define PWDAUTH if your system is running the daemon
rpc.pwdauthd (may be known by another, but similar, name on some
systems). 

If your system uses shadow passwords (also known as adjunct passwords)
then you may need to define SHADOW_PWD. 

Also note that some dos clients uppercase the password before sending
it. The server tries the password as it receives it and also after
lowercasing it. 

The Samba server can also be configured to try different
upper/lowercase combinations. This is controlled by the [globals]
parameter "password level". A level of N means to try all combinations
up to N uppercase characters in the password. A high value can chew a
fair bit of CPU time and can lower the security of your system.


NOTE ABOUT DEBUGLEVEL
=====================

WARNING: A high debug level can severely damage your performance.

In particular on AIX using a debuglevel above 1 produces a VERY slow
server. I think this is because flush() is very slow on AIX.



