Skip to content
Snippets Groups Projects
Select Git revision
  • 32c0c5244c413703981a79acb4502a8e9d404a33
  • master default protected
2 results

create_primtux_user.sh

Blame
  • create_primtux_user.sh 2.04 KiB
    #!/bin/bash
    LEVELS="cycle_1 cycle_2 cycle_3 professeur direction"
    declare -A SKELS
    SKELS[cycle_1]="01-mini"
    SKELS[cycle_2]="02-super"
    SKELS[cycle_3]="03-maxi"
    SKELS[professeur]="prof"
    SKELS[direction]="direction"
    
    abort(){
        rm $TEMPF*
        exit 1 
    }
    usage(){
        echo "Usage $0 username level"
        echo "Transform an existing LDAP user into a Primtux LDAP user"
        echo "Options"
        echo "Level :  {${LEVELS// /|}}"
    }
    
    if [ -z "$2" ]
    then
        usage
        abort
    fi
    . /etc/slis/slis.conf
    user="$1"
    level="$2"
    TEMPF="$$_temp"
    DIST="`dirname $0`/dist"
    set -x
    # Check for LDAP group Primtux
    if [ -z "ldapsearch -x cn=Primtux | grep numEntries" ]
    then
        # insert primtux group
        sed -e "s/BASE/$LDAP_BASE_DN/" $DIST/primtux.ldiff > $TEMPF.ldiff
        ldapadd -x -D "cn=$LDAP_ADMIN_RDN,$LDAP_BASE_DN" -w $LDAP_ADMIN_PW -f $TEMPF.ldiff
    fi
    ldapsearch -x -LLL uid=$user > $TEMPF.ldiff
    if [ ! -s $TEMPF.ldiff ]
    then
        abort
    fi
    # Check for UID => 1000 and update if required
    uid=`grep uidNumber $TEMPF.ldiff | cut -d ' ' -f 2`
    if [ $uid -eq 1000 ]
    then
        # Change UID
        newuid=$(( `slapcat | grep "uidNumber: 10.." | cut -d ' ' -f 2 | sort -nu | tail -n 1`+1))
        # prepare ldiff file
        grep "^dn" $TEMPF.ldiff > $TEMPF.1.ldiff
        echo -e "changetype: modify\nreplace: uidNumber\nuidNumber: $newuid" >> $TEMPF.1.ldiff
        # run ldapmodify
        ldapmodify -x -D "cn=$LDAP_ADMIN_RDN,$LDAP_BASE_DN" -w $LDAP_ADMIN_PW -f $TEMPF.1.ldiff
        uid=$newuid
    fi
    # Add Primtux to user group
    echo -e "dn: cn=Primtux,ou=Groups,$LDAP_BASE_DN\nchangetype: modify\nadd: memberUid\nmemberUid: $user" > $TEMPF.1.ldiff
    ldapmodify -x -D "cn=$LDAP_ADMIN_RDN,$LDAP_BASE_DN" -w $LDAP_ADMIN_PW -f $TEMPF.1.ldiff
    # Retrieve files from skels
    skel="$DIR/skels/${SKELS[$level]}"
    home=`$TEMPF.ldiff | cut -d ' ' -f 2`
    echo mv $home $home.bak
    echo cp -r $skel $home
    echo cp -r $home.bak/* $home/
    echo rm -rf $home
    # fix links
    echo ln -sf $home/.wine/drive_c/users/01-mini/Bureau $home/Bureau
    # fix Rights
    echo chown -R $uid: $home
    # fix samba passwd
    # TODO: test me
    smbpasswd -w $LDAP_ADMIN_PW -n $user
    rm $$.ldif