Mount CIFS share with autofs
There should be an /etc/auto.smb already, use that, and add the following line to /etc/auto.master:
/cifs /etc/auto.smb --timeout=60
Now all cifs shares will show up under /cifs:
ls /cifs/<server>
will show all the shares available. You might want to put some options in /etc/auto.smb to mount with specific modes. I have a auto.smb that I found out there somewhere and modified to do exactly that:
#!/bin/bash
# $Id: auto.smb,v 1.3 2005/04/05 13:02:09 raven Exp $
# This file must be executable to work! chmod 755!
key="$1"
credfile="/etc/auto.smb.$key"
opts="-fstype=cifs,file_mode=0644,dir_mode=0755,uid=eng,gid=eng"
smbclientopts=""
for P in /bin /sbin /usr/bin /usr/sbin
do
if [ -x $P/smbclient ]
then
SMBCLIENT=$P/smbclient
break
fi
done
[ -x $SMBCLIENT ] || exit 1
if [ -e "$credfile" ]
then
opts=$opts",credentials=$credfile"
smbclientopts="-A "$credfile
else
smbclientopts="-N"
fi
$SMBCLIENT $smbclientopts -gNL $key 2>/dev/null| awk -v key="$key" -v opts="$opts" -F'|' -- '
BEGIN { ORS=""; first=1 }
/Disk/ {
if (first)
print opts; first=0
dir = $2
loc = $2
# Enclose mount dir and location in quotes
# Double quote "$" in location as it is special
gsub(/\$$/, "\\$", loc);
print " \\\n\t \"/" dir "\"", "\"://" key "/" loc "\""
}
END { if (!first) print "\n"; else exit 1 }
'
This will do what you want. I've used it myself.
Since I just spent my entire morning debugging this same issue. Let me explain what happened above.
/etc/auto.master
## Mount this test share:
/test /etc/auto.test --timeout=60
This means I want to mount something at /test
and for the details read /etc/auto.test
/etc/auto.test
test -fstype=cifs,username=testuser,domain=domain.com,password=password ://server/test
This means as a sub-folder of what was specified in auto.master please mount test with the information following. (i.e. the mount will be /test/test
as slm correctly pointed out).
This means that ls /test/test
will display the contents of //server/test
To accomplish the original goal of /test -> //server/test you would want the following:
/etc/auto.master
## Mount this test share:
/ /etc/auto.test --timeout=60
A couple other notes. I found the following mount options useful.
rw
- mount it read/write
noserverino
- removes error message about inode number support
credentials=[credential file]
- this allows you to create a separate file with the credentials in them. It has the following format:
username=[windows username, domain can be included as well]
password=[windows password]
EDIT -- 2013-06-17 13:28PM GMT-8
slm in the comments has pointed out that mounting to the root of the file system could be dangerous. lsd in the comments suggests a workaround, which is to creating a symlink from the root of the filesystem to a different place where you would mount that would not overlap with something common. For example, if you wanted to have /test be a mount, then you would actually mount stuff to /net/the_test_mount and then create a symlink /test that points to /net/the_test_mount