Difference between revisions of "Autofs"
Teratomata (talk | contribs) (Added a warning for /- option.) |
(→Alternatives to AutoFS) |
||
(9 intermediate revisions by 8 users not shown) | |||
Line 7: | Line 7: | ||
{{Article summary text|This document outlines the procedure needed to set up AutoFS, a package that provides support for automounting removable media or network shares when they are inserted or accessed.}} | {{Article summary text|This document outlines the procedure needed to set up AutoFS, a package that provides support for automounting removable media or network shares when they are inserted or accessed.}} | ||
{{Article summary end}} | {{Article summary end}} | ||
− | |||
− | |||
This document outlines the procedure needed to set up AutoFS, a package that provides support for automounting removable media or network shares when they are inserted or accessed. | This document outlines the procedure needed to set up AutoFS, a package that provides support for automounting removable media or network shares when they are inserted or accessed. | ||
Line 24: | Line 22: | ||
{{hc|/etc/autofs/auto.master|2= | {{hc|/etc/autofs/auto.master|2= | ||
− | / | + | #/media /etc/autofs/auto.media |
− | |||
}} | }} | ||
− | The first value on each line determines the base directory under which all the media in a template are mounted, the second value is which template to use. The default base path is {{ic|/ | + | The first value on each line determines the base directory under which all the media in a template are mounted, the second value is which template to use. The default base path is {{ic|/media}}, but you can change this to any other location you prefer. For instance: |
{{hc|/etc/autofs/auto.master|2= | {{hc|/etc/autofs/auto.master|2= | ||
− | /media/misc /etc/autofs/auto.misc --timeout=5 | + | /media/misc /etc/autofs/auto.misc --timeout=5 |
− | /media/net /etc/autofs/auto.net --timeout=60 | + | /media/net /etc/autofs/auto.net --timeout=60 |
}} | }} | ||
{{Note|Make sure there is an empty line on the end of template files (press {{Keypress|ENTER}} after last word). If there is no correct EOF line, the AutoFS daemon won't properly load.}} | {{Note|Make sure there is an empty line on the end of template files (press {{Keypress|ENTER}} after last word). If there is no correct EOF line, the AutoFS daemon won't properly load.}} | ||
− | The optional parameter {{ic|timeout}} sets the amount of seconds after which to unmount directories | + | The optional parameter {{ic|timeout}} sets the amount of seconds after which to unmount directories. |
The base directory will be created if it does not exist on your system. The base directory will be mounted on to load the dynamically loaded media, which means any content in the base directory will not be accessible while autofs is on. This procedure is however non-destructive, so if you accidentally automount into a live directory you can just change the location in {{ic|auto.master}} and restart AutoFS to regain the original contents. | The base directory will be created if it does not exist on your system. The base directory will be mounted on to load the dynamically loaded media, which means any content in the base directory will not be accessible while autofs is on. This procedure is however non-destructive, so if you accidentally automount into a live directory you can just change the location in {{ic|auto.master}} and restart AutoFS to regain the original contents. | ||
Line 61: | Line 58: | ||
* When you are done configuring your templates (see below), launch the AutoFS daemon as root: | * When you are done configuring your templates (see below), launch the AutoFS daemon as root: | ||
− | # | + | # systemctl start autofs |
− | To start the daemon on boot | + | To start the daemon on boot: |
+ | # systemctl enable autofs | ||
+ | |||
+ | And add the {{ic|autofs4}} [[Systemd#Kernel_modules|kernel module]] to {{ic|/etc/modules-load.d/}} | ||
+ | {{hc|/etc/modules-load.d/autofs.conf| | ||
+ | # Load autofs4 at boot | ||
+ | autofs4}} | ||
Devices are now automatically mounted when they are accessed, they will remain mounted as long as you access them. | Devices are now automatically mounted when they are accessed, they will remain mounted as long as you access them. | ||
Line 131: | Line 134: | ||
Next, add a new entry for FTP servers in {{ic|/etc/autofs/auto.master}}: | Next, add a new entry for FTP servers in {{ic|/etc/autofs/auto.master}}: | ||
− | /media/ftp /etc/autofs/auto.ftp --timeout=60 | + | /media/ftp /etc/autofs/auto.ftp --timeout=60 |
Create the file {{ic|/etc/autofs/auto.ftp}} and add a server using the {{ic|ftp://myuser:mypassword@host:port/path}} format: | Create the file {{ic|/etc/autofs/auto.ftp}} and add a server using the {{ic|ftp://myuser:mypassword@host:port/path}} format: | ||
Line 154: | Line 157: | ||
{{hc|/sbin/mount.curl|<nowiki> | {{hc|/sbin/mount.curl|<nowiki> | ||
#! /bin/sh | #! /bin/sh | ||
− | curlftpfs $1 $2 -o $ | + | curlftpfs $1 $2 -o $5,disable_eprt |
</nowiki>}} | </nowiki>}} | ||
Line 203: | Line 206: | ||
Create a new entry for SSH servers in {{ic|/etc/autofs/auto.master}}: | Create a new entry for SSH servers in {{ic|/etc/autofs/auto.master}}: | ||
− | /media/ssh /etc/autofs/auto.ssh --timeout=60 | + | /media/ssh /etc/autofs/auto.ssh --timeout=60 |
Create the file {{ic|/etc/autofs/auto.ssh}} and add an SSH server: | Create the file {{ic|/etc/autofs/auto.ssh}} and add an SSH server: | ||
− | {{hc|/ | + | {{hc|/etc/autofs/auto.ssh|2= |
servername -fstype=fuse,rw,allow_other,IdentityFile=/home/username/.ssh/id_dsa :sshfs\#username@host\:/ | servername -fstype=fuse,rw,allow_other,IdentityFile=/home/username/.ssh/id_dsa :sshfs\#username@host\:/ | ||
}} | }} | ||
After a restart your SSH server should be accessible through {{ic|/media/ssh/servername}}. | After a restart your SSH server should be accessible through {{ic|/media/ssh/servername}}. | ||
+ | |||
+ | == MTP == | ||
+ | Media Transfer Protocol ([[MTP]]) is used in some Android devices. | ||
+ | |||
+ | Install the {{Pkg|mtpfs}} package from the Community repository: | ||
+ | |||
+ | # pacman -S mtpfs | ||
+ | |||
+ | Create a new entry for MTP Device in {{ic|/etc/autofs/auto.misc}}: | ||
+ | android -fstype=fuse,allow_other,umask=000 :mtpfs | ||
== Troubleshooting and tweaks == | == Troubleshooting and tweaks == | ||
Line 256: | Line 269: | ||
==See also== | ==See also== | ||
+ | * AutoFS configuration cookbook: http://www.autofs.org/ | ||
+ | * An Ubuntu-based walk though of AutoFS with some useful info: http://blogging.dragon.org.uk/index.php/howtos/howto-setup-and-configure-autofs | ||
* FTP and SFTP usage with AutoFS is based on this Gentoo Wiki article: http://en.gentoo-wiki.com/wiki/Mounting_SFTP_and_FTP_shares | * FTP and SFTP usage with AutoFS is based on this Gentoo Wiki article: http://en.gentoo-wiki.com/wiki/Mounting_SFTP_and_FTP_shares | ||
* More information on SSH can be found on the [[SSH]] and [[Using_SSH_Keys|Using SSH Keys]] pages of this wiki. | * More information on SSH can be found on the [[SSH]] and [[Using_SSH_Keys|Using SSH Keys]] pages of this wiki. | ||
Line 261: | Line 276: | ||
== Alternatives to AutoFS == | == Alternatives to AutoFS == | ||
− | *[[Thunar#Thunar_Volume_Manager|Thunar Volume Manager]] is an automount system for users of the [[Thunar]] file manager. | + | * [[systemd]] can automount filesystems upon demand; see [[Systemd#Automount|here]] for the description and the article on [[Sshfs#On_demand for an example|sshfs]] for an example. |
+ | * [[Thunar#Thunar_Volume_Manager|Thunar Volume Manager]] is an automount system for users of the [[Thunar]] file manager. | ||
* Pcmanfm-fuse is a lightweight file manager with built-in support for accessing remote shares: https://aur.archlinux.org/packages.php?ID=22992 | * Pcmanfm-fuse is a lightweight file manager with built-in support for accessing remote shares: https://aur.archlinux.org/packages.php?ID=22992 | ||
* [[udiskie]] is a minimalistic automatic disk mounting service using udisks | * [[udiskie]] is a minimalistic automatic disk mounting service using udisks |
Revision as of 14:51, 14 March 2013
Template:Article summary start Template:Article summary text Template:Article summary end This document outlines the procedure needed to set up AutoFS, a package that provides support for automounting removable media or network shares when they are inserted or accessed.
Contents
Installation
- Install the autofs package:
# pacman -S autofs
- Load the
autofs4
module as root:
# modprobe autofs4
Configuration
AutoFS uses template files for configuration which are located in /etc/autofs
The main template is called auto.master
, which can point to one or more other templates for specific media types.
- Open the file
/etc/autofs/auto.master
with your favorite editor, you will see something similar to this:
/etc/autofs/auto.master
#/media /etc/autofs/auto.media
The first value on each line determines the base directory under which all the media in a template are mounted, the second value is which template to use. The default base path is /media
, but you can change this to any other location you prefer. For instance:
/etc/autofs/auto.master
/media/misc /etc/autofs/auto.misc --timeout=5 /media/net /etc/autofs/auto.net --timeout=60
The optional parameter timeout
sets the amount of seconds after which to unmount directories.
The base directory will be created if it does not exist on your system. The base directory will be mounted on to load the dynamically loaded media, which means any content in the base directory will not be accessible while autofs is on. This procedure is however non-destructive, so if you accidentally automount into a live directory you can just change the location in auto.master
and restart AutoFS to regain the original contents.
If you still want to automount to a target non-empty directory and want to have the original files available even after the dynamically loaded directories are mounted, you can use autofs to mount them to another directory (e.g. /var/autofs/net) and create soft links.
# ln -s /var/autofs/net/share_name /media/share_name
Alternatively, you can have autofs mount your media to a specific folder, rather than inside a common folder.
/etc/autofs/auto.master
/- /etc/autofs/auto.template
/etc/autofs/auto.template
/path/to/folder -options :/device/path /home/user/usbstick -fstype=auto,async,nodev,nosuid,umask=000 :/dev/sdb1
- Open the file
/etc/nsswitch.conf
and add an entry for automount:
automount: files
- When you are done configuring your templates (see below), launch the AutoFS daemon as root:
# systemctl start autofs
To start the daemon on boot:
# systemctl enable autofs
And add the autofs4
kernel module to /etc/modules-load.d/
/etc/modules-load.d/autofs.conf
# Load autofs4 at boot autofs4
Devices are now automatically mounted when they are accessed, they will remain mounted as long as you access them.
Removable media
- Open
/etc/autofs/auto.misc
to add, remove or edit miscellaneous devices. For instance:
/etc/autofs/auto.misc
#kernel -ro ftp.kernel.org:/pub/linux #boot -fstype=ext2 :/dev/hda1 usbstick -fstype=auto,async,nodev,nosuid,umask=000 :/dev/sdb1 cdrom -fstype=iso9660,ro :/dev/cdrom #floppy -fstype=auto :/dev/fd0
If you have a CD/DVD combo-drive you can change the cdrom
line with -fstype=auto
to have the media type autodetected.
NFS Network mounts
AutoFS provides a new way of automatically discovering and mounting NFS-shares on remote servers (the AutoFS network template in /etc/autofs/auto.net
has been removed in autofs5). To enable automagic discovery and mounting of network shares from all accessible servers without any further configuration, you'll need to add the following to the /etc/autofs/auto.master
file:
/net -hosts --timeout=60
Each host name needs to be resolveable, e.g. the name an IP address in /etc/hosts
or via DNS and please make sure you have at least nfs-common installed and working.
For instance, if you have a remote server fileserver with an NFS share named /home/share, you can just access the share by typing:
# cd /net/fileserver/home/share
/etc/conf.d/autofs
in order to start the AutoFS daemon.The -hosts
option uses a similar mechanism as the showmount
command to detect remote shares. You can see the exported shares by typing:
# showmount <servername> -e
Replacing <servername> with the name of your own server.
Samba
The Arch package does not provide any Samba or CIFS templates/scripts (23.07.2009), but the following should work for single shares:
add the following to /etc/autofs/auto.master
/media/[my_server] /etc/autofs/auto.[my_server]
and then create a file /etc/autofs/auto.[my_server]
[any_name] -fstype=cifs,[other_options] ://[remote_server]/[remote_share_name]
You can specify a user name and password to use with the share in the other_options section
[any_name] -fstype=cifs,username=[username],password=[password],[other_options] ://[remote_server]/[remote_share_name]
FTP and SSH (with Fuse)
Remote FTP and SSH servers can be accessed seamlessly with AutoFS using FUSE, a virtual file system layer.
Remote FTP
First, install the curlftpfs package from the Community repository:
# pacman -S curlftpfs
Load the fuse
module:
# modprobe fuse
Add fuse to the MODULES
array in /etc/rc.conf
to load it on each system boot.
Next, add a new entry for FTP servers in /etc/autofs/auto.master
:
/media/ftp /etc/autofs/auto.ftp --timeout=60
Create the file /etc/autofs/auto.ftp
and add a server using the ftp://myuser:mypassword@host:port/path
format:
servername -fstype=curl,rw,allow_other,nodev,nonempty,noatime :ftp\://myuser\:mypassword\@remoteserver
df
(only for mounted servers) or view the file /etc/autofs/auto.ftp
.If you want slightly more security you can create the file ~root/.netrc
and add the passwords there.
Passwords are still plain text, but you can have mode 600, and df
command will not show them (mounted or not).
This method is also less sensitive to special characters (that else must be escaped) in the passwords. The format is:
machine remoteserver login myuser password mypassword
The line in /etc/autofs/auto.ftp
looks like this without user and password:
servername -fstype=curl,allow_other :ftp\://remoteserver
Create the file /sbin/mount.curl
with this code:
/sbin/mount.curl
#! /bin/sh curlftpfs $1 $2 -o $5,disable_eprt
Create the file /sbin/umount.curl
with this code:
/sbin/umount.curl
#! /bin/sh fusermount -u $1
Set the permissions for both files:
# chmod 755 /sbin/mount.curl # chmod 755 /sbin/umount.curl
After a restart your new FTP server should be accessible through /media/ftp/servername
.
Remote SSH
These are basic instructions to access a remote filesystem over SSH with AutoFS.
Install the sshfs package from the Extra repository:
# pacman -S sshfs
Load the fuse
module:
# modprobe fuse
Add fuse to the MODULES
array in /etc/rc.conf
to load it on each system boot:
Install OpenSSH:
# pacman -S openssh
Generate an SSH keypair:
# ssh-keygen -t dsa
When the generator ask for a passphrase, just press Template:Keypress. Using SSH keys without a passphrase is less secure, yet running AutoFS together with passphrases poses some additional difficulties which are not (yet) covered in this article.
Next, copy the public key to the remote SSH server:
# ssh-copy-id -i /home/username/.ssh/id_dsa.pub username@remotehost
See that you can login to the remote server without entering a password:
# sudo ssh -i /home/username/.ssh/id_dsa username@remotehost
known_hosts
. Alternatively, hosts can be added to /etc/ssh/ssh_known_hosts
.Create a new entry for SSH servers in /etc/autofs/auto.master
:
/media/ssh /etc/autofs/auto.ssh --timeout=60
Create the file /etc/autofs/auto.ssh
and add an SSH server:
/etc/autofs/auto.ssh
servername -fstype=fuse,rw,allow_other,IdentityFile=/home/username/.ssh/id_dsa :sshfs\#username@host\:/
After a restart your SSH server should be accessible through /media/ssh/servername
.
MTP
Media Transfer Protocol (MTP) is used in some Android devices.
Install the mtpfs package from the Community repository:
# pacman -S mtpfs
Create a new entry for MTP Device in /etc/autofs/auto.misc
:
android -fstype=fuse,allow_other,umask=000 :mtpfs
Troubleshooting and tweaks
This section contains a few solutions for common issues with AutoFS.
Using NIS
Version 5.0.5 of AutoFS has more advanced support for NIS. To use AutoFS together with NIS, add yp:
in front of the template names in /etc/autofs/auto.master
:
/home yp:auto_home --timeout=60 /sbtn yp:auto_sbtn --timeout=60 +auto.master
On earlier versions of NIS (before 5.0.4), you should add nis
to /etc/nsswitch.conf
:
automount: files nis
Optional parameters
You can set parameters like timeout
systemwide for all AutoFS media in /etc/conf.d/autofs
:
- Open the
/etc/conf.d/autofs
file and edit thedaemonoptions
line:
daemonoptions='--timeout=5'
- To enable logging (default is no logging at all), add
--verbose
to thedaemonoptions
line in/etc/conf.d/autofs
e.g.:
daemonoptions='--verbose --timeout=5'
After restarting the autofs
daemon, verbose output is visible in /var/log/daemon.log
.
Identify multiple devices
If you use multiple USB drives/sticks and want to easily tell them apart, you can use AutoFS to set up the mount points and Udev to create distinct names for your USB drives. See Map Custom Device Entries with udev for instructions on setting up Udev rules.
AutoFS permissions
If AutoFS isn't working for you, make sure that the permissions of the templates files are correct, otherwise AutoFS will not start. This may happen if you backed up your configuration files in a manner which did not preserve file modes. Here are what the modes should be on the configuration files:
- 0644 - /etc/autofs/auto.master
- 0644 - /etc/autofs/auto.media
- 0644 - /etc/autofs/auto.misc
- 0644 - /etc/conf.d/autofs
In general, scripts (like previous auto.net
) should have executable (chown a+x filename
) bits set and lists of mounts shouldn't.
If you are getting errors in /var/log/daemon.log
similar to this, you have a permissions problem:
May 7 19:44:16 peterix automount[15218]: lookup(program): lookup for petr failed May 7 19:44:16 peterix automount[15218]: failed to mount /media/cifs/petr
See also
- AutoFS configuration cookbook: http://www.autofs.org/
- An Ubuntu-based walk though of AutoFS with some useful info: http://blogging.dragon.org.uk/index.php/howtos/howto-setup-and-configure-autofs
- FTP and SFTP usage with AutoFS is based on this Gentoo Wiki article: http://en.gentoo-wiki.com/wiki/Mounting_SFTP_and_FTP_shares
- More information on SSH can be found on the SSH and Using SSH Keys pages of this wiki.
- Information on setting up NFS can be found here: NFS
Alternatives to AutoFS
- systemd can automount filesystems upon demand; see here for the description and the article on sshfs for an example.
- Thunar Volume Manager is an automount system for users of the Thunar file manager.
- Pcmanfm-fuse is a lightweight file manager with built-in support for accessing remote shares: https://aur.archlinux.org/packages.php?ID=22992
- udiskie is a minimalistic automatic disk mounting service using udisks