Configuring Samba to communicate with an XP machine
SlackwareThis Forum is for the discussion of Slackware Linux.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
Configuring Samba to communicate with an XP machine
Well, I installed the samba package and rc.samba runs on startup. How in the world do I setup my Slack box to communicate with my XP machine? I would like to share the printer attached to the XP machine and mount the hard drive on that machine. Thanks!
Is the printer shared on the XP machine? If so, you'll need to setup CUPS on Slack. Assuming you have it installed (and the daemon is running), you point your browser to http://localhost:631 and add a printer. It should be easy enough to do. When it asks you to choose "Device", you select the "Windows printer via SAMBA" option. The next screen asks for the URI of the device. For my Windows printer, I use: smb://guest:nopass@hostname/printer, obviously substituting "hostname" and "printer" with the machine and printer names, respectively. If you use a username and password for the XP machine, then put those before and after the colon.
OK, now for mounting shares. As with mounting local devices, you need a mount point, so create one of those first. You use smbmount to do the mounting. The syntax (from the man page) is as follows:
smbmount servicemount point -o options,
where service is what you want to mount (e.g. if I wanted to mount a shared folder called "Shared", located on a machine called "MyBox", I'd use "//MyBox/Shared" here). You don't have to specify options if you don't want/need to. Check the smbmount man page for info about the options you can use.
You can also add the service to your fstab, so it's automatically mounted on boot for example.
Also, look at the smbclient command ("man smbclient").
Edit: what does your /etc/samba/smb.conf look like?
Now on my XP machine I decided to share my "c:\stuff" folder as a test to see if I could get samba to work. As you can see by the results above, I couldn't mount the folder. What am I doing wrong?
Here is my smb.conf. By the way, after I installed samba there was ONLY a samba.conf-sample file. I edited the line that said "workgroup=" to "workgroup=Home" which is the name I gave the workgroup on my XP machine. That was the ONLY line that I changed.
Code:
# 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
#
# For a step to step guide on installing, configuring and using samba,
# read the Samba HOWTO Collection.
#
# 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, eg: LINUX2
workgroup = Home
# server string is the equivalent of the NT Description field
server string = Samba Server
# Security mode. Defines in which mode Samba will operate. Possible
# values are share, user, server, domain and ads. Most people will want
# user level security. See the HOWTO Collection for details.
security = user
# 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
load printers = yes
# you may wish to override the location of the printcap file
; printcap name = /etc/printcap
# on SystemV system setting printcap name to lpstat should allow
# you to automatically obtain a printer list from the SystemV spool
# system
; printcap name = lpstat
# It should not be necessary to specify the print system type unless
# it is non-standard. Currently supported print systems include:
# bsd, cups, sysv, plp, lprng, aix, hpux, qnx
; printing = cups
# 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
# Put a capping on the size of the log files (in Kb).
max log size = 50
# 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>
# Use the realm option only with security = ads
# Specifies the Active Directory realm the host is part of
; realm = MY_REALM
# Backend to store user information in. New installations should
# use either tdbsam or ldapsam. smbpasswd is available for backwards
# compatibility. tdbsam requires no further configuration.
; passdb backend = tdbsam
# 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.
# Note: Consider carefully the location in the configuration file of
# this line. The included file is read at that point.
; include = /usr/local/samba/lib/smb.conf.%m
# Most people will find that this option gives better performance.
# See the chapter 'Samba performance issues' in the Samba HOWTO Collection
# and the manual pages for details.
# You may want to add the following on a Linux system:
# SO_RCVBUF=8192 SO_SNDBUF=8192
socket options = TCP_NODELAY
# 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
# 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 default is NO.
dns proxy = no
# These scripts are used on a domain controller or stand-alone
# machine to add or delete corresponding unix accounts
; add user script = /usr/sbin/useradd %u
; add group script = /usr/sbin/groupadd %g
; add machine script = /usr/sbin/adduser -n -g machines -c Machine -d /dev/null -s /bin/false %u
; delete user script = /usr/sbin/userdel %u
; delete user from group script = /usr/sbin/deluser %u %g
; delete group script = /usr/sbin/groupdel %g
#============================ Share Definitions ==============================
[homes]
comment = Home Directories
browseable = no
writable = yes
# 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 = /homes/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/pc/%m
; public = no
; writable = yes
# 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 = /usr/somewhere/else/public
; public = yes
; only guest = yes
; writable = yes
; printable = no
# 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
To make sure the problem is not related to name resolution, you should address the XP machine by ip address, not by it's netbios name. Assuming the ip address of the XP box is 192.168.1.100
Code:
ping 192.168.1.100
If you don't get any responses, turn off the XP firewall
todd@todd:~$ smbmount //192.168.2.100/stuff /mnt/xpdrive/
2999: session request to 192.168.2.100 failed (Called name not present)
2999: session request to 192 failed (Called name not present)
2999: session request to *SMBSERVER failed (Not listening on called name)
SMB connection failed
I can ping the XP computer and I have the XP Firewall shutoff but I'm having trouble mounting the folder.
I assume your XP computer "name" is 'Home' as well as your WORKGROUP name being 'Home'?
That's what your currently trying anyway. If you haven't messed with the default workgroup name in XP then change it in /etc/samba/smb.conf to read:
workgroup = WORKGROUP
My Desktop running XP has it's computer name set to HAL9000 and I haven't touched the default workgroup name so the ONLY modification necessary to /etc/samba/smb.conf is the above change. My D drive partition is being shared and it's name is "Shared" so I mount it like so:
Code:
mount -t smbfs //Hal9000/Shared /mnt/samba -o lfs,rw,username=blah,password=blah
If all you want to do is mount your windows share then rc.samba doesn't need to be running either.
I checked to make sure that I had everything configured how I need it. The XP computer is known as "Sony" in workgroup "Home" So, I've tried to mount the "stuff" folder using the following code
Code:
todd@todd:~$ smbmount //Sony/stuff /mnt/xpdrive/
Password:
smbmnt must be installed suid root for direct user mounts (1000,1000)
smbmnt failed: 1
Now on my Windows XP machine, it boots withOUT the use of a password to log in. Sooooo, I don't add "-o username=<whatever> etc" to my command line. As you can see above, when I run the line it asks for a "password". I just hit ENTER since I don't have a password and I received the error message above.
When I tried mounting as "root" I get the following response.
Is their anyway I can mount the XP share as any other user other than root??
Yes, but not recommended. I would suggest you use sudo command for the purpose. It allows to run root privillaged commands without logging in as a root user.
Quote:
Originally Posted by tubatodd
Can I add something to my fstab to mount that partition automatically on bootup??
I have entered nothing for username and password as you stated previously that u r not using any passwords. If you use users and passwords to share files, write username=anyusername,password=hispassword instead.
EDIT:
To mount manually all devices in /etc/fstab use the following command. I think u might need it as samba starts after /etc/fstab is processed in slackware as far as I know
Code:
mount -a
Last edited by manishsingh4u; 07-06-2006 at 04:27 AM.
Well, adding those lines to my fstab didn't work. I even tried running "mount -a" and "mount -a -t smbfs" and nothing worked. It would be great if I could have it mounted on bootup.
Try adding the "_netdev" option to fstab. Pretty sure what might be happening is that your network isn't available when your fstab is run. Using _netdev tells it to wait for mounting until your network is up... the lfs option is great also if you wan't to transfer files larger than 2Gb. Without it, the transfer will crap out.
Try adding the "_netdev" option to fstab. Pretty sure what might be happening is that your network isn't available when your fstab is run. Using _netdev tells it to wait for mounting until your network is up... the lfs option is great also if you wan't to transfer files larger than 2Gb. Without it, the transfer will crap out.
On bootup fstab is STILL trying to mount the partition before the network is setup. Initially, when I put that line in my fstab, my machine auto detected the new mount point. However, on bootup it still won't work.
I forgot to mention, I want to mount the D drive as well, but it is NTFS. Is that a problem?
Wouldn't your C Drive be formatted in NTFS under XP? Not much point in mounting an NTFS share under Linux unless you need to pull files from it. Last I checked, NTFS write support is so crippled under the kernel that there's not even much point in trying it. Last I read, you can olny write to an NTFS partition if your editing an existing file. The filename has to stay the same and the file size has to stay the same. So, you could replace the text 'cat' with 'dog' and then save it. Wow... Very usefull indeed..
Besides.... Personally, it would make me nervous having my entire C Drive exposed like that, much less 100% of the time. Even tho 1000:1 nothing will ever happen security wise to put your windows share in danger. Especially if your behind a router and firewall script.
I'm not entirely sure why it's not mounting. Is it giving you any sort of error in dmesg? Why don't you try adding the ntfs module to rc.modules so it loads early. Just a stab in the dark.
Food for thought; here is what I do and if you can live with it, it might be a better option for you. I just make a script called "windows", chmod it 700 and throw it in /sbin. This is on a sysvinit version of Slack so all the sourced files/refrenced functions are pointless on vanilla slack.
Code:
#!/bin/sh
# FIXME - Make a firewall rule instead of stop/start
. /etc/sysconfig/rc
. $rc_functions
case "$1" in
mount)
if ps x | grep /sbin/mount.smbfs 2>/dev/null 1>/dev/null ;then
echo "Samba Share already mounted..."
echo_failure
exit 1
fi
/etc/rc.d/init.d/firewall stop
echo "Mounting Samba share..."
mount -t smbfs //Hal9000/Shared /mnt/samba -o lfs,rw,password=
evaluate_retval
/etc/rc.d/init.d/firewall start
;;
umount)
if ps x | grep /sbin/mount.smbfs 2>/dev/null 1>/dev/null ;then
echo "Unmounting Samba share..."
umount /mnt/samba
evaluate_retval
else
echo "Samba Share not mounted..."
echo_failure
fi
;;
*)
echo "Usage: $0 {mount|umount}"
exit 1
;;
esac
Along with removing the functions, you would want to grep for //Sony/CDrive instead of /sbin/mount.smbfs if your going to have multiple shares in the script. If opening up a terminal and typing "sudo windows mount" is too much of a pain for you, you could possibly make a .desktop with nice icons that you can just double click. Throw them in your task bar or something... Multiple ways to approach it.
Things like this can be problematic to troubleshoot unless you can sit down at the box. As a last resort, you could also add your mount commands to rc.local... What's it matter where they get mounted from in the boot process, as long as they get mounted.
EDIT: And, as always, make sure your not doing anything stupid like typo's... Make sure your 'share' name is actually 'CDrive' and not 'Local Disk (C)'.. You get my point. Try formatting your D drive in FAT32 and then add it to fstab and see what happens (as I said, you'll want a share to be FAT32 anyway). Process of elimination. Maybe it's the NTFS thats hanging you up somehow in the boot process.
I don't think your allowed to state username= with actually giving a username. You should get a permission denied error or some such nonsense. That or fill in your username but leave the password blank so it doesn't halt the boot process waiting for you to hit enter.
Code:
[root@jaguar ~] mount -t smbfs //Hal9000/Shared /mnt/samba -o lfs,rw,username=,password=
7392: tree connect failed: ERRDOS - ERRnoaccess (Access denied.)
SMB connection failed
[root@jaguar ~] mount -t smbfs //Hal9000/Shared /mnt/samba -o lfs,rw,password=
[root@jaguar ~] umount /mnt/samba/
[root@jaguar ~] mount -t smbfs //Hal9000/Shared /mnt/samba -o lfs,rw,username=madpenguin,password=
[root@jaguar ~] ls /mnt/samba/
limewire-pro.txt Music New Music Recycled
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.