You are on page 1of 8

• Partners

• Support
• Community
• Ubuntu.com

Ubuntu Wiki
Titles Text
Search: Search
• Immutable Page
• Info
• Attachments
More Actions:

• Ubuntu Wiki
• Login
• Help

MountWindowsSharesPermanently

Contents

1. Samba File System installation


2. Mounting unprotected (guest) network folders
3. Mount password protected network folders
1. Ubuntu 10.10 Maverick Meercat
2. Other Approaches
4. Special permissions
5. Fixing a CIFS bug with network manager
6. Mounting a Share with Read/Write rights with a regular User (Without Prompt)
7. Mount password protected network folders without credentials file using libpam_mount
1. Setup on Ubuntu 9.04
8. Troubleshooting
1. Unprotected network folder won't automount
2. CIFS Options Deprecated
3. Use of tilde in pathnames such as "credentials=~/.smbcredentials"

This will help you mounting smbfs shares permanently. These can be shares on a Windows
computer or on a Linux/UNIX server running Samba.
15 oct. 2009: The libpam_mount section is no longer up to date with current releases. Can anyone
please update this section?
Is it true that smbfs is depricated? According to a blog post by Joey Stanford we need to use CIFS
instead of smbfs!
It appears to be true. I just fought through several strange problems after following this guide, only
to have everything solved by using CIFS instead.
I can confirm the above as well. I have changed "smbfs" to "cifs" where appropriate in this guide.

Samba File System installation


sudo apt-get install smbfs

Mounting unprotected (guest) network folders


Assumed that:
• Network connections have been configured properly.
• The Windows computer name is servername, this can be either an IP address or an assigned
name.
• The name of the share is sharename.
• You want to mount the share in a folder mountname.
First, let's create the mount folder. You will need a separate folder for each mount.
sudo mkdir /media/mountname

Then edit your /etc/fstab file (you need root privileges) to add this line:
//servername/sharename /media/mountname cifs
guest,uid=1000,iocharset=utf8,codepage=unicode,unicode 0 0

Where
• guest indicates you don't need a password to access the share,
• uid=1000 makes the Linux-user with specified uid or username owner of the mounted share,
thereby allowing that user to rename files,
• the combination iocharset=utf8,codepage=unicode,unicode allows access to files with
names in non-English languages. This doesn't work with shares of devices like the Buffalo
Tera Station, or Windows machines that export their shares using ISO8895-15. With these
the codepage argument has to be codepage=cp850, otherwise characters like the German
'Umlaute' are displayed as garbage.
After you added the entry to /etc/fstab type:
sudo mount -a

This will (re)mount all entries in /etc/fstab

Mount password protected network folders


Ubuntu 10.10 Maverick Meercat
Using the text editor of your choice, create a file with your remote servers logon credential. Replace
the <LOCALUSERNAME> with the local username. The following will open up the GEdit
application:
sudo gedit /home/<LOCALUSERNAME>/.smbcredentials

Place your username and password into the file. Replace the <REMOTEUSERNAME> and
<REMOTEPASSWORD> with the appropriate information:
username=<REMOTEUSERNAME>
password=<REMOTEPASSWORD>

Save and exit.


Change the permissions on the file to prevent unwanted eyes from viewing your remote share's
logon information:
sudo chmod 600 /home/<LOCALUSERNAME>/.smbcredentials

Open the file system table file for editing. The following will use GEdit to edit it:
sudo gedit /etc/fstab

Add the remote share to the table on a line by itself. The following line when replaced with
appropriate data will mount the share for reading and writing:
//<SERVERNAME>/<REMOTEPATH> /<LOCALMOUNTPOINT>/<LOCALPATH> cifs
credentials=/home/<LOCALUSERNAME>/.smbcredentials,iocharset=utf8,file_mode=0777,
dir_mode=0777 0 0

Save and exit.


Finally, test the fstab entry by issuing:
sudo mount -a

If no errors are output, it is likely safe to test with a reboot.


Your remote share should now mount automatically every boot.

Other Approaches
Assume the previous, plus:
• Share username on Windows computer is myusername.
• Share password on Windows computer is mypassword.
You could add the following to /etc/fstab:
//servername/sharename /media/mountname cifs
username=myusername,password=mypassword 0 0

However, the /etc/fstab is readable by everyone so it obviously wouldn't be a good idea to have your
Windows password in it. The way to get around this is by using what is known as a credentials file.
This is a file that contains just the username and password.
sudo gedit ~/.smbcredentials

Add the following lines:


username=myusername
password=mypassword

and save it.


Modify the permissions on the file so only you have permission to read and write to it. The only
thing in the file is your Windows username and password.
sudo chmod 600 ~/.smbcredentials

Now add the following line in fstab for Read and write permission for everyone:
//servername/sharename /media/mountname cifs
credentials=~/.smbcredentials,dmask=777,fmask=777 0 0

(If the tilde "~" doesn't work in fstab, see the note below under Troubleshooting.)
or for only read permission:
//servername/sharename /media/mountname cifs credentials=~/.smbcredentials 0
0

instead of cifs one can also use smbfs.


On some systems, smbfs automount does not work correctly (is this true for cifs as well?). As a
workaround, you can add the "noauto" parameter to your smbfs fstab entry and then have the share
mounted at login
/etc/fstab:
//servername/sharename /media/mountname cifs noauto,credentials=~/.smbpasswd
0 0

then edit your /etc/rc.local to mount the smbfs when you log in (make sure the permissions on
your /etc/rc.local will allow users to execute it:
mount /media/mountname
exit 0

Special permissions
If you need special permission (like chmod etc.) you need to add uid or gid flag. You can set either
UID or username
//servername/sharename /media/mountname cifs
uid=uros,credentials=~/.smbcredentials,dmask=777,fmask=777 0 0

In that case /media/sharename will be owned by user uros.


(If the tilde "~" doesn't work in fstab, see the note below under Troubleshooting.)

Fixing a CIFS bug with network manager


If you use network manager, and are getting really slow shutdowns. It's probably because the
network manager shuts down before unmounting the network shares. That will cause CIFS to hang,
and wait for 60 seconds or so. Here's what you do to fix it:
sudo ln -s /etc/init.d/umountnfs.sh /etc/rc0.d/K14umountnfs.sh
sudo ln -s /etc/init.d/umountnfs.sh /etc/rc6.d/K14umountnfs.sh
Mounting a Share with Read/Write rights with
a regular User (Without Prompt)
Open a Terminal and type:
id

This should output something similar to:


uid=1000(craize) gid=1000(craize) groups=...

So for my user (craize) the User ID is 1000 and the Group ID is 1000 too.
Add the following to /etc/fstab:
//servername/sharename /media/mountname cifs
defaults,uid=1000,gid=1000,credentials=~/.smbpasswd,umask=777 0 0

(If the tilde "~" doesn't work in fstab, see the note below under Troubleshooting.)

Mount password protected network folders


without credentials file using libpam_mount
Assumed that:
• Your username and password are the same on the Ubuntu machine and on the network
drive.
• Network connections have been configured properly.
• The Windows computer name is servername, this can be either an IP address or an assigned
name.
• The name of the share is sharename.
• You want to mount the share in a folder mountname inside a user's home folder.
First, let's create the mount folder. You will need a separate folder for each mount.
$ sudo mkdir /home/username/mountname

Then, install the required package.


$ sudo apt-get install libpam-mount

Then edit the file /etc/security/pam_mount.conf using gedit or your preferred text editor (in
Kubuntu, the default is Kate). Since Ubuntu Hardy this file is named
/etc/security/pam_mount.conf.xml.
$ sudo gedit /etc/security/pam_mount.conf

Find the session:


# Volumes that will be mounted when user triggers the pam_mount module

NOTE: In 9.04 this entry does not exist in file /etc/security/pam_mount.conf.xml. Now what? Please
see my experimental setup (work in progress) below.
And add this line at the end of this session (bellow the provided examples):
volume username cifs servername sharename /home/&/mountname
uid=&,iocharset=utf8,fmask=0770,dmask=0770 - -

Where
• username is the user that, when logged, pam_mount will mount the volume. It is possible to
use * to all users or @groupname to all users that have groupname as their primary group
• cifs is the filesystem. It can be any of the filesystems listed on the session # Commands to
mount/unmount volumes, such as cifs (preferred) or "smbfs" (deprecated).
• servername can be the ip address or the assigned name (don't use // before them).
• sharename is the name of the share on the network folder. If the name of the share is your
username (like a home folder) you can use the & character.
• /home/&/mountname means /home/username/mountname. The & character means the
username in this file.
• uid=& makes the Linux-user with specified uid or username owner of the mounted share,
thereby allowing that user to rename files. You can specify a username instead of using the
& character
• fmask=0770,dmask=0770 will set rwx permissions on files and directories for the user and
the group specified with uid and gid.
Back up the pam gdm file:
$ sudo cp /etc/pam.d/gdm /etc/pam.d/gdm_backup

Then configure PAM to mount the external drive every time you login using gdm (change to kdm or
xdm if you use Kubuntu or Xubuntu).
$ echo "@include common-pammount" | sudo tee -a /etc/pam.d/gdm

Next time you reboot and login, the volume should be mounted without the need to enter your login
password twice or to write it down on a file.

Setup on Ubuntu 9.04


WORK IN PROGRESS - THE FOLLOWING HAS NOT BEEN TESTED YET
As mentioned above, the required section doesn't exist in /etc/security/pam_mount.conf.xml. So
with the help of the following resource(s), I'm working towards a solution:
http://blogs.techrepublic.com.com/opensource/?p=307
First, we're moving the user specific config bits to a file which users can actually edit themselves.
$ sudo gedit /etc/security/pam_mount.conf.xml

Remove the comments (<!-- and -->) from the section called <luserconf
name=".pam_mount.conf.xml" />. Save the file when done. With this in place, users can create their
own ~/.pam_mount.conf.xml.
Next we'll create the ~/.pam_mount.conf.xml file for our example user 'joe'.
$ touch /home/joe/.pam_mount.conf.xml
Edit your freshly created config file and add the following:
<?xml version="1.0" encoding="utf-8" ?>

<pam_mount>

<volume user="username" fstype="cifs" server="servername" path="sharename"


mountpoint="~/mountname" />

</pam_mount>

(If the tilde "~" doesn't work, see the note below under Troubleshooting.)
Still to 'translate' into XML format:
uid=&,iocharset=utf8,fmask=0770,dmask=0770 - -

[TBC]
I have tested it on 9.10.
Just added to /etc/security/pam_mount.conf.xml the following:
<volume options="uid=%(USER),gid=100,dmask=0700" user="*" mountpoint="/home/%
(USER)/mountname" path="sharename" server="servername" fstype="cifs" />

Troubleshooting
Unprotected network folder won't automount
I've had a situation where an unprotected network folder wouldn't automount during bootup, but
after manually entering "sudo mount -a" was mounted correctly. I solved this by replacing the
"guest" option by "username=guest,password=". If anyone has an explanation for this, please leave
a comment.
//servername/sharename /media/mountname smbfs
username=guest,password=,uid=1000,iocharset=utf8,codepage=unicode,unicode 0 0

CIFS Options Deprecated


20 Feb 2008 TW
Using dmask or fmask in the fstab file produces the following warnings: WARNING: CIFS mount
option 'dmask' is deprecated. Use 'dir_mode' instead. WARNING: CIFS mount option 'fmask' is
deprecated. Use 'file_mode' instead.
Instead use this format: file_mode=0777,dir_mode=0777

Use of tilde in pathnames such as


"credentials=~/.smbcredentials"
20 Feb 2008 TW
Curiously, using credentials=~/.smbcredentials in fstab didn't work. I had to use the full path, i.e.
/home/username/.smbcredentials
(This is likely because the tilde "~" is only a shell short-hand alias for "$HOME"; it isn't something
recognized system-wide by all programs, especially not in a system file table where the concept of
"HOME" doesn't really exist. -Ian!)

CategoryDocumentation

MountWindowsSharesPermanently (last edited 2010-12-10 07:37:59 by Troy James Sobotka)

The material on this wiki is available under a free license, see Copyright / License for details.

You might also like