[Samba] Dynamic Home Shares
Brian Gregorcy
brian.gregorcy at utah.edu
Wed Apr 8 18:27:25 GMT 2009
Here is the script that we use to create the home directory when the user first logs in.
> humboldt samba # cat mkhomedir.sh
> #!/bin/bash
> # Creates home directories when account is created
> # gregorcy
> # Created: 03/21/2008
> # Last Mod: 06/10/2008 - Added the if for is fac and cleanup
> ###################################################################
> #
> # Variables
> hostname=`hostname`
> blessed="The permissions have been fixed "
> subject1="does not have valid email in our LDAP"
> subject2="A user is missing their homedir on $hostname the home dir has been created but the old homedirs should be checked for data"
> emailto="support at che.utah.edu"
> emailmes="/tmp/emailmessage.txt"
> ldapmail=`ldapsearch -D "cn=***,ou=***,dc=*****,dc=utah,dc=edu" -b "ou=***,dc=***,dc=utah,dc=edu" -w ***** -x -LLL "(sAMAccountName=$1)" mail | grep mail | sed 's/......//'`
> ldapfac=`ldapsearch -D "cn=***,ou=***,dc=****,dc=utah,dc=edu" -b "ou=***,dc=***,dc=utah,dc=edu" -w ********* -x -LLL "(sAMAccountName=$1)" memberof >> /tmp/testfac`
>
>
>
>
> grep -q Faculty /tmp/testfac
> isfac=$?
> echo $isfac
>
> # functionville
> function createbless () {
> touch /home/CHEMENG/$1/.blessed
> echo "$blessed" >> /home/CHEMENG/$1/.blessed
> #chown root:root /home/CHEMENG/$1/.blessed
> chmod 700 /home/CHEMENG/$1/.blessed
> }
>
>
>
> # scriptage
> if [ ! -e /home/CHEMENG/$1 ]; then
> echo "The home dir for "$1 "was not found probably was not migrated "> $emailmes
> mkdir /home/CHEMENG/$1
> echo "Created the home directory but should check trashheap or CHE-2551-30 for old stuff" >> $emailmes
> mail -s "$subject2" support@***.utah.edu < $emailmes
> rm -r $emailmes
> fi
>
> if [ ! -e /home/CHEMENG/$1/.blessed ]; then
> mkdir /home/CHEMENG/$1
> if [ $isfac = 0 ]; then
> xfs_quota -x -c "limit bsoft=61440M bhard=63000M $1" /home
> fi
>
>
> if [ $isfac != 0 ]; then
> xfs_quota -x -c "limit bsoft=3072M bhard=3200M $1" /home
> fi
> #cp -r /etc/skel/* /home/CHEMENG/$1/*
>
> chown "$1:CHEMENG+Domain Users" /home/CHEMENG/$1
> chmod -R 711 /home/CHEMENG/$1
> if [ -z $ldapmail ]; then
> echo "Add the attribute mail to the user $1"> $emailmes
> echo "then manually :( create the .forward in /home/CHEMENG/$1" >> $emailmes
> echo "Or add the email attribute to the AD and delete the .blessed file " >> $emailmes
> mail -s "$1 $subject1" support@***.utah.edu < $emailmes
> rm -r $emailmes
> createbless $1
> exit 0
> fi
> touch /home/CHEMENG/$1/.forward
> echo "$ldapmail" >> /home/CHEMENG/$1/.forward
> #chown root:root /home/CHEMENG/$1/.forward
> chmod 700 /home/CHEMENG/$1/.forward
> createbless $1
> # mod the public_html folder so apache can see it
> chown -R "$1:apache" /home/CHEMENG/$1/public_html
> chmod -R 751 /home/CHEMENG/$1/public_html
> chmod -R g+s /home/CHEMENG/$1/public_html
>
>
> fi
>
> # Clean Up
> rm /tmp/testfac
>
> exit 0
>
>
> # Notes
> # Basic premise for the .forward add
> # touch /home/CHEMENG/$1/foo.txt
> # echo "gregorcy@***.utah.edu" >> /home/CHEMENG/$1/foo.txt
>
> # LDAP Search String
> # ldapsearch -D "cn=***,ou=********,dc=*********,dc=utah,dc=edu" -b "ou=*********8,dc=********,dc=utah,dc=edu" -w ******** -x -LLL "(sAMAccountName=********)" mail | grep mail
> # Output looks like this:
> # mail: jeri@***.utah.edu
Adam Williams wrote:
> see root preexec = in the man page. so when they go to %U$ (such as
> using logon home = z: ) it will run a script that creates the required
> directory in /home/pc/
>
> Ken Lupo wrote:
>> Hello,
>>
>> I am attempting to dynamically create user shares when they connect to the
>> server based on their username. I cannot use [homes]. My reasoning for this
>> is that the users require a $ at the end of the share or it becomes
>> confusing to them(long story). What I'm seeing is that some Windows XP
>> clients will connect to /home/<username> but other clients try to connect to
>> /home/<username>_ (with an underscore). For a work around I have symlinked
>> all home folders from <username> to <username>_
>>
>> Here is my smb.conf file:
>>
>> [global]
>> workgroup = PC
>> realm = PC.DOMAIN.COM
>> server string = FILE
>> security = ADS
>> log file = /var/log/samba/%m.log
>> local master = No
>> idmap uid = 16777216-33554431
>> idmap gid = 16777216-33554431
>> winbind use default domain = Yes
>> winbind offline logon = false
>> store dos attributes = Yes
>> ea support = Yes
>> dns proxy = no
>> socket options = TCP_NODELAY IPTOS_LOWDELAY SO_SNDBUF=8192
>> SO_RCVBUF=8192 SO_KEEPALIVE
>> inherit acls = yes
>> inherit permissions = yes
>> map acl inherit = yes
>>
>> [%U$]
>> path = /home/PC/%U
>> comment = Homes
>> read only = No
>>
>>
>> Any help would be greatly appreicated.
>>
>> Thank you,
>> Ken
>>
More information about the samba
mailing list