- 1 Mount a Windows share on Linux
- 2 Make SMB mounts persistent by using fstab
- 3 Browse with smbclient
- 4 Make sure Samba is NOT the Windows Master Browser
- 5 Errors
- 6 Share a Linux directory on a Windows network
- 7 Samba Spaces in directory filename
- 8 Simple smb.conf
It's pretty easy to mount a Windows network share on Linux. The `mount` command supports filesystem type cifs (and smbfs).
You may need to resolve your Windows \\server name to an IP address. I find this easier than trying to deal with the Windows names. The following examples show how to mount a Windows folder share named \\server\SharedDocs, and pretends that \\server resolves to 192.168.2.14.
This shows a mount using cifs:
mkdir shareddocs sudo mount -t cifs -o user=Guest //192.168.2.14/shareddocs shareddocs
This shows a mount using old style smbfs:
mkdir shareddocs sudo mount -t smbfs -o username=Guest //192.168.2.14/shareddocs shareddocs
Make SMB mounts persistent by using fstab
Add the following to /etc/fstab and /media/SharedDocs will be automatically mounted when you reboot or run `mount -a`. The IP address, 192.168.2.14, may be replaced with the Windows server name. You may also need to set username and password.
//192.168.2.14/shareddocs /media/shareddocs cifs auto,username=guest,password=,rw,user 0 0
This shows a mount with a given group of
admin and forced permissions for files and directories.
//192.168.2.14/shareddocs /media/shareddocs cifs auto,user=YOUR_WINDOWS_LOGIN,password=YOUR_WINDOWS_PASSWORD,rw,gid=admin,file_mode=00666,dir_mode=00777 0 0
Old style using smbfs
//192.168.2.14/shareddocs /media/shareddocs smbfs auto,username=guest,password=,rw,user 0 0
Browse with smbclient
Note: don't put a trailing slash on the share name!
smbclient -UGuest //192.168.1.1/SharedDocs
Samba tries to search for Windows shares through a few different methods. It first looks up names in DNS. If that fails then it tries broadcasts on the localnet to see if any nearby machines answer. But if you use a "smart" DNS, then the DNS lookup will not fail as it is supposed to. So Samba will never fall-through to using a broadcast lookup. Instead you will just get a timeout.
If you can't fix your DNS then you can change the name resolution order that Samba uses. Edit the file, /etc/samba/smb.conf and find the name resolve order line similar to this:
; name resolve order = lmhosts host wins bcast
Your values may be slightly different. Change this line so that it is uncommented and the resolve order puts host at the end of the list:
name resolve order = lmhosts wins bcast host
You may need to restart processes that make use of Samba including any of the horrible 'gvfs' processes. Sending a HUP signal is usually good enough.
pkill -HUP smb
Sometimes the first time I browse the Windows network I will get a blank page, but if I go back and click "Windows Network" again it will allow me to browse.
Make sure Samba is NOT the Windows Master Browser
Often on a Windows office Network you already have a machine dedicated for the Master Browser and all that other Windows stuff that I've been slowly forgetting. A default install of Samba server might sometimes take over as the Master which may not be desirable. Having multiple local master browsers result in each server competing for browsing election requests. There should be only one local master browser per subnet.
[global] domain master = no local master = no preferred master = no os level = 0
mount_data version 1919251317 is not supported
If you get an error something like this:
smbfs: mount_data version 1919251317 is not supported
then you don't have the smbfs module loaded. Under Ubuntu this is pretty easy to fix. Just run:
sudo apt-get install smbfs
mount error 6
If you get an error like this:
mount error 6 = No such device or address Refer to the mount.cifs(8) manual page (e.g.man mount.cifs)
then you probably used the wrong share name. The remote share does not exist.
/var/log/samba/log.0.0.0.0: Transport endpoint is not connected
These errors are harmless noise caused by Windows XP clients. Win XP will attempt to connect to both ports 139 and 445 at the same time. It will use whichever port connects first and it will drop the connection from the other port.
getpeername failed. Error was Transport endpoint is not connected client 0.0.0.0 read error = Transport endpoint is not connected.
If your Samba server is not a PDC and there are no other Samba servers on your localnet then you may choose to silence these errors by shutting off port 445. Add the following to /etc/samba/smb.conf under the [global] section:
smb ports = 139
This provides read/write for everyone on the given disk named sde1 and mounted under /media/sde1. Put this in in /etc/samba/smb.conf then restart samba.
[global] security = share [sde1] comment = sde1 on Linux server path = /media/sde1 public = yes writable = yes locking = no guest ok = yes
Samba Spaces in directory filename
If you have directory path that has a space in it then here is how you set this in /etc/fstab. For example, say the Windows shared directory had a space in the name such as "Shared Docs" instead of "shareddocs". Use '\040' instead of a space.
//192.168.2.14/Shared\040Docs /media/shareddocs cifs auto,user=YOUR_WINDOWS_LOGIN,password=YOUR_WINDOWS_PASSWORD,rw,gid=admin,file_mode=00666,dir_mode=00777 0 0
[global] security = share workgroup = WORKGROUP server string = %h server dns proxy = no name resolve order = lmhosts wins bcast host log file = /var/log/samba/log.%m max log size = 1000 domain master = no local master = no preferred master = no os level = 0 # smb ports = 139 [public] comment = Public shared folder on Linux server path = /media/usb0 public = yes writable = yes locking = no guest ok = yes # force group = public [print$] comment = Printer Drivers path = /var/lib/samba/printers browseable = yes read only = yes guest ok = yes