blob: 845f310677d1558db2fb56b3620afb3b8a95f7eb [file] [log] [blame]
#!/bin/csh
#
# /sbin/mount.smb
# by Greg Galperin, MAR99 <grg@ai.mit.edu>
# ver 1.1 MAR99 GRG docs update: must escape special chars like $
# ver 1.0 MAR99 GRG original version
#
# Intent is to allow calls to mount with -t smb to work properly
# (either manually or from an automounter).
#
# bugs:
# -- possible security hole, as this is a shell script called as root...
# -- arguments other than rw and ro which mount might supply are not handled
#
###########################################################################
#
# To use this from autofs:
#
# have an entry of the form
# key -fstype=smb,-Uadministrator,-Ppassword ://host/share
# in the appropriate /etc/auto.mountpoint file.
#
# This makes access to /mountpoint/key/ access smb //host/share/
# as administrator (or another user, if you specify such) with the given
# password. You may have to supply a -c <unqualified-localhostname>.
# Special characters need to be 'escaped' with a backslash ('\') -- for
# instance, if you want to use the default share names with a "$" at the
# end (e.g., //host/c$), you must enter ://host/c\$
#
# Note that mount/autofs is smart enough to figure out how to unmount
# this without any extra work on our part!
#
###########################################################################
#
# I get called in the form: /sbin/mount.smb //host/shr /mnt/tmp -o rw,arg1,arg2
#
# It looks like mount tacks on either "rw" or "ro" as the first argument,
# so I'm going to count on having exactly 5 arguments.
#
# This has been developed and tested with mount-2.7
#
###########################################################################
# test for correct # args
if ( $# != 4 ) then
echo $0 does not know how to handle $# arguments: $*
exit -1
endif
# test for args in the form I expect
if ( "$3" != "-o" ) then
echo $0 does not know how to handle the 3rd argument not \"-o\" : $3
exit -1
endif
setenv COMMAND "/usr/sbin/smbmount $1 $2"
foreach arg (`echo $4 | /usr/bin/tr ',' ' '`)
if ( "$arg" == "rw" ) then
setenv COMMAND "$COMMAND -f777 -d777"
else if ( "$arg" == "ro" ) then
setenv COMMAND "$COMMAND -f555 -d555"
else
setenv COMMAND "$COMMAND $arg"
endif
end
$COMMAND