mirror of
https://github.com/samba-team/samba.git
synced 2024-12-23 17:34:34 +03:00
e40bf31788
Dan
(This used to be commit 0e21388559
)
244 lines
8.9 KiB
Plaintext
244 lines
8.9 KiB
Plaintext
DIAGNOSING YOUR SAMBA SERVER
|
|
============================
|
|
|
|
This file contains a list of tests you can perform to validate your
|
|
Samba server. It also tells you what the likely cause of the problem
|
|
is if it fails any one of these steps. If it passes all these tests
|
|
then it is probably working fine.
|
|
|
|
You should do ALL the tests, in the order shown. I have tried to
|
|
carefully choose them so later tests only use capabilities verified in
|
|
the earlier tests.
|
|
|
|
I would welcome additions to this set of tests. Please mail them to
|
|
samba-bugs@anu.edu.au
|
|
|
|
If you send me an email saying "it doesn't work" and you have not
|
|
followed this test procedure then you should not be surprised if I
|
|
ignore your email.
|
|
|
|
|
|
ASSUMPTIONS
|
|
-----------
|
|
|
|
In all of the tests I assume you have a Samba server called BIGSERVER
|
|
and a PC called ACLIENT. I also assume the PC is running windows for
|
|
workgroups with a recent copy of the microsoft tcp/ip stack. The
|
|
procedure is similar for other types of clients.
|
|
|
|
I also assume you know the name of a available share in your
|
|
smb.conf. I will assume this share is called "tmp". You can add a
|
|
"tmp" share like by adding the following to smb.conf:
|
|
|
|
[tmp]
|
|
comment = temporary files
|
|
path = /tmp
|
|
read only = yes
|
|
|
|
|
|
THESE TESTS ASSUME VERSION 1.9.15 OR LATER OF THE SAMBA SUITE. SOME
|
|
COMMANDS SHOWN DID NOT EXIST IN EARLIER VERSIONS
|
|
|
|
|
|
TEST 1:
|
|
-------
|
|
|
|
run the command "testparm". If it reports any errors then your
|
|
smb.conf configuration file is faulty.
|
|
|
|
|
|
TEST 2:
|
|
-------
|
|
|
|
run the command "ping BIGSERVER" from the PC and "ping ACLIENT" from
|
|
the unix box. If you don't get a valid response then your TCP/IP
|
|
software is not correctly installed.
|
|
|
|
Note that you will need to start a "dos prompt" window on the PC to
|
|
run ping.
|
|
|
|
If you get a message saying "host not found" or similar then your DNS
|
|
software or /etc/hosts file is not correctly setup. It is possible to
|
|
run samba without DNS entries for the server and client, but I assume
|
|
you do have correct entries for the remainder of these tests.
|
|
|
|
|
|
TEST 3:
|
|
-------
|
|
|
|
run the command "smbclient -L BIGSERVER -U%" on the unix box. You
|
|
should get a list of available shares back.
|
|
|
|
If you get a error message containing the string "Bad password" then
|
|
you probably have either an incorrect "hosts allow", "hosts deny" or
|
|
"valid users" line in your smb.conf, or your guest account is not
|
|
valid. Check what your guest account is using "testparm" and
|
|
temporarily remove any "hosts allow", "hosts deny", "valid users" or
|
|
"invalid users" lines.
|
|
|
|
If you get a "connection refused" response then the smbd server could
|
|
not be run. If you installed it in inetd.conf then you probably edited
|
|
that file incorrectly. If you installed it as a daemon then check that
|
|
it is running, and check that the netbios-ssn port is in a LISTEN
|
|
state using "netstat -a".
|
|
|
|
If you get a "session request failed" then the server refused the
|
|
connection. If it says "your server software is being unfriendly" then
|
|
its probably because you have invalid command line parameters to smbd,
|
|
or a similar fatal problem with the initial startup of smbd. Also
|
|
check your config file for syntax errors with "testparm".
|
|
|
|
Another common cause of these two errors is having something already running
|
|
on port 139, such as Samba (ie smbd is running from inetd already) or something
|
|
like Digital's Pathworks. Check your inetd.conf file before trying to start
|
|
smbd as a daemon, it can avoid a lot of frustration!
|
|
|
|
|
|
TEST 4:
|
|
-------
|
|
|
|
run the command "nmblookup -B BIGSERVER __SAMBA__". You should get the
|
|
IP address of your Samba server back.
|
|
|
|
If you don't then nmbd is incorrectly installed. Check your inetd.conf
|
|
if yu run it from there, or that the daemon is running and listening
|
|
to udp port 137.
|
|
|
|
One common problem is that many inetd implementations can't take many
|
|
parameters on the command line. If this is the case then create a
|
|
one-line script that contains the right parameters and run that from
|
|
inetd.
|
|
|
|
TEST 5:
|
|
-------
|
|
|
|
run the command "nmblookup -B ACLIENT '*'"
|
|
|
|
You should get the PCs IP address back. If you don't then the client
|
|
software on the PC isn't installed correctly, or isn't started, or you
|
|
got the name of the PC wrong. Note that you probably won't get a "node
|
|
status response" from the PC due to a bug in the microsoft netbios
|
|
nameserver implementation (it responds to the wrong port number).
|
|
|
|
TEST 6:
|
|
-------
|
|
|
|
run the command "nmblookup -d 2 '*'"
|
|
|
|
This time we are trying the same as the previous test but are trying
|
|
it via a broadcast to the default broadcast address. A number of
|
|
Netbios/TCPIP hosts on the network should respond, although Samba may
|
|
not catch all of the responses in the short time it listens. You
|
|
should see "got a positive name query response" messages from several
|
|
hosts.
|
|
|
|
If this doesn't give a similar result to the previous test then
|
|
nmblookup isn't correctly getting your broadcast address through its
|
|
automatic mechanism. In this case you should experiment with the -B
|
|
option which allows you to manually specify the broadcast address,
|
|
overriding the automatic detection. You should try different broadcast
|
|
addresses until your find the one that works. It will most likely be
|
|
something like a.b.c.255 as microsoft tcpip stacks only listen on 1's
|
|
based broadcast addresses. If you get stuck then ask your local
|
|
networking guru for help (and show them this paragraph).
|
|
|
|
If you find you do need the -B option (ie. the automatic detection
|
|
doesn't work) then you should add the -B option with the right
|
|
broadcast address for your network to the command line of nmbd in
|
|
inetd.conf or in the script you use to start nmbd as a daemon. Once
|
|
you do this go back to the "nmblookup __SAMBA__ -B BIGSERVER" test to
|
|
make sure you have it running properly.
|
|
|
|
If your PC and server aren't on the same subnet then you will need to
|
|
use the -B option to set the broadcast address to the that of the PCs
|
|
subnet.
|
|
|
|
TEST 7:
|
|
-------
|
|
|
|
run the command "smbclient '\\BIGSERVER\TMP'". You should then be
|
|
prompted for a password. You should use the password of the account
|
|
you are logged into the unix box with. If you want to test with
|
|
another account then add the -U <accountname> option to the command
|
|
line.
|
|
|
|
Once you enter the password you should get the "smb>" prompt. If you
|
|
don't then look at the error message. If it says "invalid network
|
|
name" then the service "tmp" is not correctly setup in your smb.conf.
|
|
|
|
If it says "bad password" then the likely causes are:
|
|
|
|
- you have shadow passords (or some other password system) but didn't
|
|
compile in support for them in smbd
|
|
- your "valid users" configuration is incorrect
|
|
- you have a mixed case password and you haven't enabled the "password
|
|
level" option at a high enough level
|
|
- the "path =" line in smb.conf is incorrect. Check it with testparm
|
|
|
|
Once connected you should be able to use the commands "dir" "get"
|
|
"put" etc. Type "help <command>" for instructions. You should
|
|
especially check that the amount of free disk space shown is correct
|
|
when you type "dir".
|
|
|
|
|
|
TEST 8:
|
|
-------
|
|
|
|
On the PC type the command "net view \\BIGSERVER". You will need to do
|
|
this from within a "dos prompt" window. You should get back a list of
|
|
available shares on the server.
|
|
|
|
If you get a "network name not found" or similar error then netbios
|
|
name resolution is not working. This is usually caused by a problem in
|
|
nmbd. To overcome it you could do one of the following (you only need
|
|
to choose one of them):
|
|
|
|
- fixup the nmbd installation
|
|
- add the IP address of BIGSERVER to the "wins server" box in the
|
|
advanced tcp/ip setup on the PC.
|
|
- enable windows name resolution via DNS in the advanced section of
|
|
the tcp/ip setup
|
|
- add BIGSERVER to your lmhosts file on the PC.
|
|
|
|
If you get a "invalid network name" or "bad password error" then the
|
|
same fixes apply as they did for the "smbclient -L" test above. In
|
|
particular, make sure your "hosts allow" line is correct (see the man
|
|
pages)
|
|
|
|
|
|
TEST 9:
|
|
--------
|
|
|
|
run the command "net use x: \\BIGSERVER\TMP". You should be prompted
|
|
for a password then you should get a "command completed successfully"
|
|
message. If not then your PC software is incorrectly installed or your
|
|
smb.conf is incorrect. make sure your "hosts allow" and other config
|
|
lines in smb.conf are correct.
|
|
|
|
It's also possible that the server can't work out what user name to
|
|
connect you as. To see if this is the problem add the line "user =
|
|
USERNAME" to the [tmp] section of smb.conf where "USERNAME" is the
|
|
username corresponding to the password you typed. If you find this
|
|
fixes things you may need the username mapping option.
|
|
|
|
|
|
TEST 10:
|
|
--------
|
|
|
|
From file manager try to browse the server. Your samba server should
|
|
appear in the browse list of your local workgroup (or the one you
|
|
specified in the Makefile). You should be able to double click on the
|
|
name of the server and get a list of shares. If you get a "invalid
|
|
password" error when you do then you are probably running WinNT and it
|
|
is refusing to browse a server that has no encrypted password
|
|
capability and is in user level security mode.
|
|
|
|
|
|
Still having troubles?
|
|
----------------------
|
|
|
|
Try the mailing list or newsgroup, or use the tcpdump-smb utility to
|
|
sniff the problem.
|
|
|
|
|