Introduction
I was having the most difficult time in the world trying to figure out the best way to connect from my ubuntu workstation to a server hosting shares which were created on a windows 2000 server.
Nautilus mounted them fine, and displayed the correct folder and file names. However, the files were not cashed which meant that I was getting very slow response times, and applications which were Nautilus unaware (Open office) could not access the shares. I was also having difficulty with my keyring among a few other share related issues.
I tried using the smbfs mount function, but it didn't want to cooperate with the Japanese file names. So, since cifs is suppose to be poised for a smbfs replacement I decided to take a look into it and see what it could do. So, even if you don't have Japanese (or other non-latin based characters) in your shared folder/file names, you should still take a look at cifs.
Disclaimer:
==================================
Despite the fact that this is a CLI tutorial, I have tried to write at a fairly basic level. Therefore, I've included a lot of commentary to address the needs of a newly established Linux/Ubuntu user which makes this howto seem lengthy (it's really only a couple lines of cli edits). So, if there is confusion, please let me know so I can attempt to clear it up.
Also, I have focused on command line instruction so the methods can be used in any of the Ubuntu based releases (Ubuntu, Kubuntu, Xubuntu et. al.)
Some NAS devices (like the ARGOSY HD363N) have difficulty handling cifs, so if you are trying to connect to a network attached storage unit, you may be stuck with smbfs (see disclaimer below). If you do have a NAS device, besure to include the device name and model in your post if you are having trouble.
SMBFS has depreciated is no longer included in Ubuntu. If your network needs require smbfs, you will have to compile it from source, or use a version of Ubuntu earlier than Hardy (not recommended).
Finally, there are two alternatives to the following howto that may be of interest to some people. There is a nicely written tutorial for hard-mounting via GVFS: http://ubuntuforums.org/showthread.php?t=1186877. I have also written a tutorial for fixing Samba browsing here: http://ubuntuforums.org/showthread.php?t=1169149
==================================
Pre-work
There are a few preliminary actions we need to take before we can start mounting using cifs.
Although smbfs is no longer part of Ubuntu, smbfs is still the metapackage which contains all the dependencies necessary for using cifs to mount Samba shares. Ubuntu does allow for some cifs functionality out of the box, so it may seem like this command is not necessary, but the smbfs metapackage is critical for this howto. Even if you are positive you DO have the smbfs metapackage installed, run this command anyway.
Code:
sudo apt-get install smbfs
Now we need to create a location where the samba share can mount. Change "sharename" in the following code to something unique to the remote share, and that you will recognize (usually the share name itself). By creating the mount point in the /media folder, you will get a nifty icon to appear on your desktop like when a cdrom mounts.
Code:
sudo mkdir /media/sharename
To mount a windows share on a DHCP network, it is convenient to be able to mount by netbios name, so you don't have to modify the mount parameters every time you reboot your network. This can be easily enabled by doing the following:
Edit your nsswitch file
Code:
sudo nano /etc/nsswitch.conf
search through the file and look for the line that looks something like so:
Code:
hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4
and add "wins" to the line so it looks something like this:
Code:
hosts: files mdns4_minimal [NOTFOUND=return] wins dns mdns4
Save the file by hitting ctrl+x, type "y" to save the buffer, and <enter> to exit.
note: Order does matter. "wins" MUST be before "dns".
Now you'll need to install winbind
Code:
sudo apt-get install winbind
Reboot, or restart your network.
Before you move on, you'll need to know the netbios name and share name of the computer you are trying to connect to. If you don't know what they are, please see the next post in this thread before continuing
----------------------------------------------------
There are two ways you can mount using cifs; you can mount it manually as a one time use type purpose, or you can mount it permanently. If you only want to mount the share a few times, it's probably best to follow the directions under "Manual mount". If you will be mounting the same share over and over again, follow the directions under "Permanent mount".
In all cases, you will have to replace the following words:
> netbiosname
> sharename
with the actual netbios name and shared folder name of the shares on your remote computer.
Manual mount
If all you want to do is mount the samba share a few times, it's probably not necessary to make modifications to fstab as is the case with a permanent arrangement. Just modify one of the following lines so that it reflects your local needs (ie, change "netbiosname" to the netbios name of the samba server you are attempting to connect to, change "sharename" to the network name of your share, and change 'winusername' and 'winpassword' to the appropriate username and password of the share you are attempting to connect to).
For a samba server with password protection:
Code:
sudo mount -t cifs //netbiosname/sharename /media/sharename -o username=winusername,password=winpassword,iocharset=utf8,file_mode=0777,dir_mode=0777
If your samba share does not require a password (shame on you ) just use the following line instead:
Code:
sudo mount -t cifs //netbiosname/sharename /media/sharename -o guest,rw,iocharset=utf8,file_mode=0777,dir_mode=0777
If your guest access does not allow write access, just remove the file and dir modes like so:
Code:
sudo mount -t cifs //netbiosname/sharename /media/sharename -o guest,iocharset=utf8
Permanent mount
If you connect to the same samba share day in and day out, you'll likely want to mount it with a more permanent arrangement so you don't have to go looking for your mount command every time you boot your computer. To do this, you'll need to modify your fstab file. This is a system critical file (your Ubuntu box will not work correctly if it has a mistake), so you'll want to make a backup in case things go haywire on you:
Code:
sudo cp /etc/fstab /etc/fstab_old
if you need to restore your backup, use the following command:
Code:
sudo mv /etc/fstab_old /etc/fstab
If your samba server requires a password to access the shared files, you should create a credentials file so the username and password are hidden from prying eyes. If you don't have password protected access to your samba share, skip this section and start with the line that says "Now we edit fstab:".
To create a credentials file, do the following:
Code:
sudo nano /root/.smbcredentials
WARNING!!! Do not use a GUI text editor (like KATE) to create this file!!!
Add the following lines (change winusername and winpassword to the correct username and password for the samba/windows server you want to connect to):
username=winusername
password=winpassword
Save the file by hitting ctrl+x, type "y" to save the buffer, and <enter> to exit.
Now, change the permissions of the file so only root can read and edit it:
Code:
sudo chmod 700 /root/.smbcredentials
Now we edit fstab:
Code:
sudo nano /etc/fstab
and at the end of the file, insert one (1) of the following 3 lines according to your needs. Make sure you change "netbiosname" and "sharename" to the correct names for the server you are trying to connect to. (if you don't know what these are, please see the next post)
For a password protected share with read/write permission.
Code:
//netbiosname/sharename /media/sharename cifs credentials=/root/.smbcredentials,iocharset=utf8,file_mode=0777,dir_mode=0777 0 0
For a non-password protected share with read/write permission use this instead:
Code:
//netbiosname/sharename /media/sharename cifs guest,rw,iocharset=utf8,file_mode=0777,dir_mode=0777 0 0
For read only guest access:
Code:
//netbiosname/sharename /media/sharename cifs guest,iocharset=utf8 0 0
Save the file by hitting ctrl+x, type "y" to save the buffer, and <enter> to exit.
note: if you've used a text editor other than nano, make sure that there is a blank line at the end of this file.
Finally, test your settings to make sure they work:
If you get a folder on your desktop with your server shares, then you have configured everything correctly. If not, please see the "Troubleshooting" section below, review the howto, or post in the thread.
Now, your samba shares will be mounted every time you start the computer. If you are not connected to your network when you boot, this will not cause problems. The share will simply not appear on your desktop.
Troubleshooting
******ERRORS******
Internal error failed to initialize HAL!
If you see this error in your dmesg, you can fix the problem by following the directions here: https://launchpad.net/distros/ubuntu...74/comments/48
Thanks to bigbadsi for all the troubleshooting done to find the solution to this error, and for providing the inspiration for this howto: http://www.ubuntuforums.org/showthread.php?t=282008
---------####---------
CIFS VFS: Server not responding
If you see this error during shutdown, and or your shutdown sequence halts because of this error message:
Code:
[18.312000] CIFS VFS: Server not responding
[18.312000] No response for cmd 5 mid 8
Try this fix here:
http://ubuntuforums.org/showthread.php?t=1347340
*thanks to tipiglen for posting the fix to this.
For earlier versions of Ubuntu, this may also work.
Run these two commands:
Code:
ln -s /etc/init.d/umountnfs.sh /etc/rc0.d/K15umountnfs.sh
ln -s /etc/init.d/umountnfs.sh /etc/rc6.d/K15umountnfs.sh
Source: http://ubuntuforums.org/showthread.php?t=1128729
*thanks to incoming429 for testing the fix on this error.
The above two fixes don't work in all situations. There are more fixes listed in this thread: http://ubuntuforums.org/showthread.php?t=293513, or see the Jaunty specific fix below.
Bug information here: https://bugs.launchpad.net/ubuntu/+s...r/+bug/211631/
******Jaunty USERS******
CIFS VFS: Server not responding error needs a bit different fix.
Edit /etc/gdm/PostSession/Default:
Code:
sudo nano /etc/gdm/PostSession/Default
Add /etc/init.d/umountnfs.sh to the top of the file like so:
Code:
#!/bin/sh
/etc/init.d/umountnfs.sh
PATH="/usr/bin/X11:/usr/X11R6/bin:/opt/X11R6/bin:$PATH:/bin:/usr/bin"
OLD_IFS=$IFS
gdmwhich () {
COMMAND="$1"
OUTPUT=
IFS=:
for dir in $PATH
do
if test -x "$dir/$COMMAND" ; then
if test "x$OUTPUT" = "x" ; then
OUTPUT="$dir/$COMMAND"
fi
fi
done
IFS=$OLD_IFS
echo "$OUTPUT"
}
exit 0
******HARDY USERS******
Mount error 13. If you are seeing "mount error 13 = Permission denied" error ("CIFS VFS: cifs_mount failed w/return code = -13" in dmesg) when entering the "sudo mount -a" command, add the nounix option like so:
Code:
//netbiosname/sharename /media/sharename cifs credentials=/root/.smbcredentials,nounix,iocharset=utf8,file_mode=0777,dir_mode=0777 0 0
thanks to TonyS for posting this solution here: http://ubuntuforums.org/showthread.php?t=800313
******ALL USERS******
Space in path name. If you have a space in your path (example: //netbiosname/sharename with space), you should replace the space with '\040' like so:
Code:
//netbiosname/sharename\040with\040space /media/sharename cifs credentials=/root/.smbcredentials,iocharset=utf8,file_mode=0777,dir_mode=0777 0 0
---------####---------
Netbios name resolution with Firestarter. Here is a fantastic thread for how to configure Firestarter so that name resolution works correctly: http://ubuntuforums.org/showthread.php?t=190542
---------####---------
Open Office save errors. If you get save errors when modifying an Open Office document in a CIFS mounted share, you will need to include the nobrl option like so:
Code:
//netbiosname/sharename /media/sharename cifs credentials=/root/.smbcredentials,iocharset=utf8,nobrl,file_mode=0777,dir_mode=0777 0 0
Thanks to jwrede for providing the solution to this troublesome problem.
---------####---------
Gedit save errors.
A bug (described here) in gedit prevents gedit from saving to files located on CIFS mounted shares. Thank you MountainX for reporting this very helpful information. A workaround for this error was located here. The link is no longer valid, but the described workaround was to uncheck "Create backup of files before saving" (under "Edit" > "Preferences" > "Editor"). Also, a patch was recently posted so current versions of Gedit may not be effected.
---------####---------
Problems connecting to Vista? Take a look at this thread: http://ubuntuforums.org/showthread.php?p=6120780
Also, you will not be able to connect to any UAC protected drive/directory. Because of this, sharing the entire drives will not give you access (unlike it did in XP). Believe me when I say ... this is a very good thing. You don't want your entire system hanging out there for all to see. It's possible to override this protection but I wouldn't advise it.
Instead, share a single folder that your Vista user has control over. More information here:
http://www.vistax64.com/vista-securi...ss-denied.html
---------####---------
Files owned by root / "The folder contents could not be displayed". If you can view but not change, delete, or add new files to your Samba share, or if you get an error in Nautilus which says, "The folder contents could not be displayed" or more recently "You don't have permission to do that"; try this fix:
1) Find your uid and gid (normally both are 1000, but double check):
Code:
cat /etc/passwd | grep ubuntu-username
The output will look something like this (my uid and gid are marked in red):
Code:
$ cat /etc/passwd | grep dmizer
dmizer:x:1000:1000:dmizer,,,:/home/dmizer:/bin/bash
2) Add gid, uid, and nounix options to your fstab line like so:
Code:
//netbiosname/sharename /media/sharename cifs credentials=/root/.smbcredentials,iocharset=utf8,gid=1000,uid=1000,nounix,file_mode=0777,dir_mode=0777 0 0
KARMIC: Files owned by root / "The folder contents could not be displayed"
Note for KARMIC users encountering this error:
There is a bug affecting some users (particularly those with NAS devices like the Timecapsule) which gives the same symptoms as this problem. Bug report is here: https://bugs.launchpad.net/ubuntu/+s...ux/+bug/406466
Fix is simple, just add the "noserverino" option to the mount command like so:
Code:
//netbiosname/sharename /media/sharename cifs credentials=/root/.smbcredentials,iocharset=utf8,noserverino,gid=1000,uid=1000,nounix,file_mode=0777,dir_mode=0777 0 0
Thanks to Dareus for posting the fix for this problem.
---------####---------
Permissions are always dr-xr-xr-x (read only) no matter how the share is mounted. Please see this Microsoft support document: http://support.microsoft.com/kb/326549/
Thanks to HyugaRicdeau for discovering the fix for that troublesome problem.
---------####---------
No international characters in your share? You can also use this howto for normal samba shares (without utf8 encoding). If the share does not have utf8 encoding, the iocharset option is simply ignored.
---------####---------
Let me know if this helps!
==================================
version history:
2008-03-28 > included bug information regarding gedit.
2008-05-20 > added fix for "mount error 13" in Hardy.
2008-05-29 > minor edit in "Disclaimer"
2008-06-01 > added note about the lack of smbfs in Hardy
2008-06-05 > clarified the need for installing smbfs package
2008-06-11 > added link for firestarter configuration
2008-10-23 > included work-around for Open Office save errors
2008-10-23 > possible workaround for Gedit save errors. testers wanted.
2008-10-27 > added solution for escaping a space in directory name
2008-11-07 > added solutions for Vista problems. added solution for "owned by root" when username is the same on both server and client. changed "after word" title to "Troubleshooting"
2009-01-07 > updated bug workaround for gedit.
2009-02-26 > more verbose reasoning for installing smbfs. added a more current example of /etc/nsswitch.conf. other minor cosmetic changes.
2009-03-26 > included more specific information about fixing gedit bug workaround. moved gedit bug information to the troubleshooting section. Removed all 2007 version history.
2009-04-20 > included updated link for CIFS VFS error; re-organized the troubleshooting section; moved warning about discontinued smbfs to the disclaimers section.
2009-05-11 > included verbose fix for CIFS VFS error.
2009-05-20 > added Jaunty CIFS VFS error fix.
2009-06-04 > included additional Vista information.
2009-06-29 > added links to alternatives to CIFS.
2009-10-30 > included fix for KARMIC bug 406466
2011-01-28 > minor edit to include Lucid permission error verbiage from Nautilus. changed aptitude to apt-get since aptitude is no longer installed by default
2011-03-22 > added fix for CIFS VFS error.
==================================