[Samba] How to have a Default Profile per group ? [FIXED]

Tom thomas.guthmann at univ-avignon.fr
Tue Feb 19 16:21:52 GMT 2008


Hi Again

>>> [netlogon]
>>> path = /shared/%G/netlogon
>> Yes! Great idea!
>> Thank you Michael.

First, it works :)

Thanks to Michael for his idea, it's simple and easy to setup. I don't 
know why sometimes we're getting in some crazy and complicated ideas and 
we don't think just simple! Here is some explainations about our setup 
and how to allow different default profile per group.

1. Directories structure :

We have this :

   /home/netlogon/
                  group1/Default User/
                  group1/foo.bat
                  group1/bar.bat

                  group2/Default User/
                  group2/toto.bat

                  group3/Default User/
                  [..]

                  profiles/default/
                  profiles/special_profileA/
                  [..]

We put all our profiles in the profiles/ directory. And all Default 
User/ in each groupN directory is a link to the choosen profile 
contained in the profiles/ directory. For example, "group1" have a 
"default/" profile.
/home/netlogon/group1# ls -l
total 4
lrwxrwxrwx  1 root root 19 2008-02-19 15:01 Default User -> 
../profiles/default
-rw-rw-rw-  1 root root 97 2008-02-19 16:17 foo.bat
[..]

And "group2" will have a "special_profileA"

/home/netlogon/group2# ls -l
total 4
lrwxrwxrwx  1 root root 19 2008-02-19 15:01 Default User -> 
../profiles/special_profileA
-rw-rw-rw-  1 root root 97 2008-02-19 16:17 toto.bat
[..]

Why ? Because it's easier to manage. Real profile files are only in one 
directory and we do not duplicate profiles and waste space. Of course, 
you can put your real profile without linked it, it's up to you :)


2. smb.conf setup

Quite simple :

         logon script = %U.bat
         logon path = \\%h\profiles\%G\%U
         logon drive = U:
         logon home = \\%h\homes\%G\%U

[netlogon]
         path = /home/netlogon/%G
         root preexec = /usr/local/bin/disallowdoublelog.sh %u %I %L %G
         read only = yes
         public = no
         writeable = no
         browseable = no

The only thing I have to changed between my Default User/ for everyone 
to the support of one Default User _per_ group is :
     path = /home/netlogon
to
     path = /home/netlogon/%G

Extracted from man smb.conf:
%U : session username (the username that the client wanted, not
      necessarily the same as the one they got).
%G : primary group name of %U.

Example:
The user 'foo' is a member of 'group1' so its netlogon path will be 
/home/netlogon/group1 (%G) and his generated batch file will be, in my 
case generated by /usr/local/bin/disallowdoublelog.sh, 
/home/netlogon/group1/foo.bat.
Remember, your batch file must be in the netlogon path of the user 
otherwise the user will never find his batchfile and it will not be 
executed.

That's all ! It takes approximatively 5min to configure and 25min to 
finely test the final config. And 10min to understand why the batch file 
was in wrong place, I have forgotten how the batch file is done ;) Shame 
on me, I haven't touch our samba servers since one year :)

As a bonus, I will join my script to detect tries of multiple login on 
different PCs. It's a quick & dirty script to disconnect the second user 
or more trying to use an already connected user. If the student is kind 
  it will works just fine, but if not, there is a workaround. I will let 
you this as an exercice :) Imagine that some of my script kiddies are 
reading here, I don't want to help them to find the solution even if I 
will happy for them if they find it :)

Again, thank you michael to point out this great solution.

A+
Thomas

---
#!/bin/sh
# Arg => $1= login (user)
#        $2= IP ADDRESS
#        $3= netbios samba's name
#        $4= group of the user
# 09/02/5 - Tom v1.0

NETLOGON="/home/netlogon"
LOG=/var/log/samba/auth/err-`date "+%d%m%y"`.log
DATE=`date +"%H:%M:%S %d/%m/%y"`

FILE="$NETLOGON/$4/$1.bat"

echo "@ECHO OFF" > $FILE


NBCNX=`/usr/bin/smbstatus -p -u $1 2>/dev/null |grep $1 |wc -l`
if [[ $NBCNX > 1 ]]
then
         echo "$DATE => double login from $1 with $2 [DEBUG] $NBCNX" >> $LOG
         echo "logoff" >> $FILE
fi

echo "NET USE V: \\\\${3}\foo /PERSISTENT:NO" >> $FILE
echo "NET USE W: \\\\${3}\bar /PERSISTENT:NO" >> $FILE

---


More information about the samba mailing list