MountWindowsSharesPermanently

Differences between revisions 24 and 25
Revision 24 as of 2007-07-26 14:25:00
Size: 6062
Editor: 200
Comment: A HOW-TO request on using libpam-mount to mount network shares permanently.
Revision 25 as of 2007-07-27 19:21:15
Size: 8304
Editor: 200
Comment: Added the option to use pam_mount
Deletions are marked like this. Additions are marked like this.
Line 126: Line 126:
= 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)

{{{
$ sudo gedit /etc/security/pam_mount.conf
}}}

Find the session:

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

And add this line at the end of this session (bellow the provided examples):

{{{
volume username smbfs 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
 * '''smbfs''' is the filesystem. It can be any of the filesystems listed on the session '''''# Commands to mount/unmount volumes''''', such as ''cifs''.
 * '''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.

Line 135: Line 200:

= Comments =

== Mount password protected network folders using libpam-mount ==

This a HOW-TO request. Would be interesting to have a session on how to mount password protected network folders without using a 'credentials' file, when the user and password on the the network folder is the same as the user and password used to login the Ubuntu machine.
I know that this is possible using libpam-mount, but I could not figure out the right config to pam.d files. Information on this issue is very scarce on Ubuntu and elsewhere.

This will help you mounting smbfs shares permanently. These can be shares on a Windows computer or on a Linux/UNIX server running Samba.

Is it true that smbfs is depricated? According to [http://joey.ubuntu-rocks.org/blog/2007/04/25/resolution-to-mounting-samba-shares-dont-use-smbfs/ a blog post by Joey Stanford] we need to use CIFS instead of smbfs!

It [https://bugzilla.samba.org/show_bug.cgi?id=1920#c0 appears to be true]. I just fought through [http://ubuntuforums.org/showthread.php?p=2911178 several strange problems] after following this guide, only to have everything solved by using CIFS instead.

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  smbfs  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

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  smbfs  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 for Read and write permission for everyone:

//servername/sharename  /media/mountname  smbfs  credentials=~/.smbcredentials,dmask=777,fmask=777  0  0

or for only read permission:

//servername/sharename  /media/mountname  smbfs  credentials=~/.smbcredentials  0  0

On some systems, smbfs automount does not work correctly. 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  smbfs  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  smbfs   uid=uros,credentials=~/.smbcredentials,dmask=777,fmask=777   0       0

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

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  smbfs  defaults,uid=1000,gid=1000,credentials=~/.smbpasswd,umask=777  0  0

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)

$ sudo gedit /etc/security/pam_mount.conf

Find the session:

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

And add this line at the end of this session (bellow the provided examples):

volume username smbfs 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

  • smbfs is the filesystem. It can be any of the filesystems listed on the session # Commands to mount/unmount volumes, such as cifs.

  • 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.

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 explaination for this, please leave a comment.

//servername/sharename  /media/mountname  smbfs  username=guest,password=,uid=1000,iocharset=utf8,codepage=unicode,unicode  0  0

MountWindowsSharesPermanently (last edited 2024-04-18 09:12:09 by sally-makin)