Win XP Home, Linux, and SAMBA: how should it work?

I’m trying to network my Win XP Home machine and my Linux 8.0 box together. My goal is to access a shared directory on the LINUX machine from the Win XP box. I have SAMBA running on the Linux machine, and the XP machine sees it in its workgroup.

When I double-click the entry for the Linux machine in the list of machines in the workgroup, I get the message “\Linuxpc is not accessible. You might not have permission to use this network resource. Contact the administrator of this server to find out if you have access permissions. The network path was not found.”

My question is, when this is working properly, what exactly should happen here? Should it prompt me for a Linux username/password? Should it go automatically to the home dir of a user with the same username and password as my Win XP user name?

I know that XP Home has less network capabilites than XP Pro, but upgrading is not an option. It’s my understanding that XP Home should work, and others have reported success with it.

I don’t know what type of Linux you have there (SUSE?), but the first thing you need to do is to set a USER account in both XP and Linux with the same username and password. On Linux you need also to use the smbpasswd command to add the new user to the smbpasswd file; this depends on the kind of Linux you have, but this file is usually located in the /etc folder.

The command:

smbpasswd -a Revtim

Will add your name to the file and the password, after you answer the prompt in Linux.

You need to create a domain, set up samba as the PDC, and proceed from there.

You don’t need to create a domain. Do what GIGObuster suggested, but also check the encryption settings in the config file. There are certain considerations when using samba with XP (or any NT-based system), and I always have to read the documentation very carefully in order to get it set up right. I can tell you that my samba setup is working with XP Pro right now, and this part of the config was critical:

You may wish to use password encryption. Please read

ENCRYPTION.txt, Win95.txt and WinNT.txt in the Samba documentation.

Do not enable this option unless you have read those documents

encrypt passwords = yes

Find and read ENCRYPTION.txt and WinNT.txt.

I’m using Red Hat Linux 8.0.

I did in fact already make make both a Linux user/password and a SAMBA user/password (with smbpasswd) that matched my XP username/password. I had to add a password to the XP user, since it didn’t have one before.

XP home does not support logging into a domain, so that’s not an option. Shouldn’t be necessary though, as galt suggests.

galt, I thought I had read about the password encryption issue, but probably not as carefully as I need to. The problem I had there was that the registry keys referenced in the file for NT didn’t exist on XP, so I turned off the password encryption on SAMBA. Shouldn’t it work this way, albeit in a less in a less secure manner?

I will read those documents again more carefully, this is probably the key to my problems. Thanks for the help, guys.

The ENCRYPTION.txt simply doesn’t exist on the LINUX machine, the find command didn’t find it (or encryption.txt either). I did find the WinNT.txt file describing the registry path to the enablePlainTextPassword value, but that path simply does not exist in the XP registry. I did find a web page that showed where it was on XP though, and I changed it from 0 to 1.

I rebooted everything, and the problem is still there.

I also tried it where encrypt passwords = no (rebooted), and it still failed.

galt, on your setup, what happend when you double-clink the Linux entry on your XP machine? Certainly it doesn’t give you the error like I have, but what does it do? Does it just start browsing shared directories? Browsing the home directory of your Linux account that matches your XP account? Does it prompt you for username/password?

What?!

That’s such a piece of crap.

FYI, I found the ENCRYPTION.txt file on the web(http://us1.samba.org/samba/ftp/docs/textdocs/ENCRYPTION.txt), haven’t gone through it yet.

Yeah, it is…especially when all other versions of Windows have the ability to log into a domain.

Since it’s not necessary for my SAMBA project, it’s not a big deal that there’s no domain support. I wonder if it would be easier, though.

Have you tried using SWAT to make your smb.conf?

Anyway, a simple one I have set up reads:



[global]
  encrypt passwords = Yes
[MyShare]
  path=/home/myshare
  read only = No
  hosts allow = 178.78.178.


(not my real ip; just an example)

This prompts me for a username/password on Win2K. I got the “Not accessible” error when I originally set it up, because I forgot to turn the encrypt passwords on. This works without changing anything on the Win2K machine.

Haven’t tried SWAT yet, that might be my next step.

I might need that “hosts allow” statement, I’ll give that a try. Thanks!

Still getting the same error described on the OP. Here’s my smb.conf file, maybe something will look obvious to somebody. My Win XP box has IP 192.168.1.100, the LINUX is 192.168.1.101, both getting IPs via the DHCP function of my LINKSYS Cable/DSL router. The XP box has registry value HK_LOCAL_Machine/system/CurrentControlSet/Services/Lanmanworkstation/ Parameters > EnablePlainTextPassword --> set to 1

This is the main Samba configuration file. You should read the

smb.conf(5) manual page in order to understand the options listed

here. Samba has a huge number of configurable options (perhaps too

many!) most of which are not shown in this example

Any line which starts with a ; (semi-colon) or a # (hash)

is a comment and is ignored. In this example we will use a

for commentry and a ; for parts of the config file that you

may wish to enable

NOTE: Whenever you modify this file you should run the command “testparm”

to check that you have not made any basic syntactic errors.

#======================= Global Settings =====================================
[global]

workgroup = NT-Domain-Name or Workgroup-Name

workgroup = REVTIM

server string is the equivalent of the NT Description field

server string = REVTIM_RHLINUX

This option is important for security. It allows you to restrict

connections to machines which are on your local network. The

following example restricts access to two C class networks and

the “loopback” interface. For more examples of the syntax see

the smb.conf man page

hosts allow = 192.168.1. 192.168.2. 127.

if you want to automatically load your printer list rather

than setting them up individually then you’ll need this

printcap name = /etc/printcap
load printers = yes

It should not be necessary to spell out the print system type unless

yours is non-standard. Currently supported print systems include:

bsd, sysv, plp, lprng, aix, hpux, qnx

printing = lprng

Uncomment this if you want a guest account, you must add this to /etc/passwd

otherwise the user “nobody” is used

guest account = pcguest

this tells Samba to use a separate log file for each machine

that connects

log file = /var/log/samba/%m.log

Put a capping on the size of the log files (in Kb).

max log size = 0

Security mode. Most people will want user level security. See

security_level.txt for details.

; security = user

Use password server option only with security = server

The argument list may include:

password server = My_PDC_Name [My_BDC_Name] [My_Next_BDC_Name]

or to auto-locate the domain controller/s

password server = *

; password server = <NT-Server-Name>

Password Level allows matching of n characters of the password for

all combinations of upper and lower case.

; password level = 8
; username level = 8

You may wish to use password encryption. Please read

ENCRYPTION.txt, Win95.txt and WinNT.txt in the Samba documentation.

Do not enable this option unless you have read those documents

encrypt passwords = yes
smb passwd file = /etc/samba/smbpasswd

The following is needed to keep smbclient from spouting spurious errors

when Samba is built with support for SSL.

; ssl CA certFile = /usr/share/ssl/certs/ca-bundle.crt

The following are needed to allow password changing from Windows to

update the Linux system password also.

NOTE: Use these with ‘encrypt passwords’ and ‘smb passwd file’ above.

NOTE2: You do NOT need these to allow workstations to change only

the encrypted SMB passwords. They allow the Unix password

to be kept in sync with the SMB password.

; unix password sync = Yes
; passwd program = /usr/bin/passwd %u
; passwd chat = Newpassword* %n
Retypenewpassword %n
passwd:allauthenticationtokensupdatedsuccessfully*

You can use PAM’s password change control flag for Samba. If

enabled, then PAM will be used for password changes when requested

by an SMB client instead of the program listed in passwd program.

It should be possible to enable this without changing your passwd

chat parameter for most setups.

pam password change = yes

Unix users can map to different SMB User names

; username map = /etc/samba/smbusers

Using the following line enables you to customise your configuration

on a per machine basis. The %m gets replaced with the netbios name

of the machine that is connecting

; include = /etc/samba/smb.conf.%m

This parameter will control whether or not Samba should obey PAM’s

account and session management directives. The default behavior is

to use PAM for clear text authentication only and to ignore any

account or session management. Note that Samba always ignores PAM

for authentication in the case of encrypt passwords = yes

; obey pam restrictions = yes

Most people will find that this option gives better performance.

See speed.txt and the manual pages for details

socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192

Configure Samba to use multiple interfaces

If you have multiple network interfaces then you must list them

here. See the man page for details.

; interfaces = 192.168.12.2/24 192.168.13.2/24

Configure remote browse list synchronisation here

request announcement to, or browse list sync from:

a specific host or from / to a whole subnet (see below)

; remote browse sync = 192.168.3.25 192.168.5.255

Cause this host to announce itself to local subnets here

remote announce = 192.168.1.255 192.168.2.44

Browser Control Options:

set local master to no if you don’t want Samba to become a master

browser on your network. Otherwise the normal election rules apply

local master = no

OS Level determines the precedence of this server in master browser

elections. The default value should be reasonable

; os level = 33

Domain Master specifies Samba to be the Domain Master Browser. This

allows Samba to collate browse lists between subnets. Don’t use this

if you already have a Windows NT domain controller doing this job

; domain master = yes

Preferred Master causes Samba to force a local browser election on startup

and gives it a slightly higher chance of winning the election

; preferred master = yes

Enable this if you want Samba to be a domain logon server for

Windows95 workstations.

; domain logons = yes

if you enable domain logons then you may want a per-machine or

per user logon script

run a specific logon batch file per workstation (machine)

; logon script = %m.bat

run a specific logon batch file per username

; logon script = %U.bat

Where to store roving profiles (only for Win95 and WinNT)

%L substitutes for this servers netbios name, %U is username

You must uncomment the [Profiles] share below

; logon path = \%L\Profiles%U

Windows Internet Name Serving Support Section:

WINS Support - Tells the NMBD component of Samba to enable it’s WINS Server

wins support = yes

WINS Server - Tells the NMBD components of Samba to be a WINS Client

Note: Samba can be either a WINS Server, or a WINS Client, but NOT both

; wins server = w.x.y.z

WINS Proxy - Tells Samba to answer name resolution queries on

behalf of a non WINS capable client, for this to work there must be

at least one WINS Server on the network. The default is NO.

; wins proxy = yes

DNS Proxy - tells Samba whether or not to try to resolve NetBIOS names

via DNS nslookups. The built-in default for versions 1.9.17 is yes,

this has been changed in version 1.9.18 to no.

; dns proxy = no

Case Preservation can be handy - system default is no

NOTE: These can be set on a per share basis

; preserve case = no
; short preserve case = no

Default case is normally upper case for all DOS files

; default case = lower

Be very careful with case sensitivity - it can break things!

; case sensitive = no

#============================ Share Definitions ==============================
[homes]
comment = Home Directories
browseable = no
writable = yes
valid users = %S
create mode = 0664
directory mode = 0775

If you want users samba doesn’t recognize to be mapped to a guest user

; map to guest = bad user

Un-comment the following and create the netlogon directory for Domain Logons

; [netlogon]
; comment = Network Logon Service
; path = /usr/local/samba/lib/netlogon
; guest ok = yes
; writable = no
; share modes = no

Un-comment the following to provide a specific roving profile share

the default is to use the user’s home directory

;[Profiles]
; path = /usr/local/samba/profiles
; browseable = no
; guest ok = yes

NOTE: If you have a BSD-style print system there is no need to

specifically define each individual printer

[printers]
comment = All Printers
path = /var/spool/samba
browseable = no

Set public = yes to allow user ‘guest account’ to print

guest ok = no
writable = no
printable = yes

This one is useful for people to share files

[tmp]
comment = Temporary file space
path = /tmp
read only = no
public = yes

A publicly accessible directory, but read only, except for people in

the “staff” group

;[public]
; comment = Public Stuff
; path = /home/samba
; public = yes
; writable = yes
; printable = no
; write list = @staff

Other examples.

A private printer, usable only by fred. Spool data will be placed in fred’s

home directory. Note that fred must have write access to the spool directory,

wherever it is.

;[fredsprn]
; comment = Fred’s Printer
; valid users = fred
; path = /home/fred
; printer = freds_printer
; public = no
; writable = no
; printable = yes

A private directory, usable only by fred. Note that fred requires write

access to the directory.

;[fredsdir]
; comment = Fred’s Service
; path = /usr/somewhere/private
; valid users = fred
; public = no
; writable = yes
; printable = no

a service which has a different directory for each machine that connects

this allows you to tailor configurations to incoming machines. You could

also use the %U option to tailor it by user name.

The %m gets replaced with the machine name that is connecting.

[pchome]
comment = PC Directories
path = /usr/local/pc/%m
public = no
writable = yes
read only = No
hosts allow = 192.168.1.100

A publicly accessible directory, read/write to all users. Note that all files

created in the directory by users will be owned by the default user, so

any user with access can delete any other user’s files. Obviously this

directory must be writable by the default user. Another user could of course

be specified, in which case all files would be owned by that user instead.

[public]
path = /pub
public = yes
only guest = yes
writable = yes
printable = no
read only = No
hosts allow = 192.168.1.100

The following two entries demonstrate how to share a directory so that two

users can place files there that will be owned by the specific users. In this

setup, the directory should be writable by both users and should have the

sticky bit set on it to prevent abuse. Obviously this could be extended to

as many users as required.

;[myshare]
; comment = Mary’s and Fred’s stuff
; path = /usr/somewhere/shared
; valid users = mary fred
; public = no
; writable = yes
; printable = no
; create mask = 0765

I was going to try SWAT, but when I attempted to install the latest RPM (samba-swat-2.2.3a-6.i386.rpm) it said

error: Failed dependencies:
samba = 2.2.3a is needed by samba-swat-2.2.3a-6

I am using samba-2.2.5-1.i386.rpm. I suppose I could uninstall 2.2.5 and install 2.2.3a, but perhaps someone will be able to see a problem with my smb.cnf file above first.

I have found webminto be the easiest way to configure SAMBA, or just about anything else you have running on your linux box. Best of all, it is distro independent.

I don’t personally have much experience with configuring SAMBA, but I have friends who do. Their opinion is a simple one: don’t use Red Hat. Try using Mandrake or SuSE instead. While Red Hat is generally an excellent version of Linux, my friends have had poor to no luck with SAMBA and Red Hat. After switching to another Linux, the setup (so they say) was much, much easier.

Just wanted to point out another option.

tourbot, thanks for the link to webmin, I might give that a try. I’m going out of town for a week or so, so it’ll be a while before I try it.

Pleonast, thanks for the info. I might very well try another LINUX system, if I don’t have any better luck soon with RH. My frustation level is rapidly approaching my interest level on this project.

Revtim, I don’t know anybody who uses XP with linux, so I’m just taking some guesses.

First, change the line in smb.conf that says
; security = user
to say
security = share

Next, comment out all the pam, password chat, and smbpasswd lines. If XP Home doesn’t support domain logons, these will cripple you, since they only work with validated logons (I think). You said you already created a pcguest account on both machines and assigned permissions accordingly, right?

Finally, if that doesn’t work, go to my #1 resource for linux troubleshooting information: http://groups.google.com/
Use search terms: samba linux XP and your error message.

Thanks Joe_Cool, I’ll give that a try when I get back home in a week or so.

I did do several Google groups searches already, but I didn’t see anything that helped.

I thought that if you compiled Samba from the tarball it included SWAT? I’m not sure though; I use Gentoo and just did “emerge samba”.

re smb.conf: the one I quoted above is the entirety of my smb.conf, whereas I see you’ve edited the example one. Maybe just try something simple like mine?

You should also check that you can connect to the redhat box from XP in the first place. Try telnetting in, or something, so that you know you can. Oh, and I’m assuming you have actually checked that smbd is running OK, yes? :wink: