Mount CIFS share with autofs
Solution 1
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.
Solution 2
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
Solution 3
I just did this on a CentOS 5.6 box and I think part of your problem might be with your auto.test file. In it's current form you'll be creating a /test mount point and then a single moung of test under it, i.e. /test/test. Also you might want to add the --ghost switch to your auto.master line like so:
/test /etc/auto.test --timeout=60 --ghost
The --ghost switch creates stubs of mount points even when a given share isn't being actively mounted.
Take a look at this CentOS wiki Tips and Tricks page on ways to mount SMB/CIFS shares.
Mounting tips
- Windows Share = \mysmb\share1
- Unix Dir. = /test/dir1
idea #1
# /etc/auto.master
/test /etc/auto.test --timeout=600 --ghost
# /etc/auto.test
dir1 -fstype=cifs,rw,noperm,netbiosname=${HOST},credentials=/etc/creds.txt ://mysmb/test/dir1
dir2 -fstype=cifs,rw,noperm,netbiosname=${HOST},credentials=/etc/creds.txt ://mysmb/test/dir2
idea #2
# /etc/auto.master
/test /etc/auto.test --timeout=600 --ghost
# /etc/auto.test
* -fstype=cifs,rw,noperm,netbiosname=${HOST},credentials=/etc/creds.txt ://mysmb/test/&
Related videos on Youtube
reowil
I love technology, and finding ways to help others utilize technology to it's fullest potential!
Updated on September 17, 2022Comments
-
reowil over 1 year
I have a system running RHEL 5.5, and I am trying to mount a Windows share on a server using
autofs
. (Due to the network not being ready upon startup, I do not want to utilizefstab
.) I am able to mount the shares manually, butautofs
is just not mounting them.Here are the files I am working with:
At the end of
/etc/auto.master
, I have:## Mount this test share: /test /etc/auto.test --timeout=60
In
/etc/auto.test
, I have:test -fstype=cifs,username=testuser,domain=domain.com,password=password ://server/test
I then restart the
autofs
service.However, this does not work.
ls
-ing the directory does not return any results. I have followed all these guides on the web, and I either don't understand them, or they.just.don't.work.Thank You
-
c1tadel1 over 13 yearsAre you getting anything in the logs?
-
reowil over 13 yearsWhere are the logs? I have tried
/var/log/messages
to no avail, and there is no syslog file. -
c1tadel1 over 13 yearsYou are looking in the right place. Try "echo 1 >/proc/fs/cifs/cifsFYI" to increase the debug messages a bit and give dmesg a try.
-
reowil over 13 yearsI don't have the
/proc/fs/cifs/
directory, so I cannot run the command. I also can'tmkdir cifs
, even as root. The service is running, but I seriously don't know why it's just not working. I may have to contact RH support.
-
-
reowil about 13 yearsThank you. I have completely forgotten about this issue. I actually contacted Red hat support, and the options you mention in the opts you mention do work. The key was to place the info in
auto.misc
for whatever reason. It's funny, since we don't even need to do this anymore. -
reowil about 13 yearsThank you for your reply. Please see my comment for lsd.
-
Carlos Rendon about 11 yearsThis is useful, but unfortunately I don't get to customize the mount points, which was the original goal of the question (and what I came here to find out)
-
Carlos Rendon about 11 yearsIs there a better way to provide a root mount using autofs? If so please update your answer or leave a comment and I can update mine.
-
lsd almost 11 yearsHave the mounts go to /net, say, and have symbolic links from /test to /net/server/test (or whatever). Now whenever you cd to /net and ls or whatever, it will mount.
-
lsd about 9 yearsAs an interesting development, using this with an EMC device (not sure module) required me to remove the -N from the smbclient line. Encountered this problem today.
-
lsd about 9 yearsAlso, the credentials file must not have spaces between the equals signs. That caused a bunch of errors until I found that out. Two different pieces of documentation said different things.
-
Leo about 6 yearsCorrected a few format and spelling errors. You should probably point out how and where to put that parameter using the configuration from the question as an example too.
-
Ray Foss over 4 yearsMy god... --ghost should be default. I'm on fedora/rhel/centos it reads the map, but when I go inside the folder, nothing is there... I then had the crazy idea of doing
cd "sharename"
and it magically entered the folder whichls
says does not exist... arrgh