######################################################################################################## # localuser - Lokale Benutzer anlegen ################################################################## ######################################################################################################## # Postsync-Skript für LINBO # Getestet unter Linux Mint 17.0 Xfce 64bit (Ubuntu 14.04) # Stefan Senft # 2017-08-30 # GPL v3 ### Verzeichnis für Dateien (für alle lokalen Benutzer) ################################################ localuserpath=var/localuser # Pfad zu den Skripten; Standard: var/localuser (kein / am Anfang) localuserdata=var/localuserdata # Pfad zu den lokalen Ordnern Home_auf_Server; Standard: var/localuserdata (kein / am Anfang) ### Lokaler Benutzer Nr.1 ############################################################################## # Anlegen des lokalen Benutzers Nr.1 ###case###usertype="${HOSTNAME:7:1}" ###case###case $usertype in ###case### i) ###case### echo Image-PC: Kein lokaler Benutzer wird angelegt. ###case### ;; ###case### o) # Benutzerdaten localuser=keinnetz # Benutername - Standard ist keinnetz localuserpsw=sakvXOddUgl9M # Kennwort verschlüsselt mit perl -e "print crypt('keinnetz','sa');" - Standard ist keinnetz localuserdel=90 # Anzahl Tage nach denen unbenutzte Dateien aus Home gelöscht werden - Standard ist 90 localuserbasedir=home # Basis für Homeverzeichnis - Standard: home # Info bei Postsync echo Ein lokaler Benutzer wird angelegt: $localuser # Ordner erstellen [ ! -d "/mnt/$localuserpath" ] && mkdir /mnt/$localuserpath [ ! -d "/mnt/$localuserpath/autostart" ] && mkdir /mnt/$localuserpath/autostart [ ! -d "/mnt/$localuserpath/boot" ] && mkdir /mnt/$localuserpath/boot [ ! -d "/mnt/$localuserdata" ] && mkdir /mnt/$localuserdata # Skript erstellen zum Anlegen des lokalen Benutzers echo '#!/bin/bash' > /mnt/$localuserpath/boot/$localuser.sh echo rm -rf /home/$localuser >> /mnt/$localuserpath/boot/$localuser.sh echo useradd --create-home --skel /home/linuxadmin --base-dir /$localuserbasedir --password $localuserpsw $localuser >> /mnt/$localuserpath/boot/$localuser.sh echo sleep 3 >> /mnt/$localuserpath/boot/$localuser.sh echo rm -rf /home/$localuser/Home_auf_Server >> /mnt/$localuserpath/boot/$localuser.sh echo mkdir /$localuserdata/$localuser >> /mnt/$localuserpath/boot/$localuser.sh echo ln -s /$localuserdata/$localuser /home/$localuser/Home_auf_Server >> /mnt/$localuserpath/boot/$localuser.sh echo chmod -R 700 /$localuserdata/$localuser >> /mnt/$localuserpath/boot/$localuser.sh echo chown -R $localuser:$localuser /$localuserdata/$localuser >> /mnt/$localuserpath/boot/$localuser.sh echo iptables -A OUTPUT -m owner --uid-owner $localuser -j DROP >> /mnt/$localuserpath/boot/$localuser.sh echo 'exit 0' >> /mnt/$localuserpath/boot/$localuser.sh chmod 744 /mnt/$localuserpath/boot/$localuser.sh # rc.local-Eintrag erstellen für Anlegeskript sed -i "/\/boot\/$localuser.sh/d" /mnt/etc/rc.local sed -i "s#exit.*#/$localuserpath/boot/$localuser.sh#" /mnt/etc/rc.local echo 'exit 0' >> /mnt/etc/rc.local # Skript erstellen zur Bereinigung der Homes der lokalen Benutzer nach Tagen echo '#!/bin/bash' > /mnt/$localuserpath/autostart/$localuser-cleanhas.sh echo '[ $HOME = /home/'$localuser' ] && ln -s "$HOME/Home_auf_Server" "$HOME/Desktop/Home" || exit 0' >> /mnt/$localuserpath/autostart/$localuser-cleanhas.sh echo 'datsek=$(date +%Y-%m-%d-%H%M%S)' >> /mnt/$localuserpath/autostart/$localuser-cleanhas.sh echo count=0 >> /mnt/$localuserpath/autostart/$localuser-cleanhas.sh echo while ! test -w /$localuserdata/$localuser >> /mnt/$localuserpath/autostart/$localuser-cleanhas.sh echo do >> /mnt/$localuserpath/autostart/$localuser-cleanhas.sh echo sleep 1 >> /mnt/$localuserpath/autostart/$localuser-cleanhas.sh echo count=\`expr '$count' + 1\` >> /mnt/$localuserpath/autostart/$localuser-cleanhas.sh echo 'if test $count -eq 60' >> /mnt/$localuserpath/autostart/$localuser-cleanhas.sh echo then exit 1 >> /mnt/$localuserpath/autostart/$localuser-cleanhas.sh echo fi >> /mnt/$localuserpath/autostart/$localuser-cleanhas.sh echo done >> /mnt/$localuserpath/autostart/$localuser-cleanhas.sh echo find /$localuserdata/$localuser -atime +$localuserdel -delete >> /mnt/$localuserpath/autostart/$localuser-cleanhas.sh echo 'echo Letzte Bereinigung: $datsek - $count Sekunden nach Skriptstart > "'/$localuserdata/$localuser'/WARNUNG - Unbenutzte Dateien werden nach '$localuserdel' Tagen geloescht"' >> /mnt/$localuserpath/autostart/$localuser-cleanhas.sh echo 'zenity --warning --text "\\n Unbenutzte Dateien des Benutzers '$localuser' \\n werden nach '$localuserdel' Tagen automatisch geloescht"' >> /mnt/$localuserpath/autostart/$localuser-cleanhas.sh echo 'exit 0' >> /mnt/$localuserpath/autostart/$localuser-cleanhas.sh chmod 775 /mnt/$localuserpath/autostart/$localuser-cleanhas.sh # Autostarteintrag erstellen für Bereinigungskript echo [Desktop Entry] > /mnt/etc/xdg/autostart/localuser_$localuser.desktop echo Name=localuser_$localuser >> /mnt/etc/xdg/autostart/localuser_$localuser.desktop echo Exec=/$localuserpath/autostart/$localuser-cleanhas.sh >> /mnt/etc/xdg/autostart/localuser_$localuser.desktop ###case### ;; ###case### *) ###case### echo Kein lokaler Benutzer wird angelegt. ###case### ;; ###case###esac # Löschen der Home_auf_Server-Ordner von entfernten lokalen Benutzern Nr.1 ############################# [ ! -f "/mnt/$localuserpath/boot/$localuser.sh" ] && rm -rf /mnt/$localuserdata/$localuser