#!/bin/bash ##### # Script di installazione per server Debian. Versione del 09/07/2019 # Modifiche per Debian 10 # Permessa installazione senza join per macchine non str957-* ############################################################ # 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 curl gnupg" # Pacchetti da installare solo se si effettua il join, *dopo* SYS_PKGS AD_PKGS="libpam-ccreds" # Pacchetti comuni XTRA_PKGS="keychain screen tcsh clamav htop" ############################################################ # Qui non modificare nulla techs="str957.tecnici" NAME=$(hostname -s) admgrp="${NAME}-amministratori" usrgrp="${NAME}-abilitati" pbis_base=/opt/pbis/bin AD_HOME='%H/%D/%U' # 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 } PCID=`echo $NAME | sed 's/str957-\(.*\)/\1/i; t ;s/.*//'` if [ -z "$PCID" ]; then echo "Hostname non joinabile! Dovrebbe iniziare con 'str957-' ." echo "Premi INVIO per continuare comunque." JOIN=n read A else readdef 'Vuoi joinare la macchina? (S/n)' 's' JOIN fi if [ "n" != "$JOIN" ]; then readdef "Nome amministratore AD (${AD_USER})" "$AD_USER" AD_USER mkdir /home/PERSONALE mkdir /home/STUDENTI fi # Primo aggiornamento/installazione pacchetti di sistema base apt -qy install $SYS_PKGS if [ "n" != "$JOIN" ]; then wget -O - http://repo.pbis.beyondtrust.com/apt/RPM-GPG-KEY-pbis|apt-key add - wget -O /etc/apt/sources.list.d/pbiso.list http://repo.pbis.beyondtrust.com/apt/pbiso.list apt update apt -qy install $AD_PKGS pbis-open 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 sh ~/${AD_SCRIPT} $pbis_base/domainjoin-cli setname $(hostname -s) $pbis_base/domainjoin-cli join --ou "$AD_OU" personale.dir.unibo.it "$AD_USER" echo "Se il join è riuscito, premi INVIO, altrimenti ^C" read A # Corregge errore con PAM (il file pbis viene creato col join, non prima...) sed -i 's/^\(.*\)sufficient\(.*\)$/\1[success=ok default=ignore]\2/' /usr/share/pam-configs/pbis pam-auth-update $pbis_base/config HomeDirTemplate $AD_HOME $pbis_base/config AssumeDefaultDomain 1 $pbis_base/config LoginShellTemplate /bin/bash $pbis_base/update-dns echo "%str957.tecnici ALL=NOPASSWD: ALL" > /etc/sudoers.d/tecnici chmod 0440 /etc/sudoers.d/tecnici $pbis_base/find-group-by-name "$admgrp" > /dev/null 2>&1 && { echo "Admin group found" echo "%${admgrp} ALL=NOPASSWD: ALL" > /etc/sudoers.d/localadmins chmod 0440 /etc/sudoers.d/localadmins } $pbis_base/find-group-by-name "$usrgrp" > /dev/null 2>&1 && { echo "Allowed users group found" reqm="PERSONALE\\$usrgrp"; $pbis_base/enum-members --group $usrgrp |grep -i $admgrp >/dev/null || { # Trying to lockout admins? Don't! reqm2="PERSONALE\\$admgrp" } $pbis_base/enum-members --group $usrgrp |grep -i $techs >/dev/null || { # Never lockout technicians! reqm3="PERSONALE\\$techs" } $pbis_base/config RequireMembershipOf $reqm $reqm2 $reqm3 } fi # Installazione dei pacchetti base apt -qy install ${XTRA_PKGS} # Aggiornamento completo del sistema apt -qy dist-upgrade shutdown -r now