#!/bin/bash ##### # Script di installazione per server Debian. # Versione del 1/9/2015 ############################################################ # Config section: personalizza a volontà #### # Utente locale LOCAL_USER=tecnici # Amministratore AD da usare per il join AD_USER=diego.zuccato # Base OU in AD AD_OU='Dsa.Auto/Str00957-DIFA/Computer/Server' # Pacchetti base, da installare sempre SYS_PKGS="vim-nox mc openssh-server grub2" # Pacchetti da installare solo se si effettua il join, *dopo* SYS_PKGS AD_PKGS="winbind libpam-ccreds ntp ntpdate libpam-winbind libnss-winbind" # Pacchetti comuni XTRA_PKGS="keychain screen gfortran nedit tcsh clamav" ############################################################ # Qui non modificare nulla # Read user input with a default # readdef "prompt" "default" varname function readdef { local v; read -p "$1 " v if [ -z "$v" ]; then eval $3="\$2" else eval $3="\$v" fi } NAME=$(hostname -s) PCID=`echo $NAME | sed 's/str957-\(.*\)/\1/i; t ;s/.*//'` if [ -z "$PCID" ]; then echo "Hostname errato! Deve iniziare con 'str957-'" exit fi LAB=`echo $PCID| sed 's/\([^-]*\)-[0-9]*/\1/; t; s/.*//'` PCNO=`echo $PCID| sed "s/$LAB-\(.*\)/\1/"` AD_HOME='%H/%D/%U' mkdir /home/PERSONALE mkdir /home/STUDENTI readdef 'Vuoi joinare la macchina? (S/n)' 's' JOIN if [ "n" != "$JOIN" ]; then readdef "Nome amministratore AD (${AD_USER})" "$AD_USER" AD_USER fi # Primo aggiornamento/installazione pacchetti di sistema base apt-get -qy install $SYS_PKGS if [ "n" != "$JOIN" ]; then apt-get -qy install $AD_PKGS service winbind stop mv /etc/samba/smb.conf /etc/samba/smb.conf.ori cat > /etc/samba/smb.conf << END [global] netbios name = ${NAME} workgroup = PERSONALE realm = PERSONALE.DIR.UNIBO.IT server string = %v security = ADS encrypt passwords = true password server = personale.dir.unibo.it #password server = atu.personale.dir.unibo.it log file = /var/log/samba/log.%m log level = 3 max log size = 50 socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 local master = No dns proxy = No wins server = 137.204.25.77 client schannel = no #winbind separator = - winbind enum users = No winbind enum groups = No winbind offline logon = Yes winbind nested groups = Yes winbind normalize names = Yes winbind refresh tickets = Yes winbind use default domain = yes winbind uid = 10000-99999 winbind gid = 10000-99999 #idmap domains = PERSONALE STUDENTI #idmap config PERSONALE:default = no #idmap config STUDENTI:default = yes idmap config PERSONALE:backend = rid idmap config PERSONALE:base_rid = 500 idmap config PERSONALE:range = 100000 - 49999999 idmap config STUDENTI:backend = rid idmap config STUDENTI:base_rid = 500 idmap config STUDENTI:range = 50000000 - 99999999 template homedir = /home/%D/%U template shell = /bin/bash END readdef "Gruppo degli abilitati all'accesso" ${NOME}-abilitati chkgroup getent group $chkgroup > /dev/null && GROUP="${NOME}-abilitati," cat > /etc/security/pam_winbind.conf << END [global] require_membership_of=${GROUP}Str957.Tecnici mkhomedir=yes END # Aggiorna nsswitch per fargli cercare gli utenti anche con winbind sed -i~ 's/^\(\(passwd\|group\).*compat\)$/\1 winbind/' /etc/nsswitch.conf # Controllo ed eventuale restart automatico di winbind ogni 5 minuti echo '*/5 * * * * wbinfo -p >/dev/null 2>&1 || /etc/init.d/winbind start >/dev/null'|crontab - fi # Fix autorizzazioni sed -i~ "s/^\(root:x:0:\)\$/\1${LOCAL_USER}/" /etc/group sed -i~ "s,^\(#\|//\)\s*\(auth\s*\(required\s*pam_wheel.so\|sufficient\s*pam_wheel.so\s*trust\)\)\$,\2," /etc/pam.d/su # Operazioni relative al dominio if [ "n" != "$JOIN" ]; then net ads join -U "$AD_USER" -createcomputer=${AD_OU} echo "Se il join è riuscito (ignora l'eventuale errore di registrazione nel DNS), premi INVIO, altrimenti ^C" read A net ads dns register -P echo "%str957.tecnici ALL=NOPASSWD: ALL" > /etc/sudoers.d/tecnici chmod 0440 /etc/sudoers.d/tecnici service winbind restart fi # Installazione dei pacchetti base apt-get -qy install ${XTRA_PKGS} # Aggiornamento completo del sistema apt-get -qy dist-upgrade shutdown -r now