[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
1 #!/bin/bash 2 3 # ********************************************************** 4 # Installation de SambaEdu3 5 # Auteur: Olivier LECLUSE 6 # Ce script est diftribué selon les termes de la licence GPL 7 # ********************************************************** 8 9 # Adaptation pour squeeze keyser - 2012 10 11 #mode debug 12 #touch /root/debug 13 if [ -e /root/debug ]; then 14 set -x 15 fi 16 17 #Couleurs 18 COLTITRE="\033[1;35m" # Rose 19 COLPARTIE="\033[1;34m" # Bleu 20 21 COLTXT="\033[0;37m" # Gris 22 COLCHOIX="\033[1;33m" # Jaune 23 COLDEFAUT="\033[0;33m" # Brun-jaune 24 COLSAISIE="\033[1;32m" # Vert 25 26 COLCMD="\033[1;37m" # Blanc 27 28 COLERREUR="\033[1;31m" # Rouge 29 COLINFO="\033[0;36m" # Cyan 30 31 clear 32 echo -e "$COLTITRE" 33 echo "*************************" 34 echo "* SCRIPT D'INSTALLATION *" 35 echo "* DE SAMBAEDU3 *" 36 echo "*************************" 37 38 # Il ne faut pas poursuivre l'installation si aucune carte réseau n'a été détectée: 39 # Dans ce cas, un "ifconfig eth0" renvoie: 40 # eth0: error fetching interface information: Device not found 41 # Détection de la configuration ip sur la 1ere carte réseau 42 43 echo -e "$COLCMD\c " 44 ECARD=$(/sbin/ifconfig | grep eth | sort | head -n 1 | cut -d " " -f 1) 45 if [ -z "$ECARD" ]; then 46 ECARD=$(/sbin/ifconfig -a | grep eth | sort | head -n 1 | cut -d " " -f 1) 47 48 if [ -z "$ECARD" ]; then 49 echo -e "$COLERREUR" 50 echo "Aucune carte réseau n'a été détectée." 51 echo "Il n'est pas souhaitable de poursuivre l'installation." 52 echo -e "$COLTXT" 53 echo -e "Voulez-vous ne pas tenir compte de cet avertissement ($COLCHOIX}1$COLTXT})," 54 echo -e "ou préférez-vous interrompre le script d'installation ($COLCHOIX}2$COLTXT})" 55 echo -e "et corriger le problème avant de relancer ce script?" 56 REPONSE="" 57 while [ "$REPONSE" != "1" -a "$REPONSE" != "2" ] 58 do 59 echo -e "$COLTXT}Votre choix: [$COLDEFAUT}2$COLTXT}] $COLSAISIE}\c " 60 read REPONSE 61 62 if [ -z "$REPONSE" ]; then 63 REPONSE=2 64 fi 65 done 66 if [ "$REPONSE" = "2" ]; then 67 echo -e "$COLINFO" 68 echo "Pour résoudre ce problème, chargez le pilote approprié." 69 echo "ou alors complétez le fichier /etc/modules.conf avec une ligne du type:" 70 echo " alias eth0 <nom_du_module>" 71 echo -e "Il conviendra ensuite de rebooter pour prendre en compte le changement\nou de charger le module pour cette 'session' par 'modprobe <nom_du_module>" 72 echo -e "Vous pourrez relancer ce script via la commande:\n /var/cache/se3_install/install_se3.sh" 73 echo -e "$COLTXT" 74 exit 1 75 fi 76 else 77 cp /etc/network/interfaces /etc/network/interfaces.orig 78 sed -i "s/eth[0-9]/$ECARD/" /etc/network/interfaces 79 ifup $ECARD 80 fi 81 82 fi 83 IPADDR=$(/sbin/ifconfig $ECARD | grep inet |cut -d : -f 2 |cut -d \ -f 1| head -n 1) 84 # 85 # Détection de la distribution 86 # 87 88 #clear 89 echo -e "$COLTXT" 90 echo "Détection de la distribution:" 91 92 if [ -e /etc/debian_version ]; then 93 echo -e "$COLINFO\c " 94 echo "Debian détectée, félicitation ;-)" 95 echo -e "$COLCMD\c " 96 DISTRIB="DEB" 97 WWWPATH="/var/www" 98 if [ ! -d /usr/lib/cgi-binse ]; then 99 mkdir /usr/lib/cgi-binse 100 fi 101 CGIPATH="/usr/lib/cgi-binse" 102 APACHE="www-se3" 103 LDAPGRP="openldap" 104 SMBCONF="/etc/samba/smb.conf" 105 APACHECONF="/etc/apache/httpdse.conf" 106 SLAPDIR="ldap" 107 SCHEMADIR="\/etc\/ldap\/schema" 108 SLAPDCONF="/etc/$SLAPDIR/slapd.conf" 109 PAMLDAPCONF="/etc/pam_ldap.conf" 110 NSSLDAPCONF="/etc/libnss-ldap.conf" 111 LDAPSECRET="/etc/ldap.secret" 112 NSSWITCH="/etc/nsswitch.conf" 113 INITDSAMBA="/etc/init.d/samba" 114 SMBCONFIN="smb_3.conf.in" 115 INITDAPACHE="/etc/init.d/apache2se" 116 INITDSLAPD="/etc/init.d/slapd" 117 INITDNSCD="" 118 PHPINI="/etc/php5/apache2/php.ini" 119 MRTGCFG="/etc/mrtg.cfg" 120 else 121 echo -e "$COLERREUR" 122 echo "Distribution non supportée." 123 echo -e "$COLTXT" 124 exit 1 125 fi 126 127 DEBVER=`cat /etc/debian_version` 128 echo -e "$COLINFO\c " 129 case $DEBVER in 130 5.0*) 131 echo "Debian lenny detectee." 132 ;; 133 6.0*) 134 echo "Debian squeeze detectee." 135 ;; 136 *) 137 echo "Version Debian inconnue" 138 ;; 139 esac 140 141 ################# Detection de la conf auto ############ 142 143 if [ -e /etc/se3/setup_se3.data ]; then 144 echo -e "$COLTXT}Un script de configuration automatique a été détecté .... ;) " 145 chmod 700 /etc/se3/setup_se3.data 146 . /etc/se3/setup_se3.data # le "." permet d'inclure le script et ses variables 147 # correction pass mysql 148 MYSQLPW=$(echo "$MYSQLPW" | sed -e 's/\-//g' | sed -e s'/\$//g' | sed -e 's/\#//g'| sed -e 's/\~//g'| sed -e 's/\&//g') 149 else 150 [ ! -d /etc/se3 ] && mkdir /etc/se3 151 fi 152 153 # // il n'y a pas de depots volatile sous squeeze // 154 ## correction sources.list si besoin pour se3-clamav 155 #[ -z "$(cat /etc/apt/sources.list| grep "clamav derniere version")" ] && echo "# entree pour clamav derniere version 156 #deb http://ftp2.de.debian.org/debian-volatile lenny/volatile main" >> /etc/apt/sources.list 157 158 # 159 # Mise en place de l'interface web 160 # 161 if [ "$IFACEWEB_AUTOCONF" = "yes" ]; then 162 rep="y" 163 echo -e "$COLPARTIE" 164 echo "Section 1: " 165 echo "---------- " 166 echo -e "$COLTXT" 167 echo "Installation Automatique de l'interface web ....." 168 else 169 echo -e "$COLPARTIE" 170 echo "Section 1: " 171 echo "---------- " 172 173 echo -e "$COLTXT}Voulez-vous installer l'interface web ? ($COLDEFAUT}O/n$COLTXT}) $COLSAISIE\c " 174 read rep 175 fi 176 if [ ! "$rep" = "n" ]; then 177 echo -e "$COLTXT" 178 echo "Installation de l'interface" 179 echo -e "$COLCMD\c " 180 useradd -u 599 www-se3 -d /var/remote_adm -s /bin/bash 181 adduser www-se3 lpadmin 182 183 # Effacement de la config nut 184 /bin/rm -Rf /etc/nut 185 186 # modif de /etc/profile afin que la machine passe par un proxy 187 if [ ! -z "$PROXY_AUTOCONF" ]; then 188 if [ "$PROXY_AUTOCONF" = "yes" ]; then 189 echo "#se3_proxy" >> /etc/profile 190 echo "http_proxy=\"http://$IPPROXY:$PROXYPORT\"" >> /etc/profile 191 echo "ftp_proxy=\"http://$IPPROXY:$PROXYPORT\"" >> /etc/profile 192 echo "export http_proxy ftp_proxy" >> /etc/profile 193 fi 194 else 195 if [ ! `cat /etc/profile | grep se3_proxy` ]; then 196 197 REPONSE="" 198 while [ "$REPONSE" != "o" -a "$REPONSE" != "n" ] 199 do 200 echo -e "$COLTXT" 201 echo "Passez-vous par un SLIS ou un autre proxy" 202 echo -e "pour vous connecter à internet ? ($COLCHOIX}o/n$COLTXT}) $COLSAISIE}\c " 203 read REPONSE 204 done 205 206 ### on ne touche à rien si il n'y a pas de proxy #### 207 if [ "$REPONSE" = "o" ]; then 208 while [ "$IPOK" != "o" ] 209 do 210 GW=$(route -n | grep UG | head -n 1 | awk -F' ' '{ print $2 }') 211 echo -e "$COLTXT}Quelle est l'adresse ip de votre proxy ? [$COLDEFAUT}$GW}$COLTXT}] $COLSAISIE}\c " 212 read IPPROXY 213 [ -z "$IPPROXY" ] && IPPROXY="$GW" 214 echo -e "$COLTXT\c " 215 echo -e "Quel est le port de votre proxy? [$COLDEFAUT}3128$COLTXT}] $COLSAISIE}\c " 216 read PROXYPORT 217 if [ -z "$PROXYPORT" ]; then 218 PROXYPORT=3128 219 fi 220 echo -e "$COLTXT\c " 221 echo -e "Votre proxy est accessible à $COLINFO}$IPPROXY}:$PROXYPORT}$COLTXT}" 222 IPOK="" 223 while [ "$IPOK" != "o" -a "$IPOK" != "n" ] 224 do 225 echo -e "$COLTXT\c " 226 echo -e "Est-ce correct ? ($COLCHOIX}o/n$COLTXT}) $COLSAISIE}\c " 227 read IPOK 228 done 229 done 230 231 ### on part du principe où le port est PROXYPORT 232 233 echo -e "$COLTXT\c " 234 echo "Je mets à jour le fichier /etc/profile ..." 235 echo -e "$COLCMD\c " 236 echo "#se3_proxy" >> /etc/profile 237 echo "http_proxy=\"http://$IPPROXY:$PROXYPORT\"" >> /etc/profile 238 echo "ftp_proxy=\"http://$IPPROXY:$PROXYPORT\"" >> /etc/profile 239 echo "export http_proxy ftp_proxy" >> /etc/profile 240 echo 241 fi 242 else 243 echo -e "$COLINFO\c " 244 echo "Un proxy est déjà déclaré dans /etc/profile" 245 fi 246 fi 247 fi 248 249 echo -e "$COLINFO" 250 echo "Traitement sudoers et init ldap" 251 echo -e "$COLTXT " 252 mv /etc/sudoers /etc/sudoers.orig 253 cp /etc/sudoers.se3 /etc/sudoers 254 chmod 440 /etc/sudoers 255 #Init annuaire et mise en place DB_CONFIG de se3 256 /etc/init.d/slapd stop 257 cp -a /var/lib/ldap/DB_CONFIG /root/DB_CONFIG_squeeze.ori 258 rm -rf /var/lib/ldap/* 259 cp /var/cache/se3_install/conf/DB_CONFIG /var/lib/ldap/ 260 chown openldap:openldap /var/lib/ldap/* 261 262 263 # 264 # Configuration de SambaEdu 265 # 266 267 echo -e "$COLPARTIE" 268 echo "Section 2: " 269 echo "---------- " 270 echo -e "$COLTXT\c " 271 if [ "$CONFSE3" = "yes" ]; then 272 rep="y" 273 sleep 3 274 else 275 echo -e "Voulez-vous configurer SambaEdu3 ? (${COLCHOIX}O/n${COLTXT}) $COLSAISIE\c " 276 read rep 277 fi 278 if [ ! "$rep" = "n" ]; then 279 280 if [ "$CONFSE3" != "yes" ]; then 281 echo -e "$COLTXT" 282 echo -e "Entrez l'adresse IP du serveur SE3 [${COLDEFAUT}$IPADDR${COLTXT}] $COLSAISIE\c " 283 read SE3IP 284 if [ "$SE3IP" = "" ]; then 285 SE3IP=$IPADDR 286 fi 287 288 echo -e "$COLTXT" 289 echo -e "Entrez le nom DNS complet du serveur SE3 [${COLDEFAUT}`hostname -f`${COLTXT}]" 290 echo -e "$COLSAISIE\c " 291 read FQHN 292 if [ "$FQHN" = "" ]; then 293 FQHN=`hostname -f` 294 fi 295 SERVNAME=`echo $FQHN |cut -d . -f 1` 296 DOMNAME=`echo $FQHN |cut -d . -f 2-` 297 298 echo -e "$COLTXT" 299 echo -e "Entrez l'adresse de la base MySQL [${COLDEFAUT}localhost${COLTXT}] $COLSAISIE\c " 300 read MYSQLIP 301 if [ "$MYSQLIP" = "" ]; then 302 MYSQLIP="localhost" 303 fi 304 305 echo -e "$COLTXT" 306 echo -e "Entrez le mot de passe root MySQL ou appuyez simplement sur entrée pour en générer un aléatoirement" 307 echo -e 'Attention les caractères "#", "~", "-", "&" et "$" sont interdits et seront supprimés le cas échéant.' 308 echo -e "$COLSAISIE\c " 309 read MYSQLPW 310 MYSQLPW=$(echo "$MYSQLPW" | sed -e 's/\-//g' | sed -e s'/\$//g' | sed -e 's/\#//g'| sed -e 's/\~//g'| sed -e 's/\&//g') 311 312 SE3PW="" 313 while [ -z "$SE3PW" ] 314 do 315 echo -e "$COLTXT" 316 echo -e "Entrez le mot de passe Administrateur SambaEdu3 (Non trivial SVP)" 317 echo -e 'Attention les caractères "#", "~", "-", "&" et "$" sont interdits et seront supprimés le cas échéant' 318 echo -e "$COLSAISIE\c " 319 read SE3PW 320 SE3PW=$(echo "$SE3PW" | sed -e 's/\-//g' | sed -e s'/\$//g' | sed -e 's/\#//g'| sed -e 's/\~//g'| sed -e 's/\&//g') 321 done 322 else 323 if [ -z "$SE3PW" ]; then 324 SE3PW=$(makepasswd) 325 fi 326 NEWSE3PW=$(echo "$SE3PW" | sed -e 's/\-//g' | sed -e s'/\$//g' | sed -e 's/\#//g'| sed -e 's/\~//g'| sed -e 's/\&//g') 327 if [ "$SE3PW" != "$NEWSE3PW" ]; then 328 echo -e "${COLERREUR}Suppression des caractères interdits :" 329 echo -e "${COLINFO}Le mot de passe adminstrateur du domaine sambaedu3 a été modifié pour $NEWSE3PW" 330 echo -e "${COLINFO}Prenez note du mot de passe et appuyer sur entree pour continuer" 331 read dum 332 SE3PW="$NEWSE3PW" 333 fi 334 fi 335 336 if [ -z "$MYSQLPW" ]; then 337 MYSQLPW=$(makepasswd) 338 echo -e "vous n'avez pas saisi de mot de passe root MySQL, celui-ci va être généré aléatoirement" 339 echo "$MYSQLPW" 340 fi 341 342 NEWMYSQLPW=$(echo "$MYSQLPW" | sed -e 's/\-//g' | sed -e s'/\$//g' | sed -e 's/\#//g'| sed -e 's/\~//g'| sed -e 's/\&//g') 343 if [ "$MYSQLPW" != "$NEWMYSQLPW" ]; then 344 echo -e "${COLERREUR}Suppression des caractères interdits :" 345 echo -e "${COLINFO}Le mot de passe root mysqla été modifié pour $NEWMYSQLPW" 346 MYSQLPW="$NEWMYSQLPW" 347 fi 348 349 350 echo -e "$COLCMD\c " 351 mysqladmin password $MYSQLPW && echo -e "${COLINFO}Le mot de passe root MySQL a été initialisé à $MYSQLPW" 352 sleep 2 353 echo "[client]">/root/.my.cnf 354 echo "password=$MYSQLPW">>/root/.my.cnf 355 echo "user=root">>/root/.my.cnf 356 chmod 600 /root/.my.cnf 357 358 # Configuration de l'interface 359 echo -e "$COLCMD\c " 360 sed -e "s/#MYSQLIP#/$MYSQLIP/g;s/#SE3DBPASS#/$SE3PW/g" /var/www/se3/includes/config.inc.php.in > /var/www/se3/includes/config.inc.php 361 chmod 660 /var/www/se3/includes/config.inc.php 362 chown $APACHE /var/www/se3/includes/config.inc.php 363 sed -e "s/#MYSQLIP#/$MYSQLIP/g;s/#SE3DBPASS#/$SE3PW/g" /var/cache/se3_install/conf/SeConfig.ph.in > /etc/SeConfig.ph 364 chmod 660 /etc/SeConfig.ph 365 chown $APACHE /etc/SeConfig.ph 366 367 368 369 # Configuration des droits sur se3/setup 370 echo "AuthUserFile $WWWPATH/se3/setup/.htpasswd" >> $WWWPATH/se3/setup/.htaccess 371 htpasswd -bc $WWWPATH/se3/setup/.htpasswd admin $SE3PW 372 chmod 750 $WWWPATH/se3/setup -R 373 chown $APACHE.root $WWWPATH/se3/setup -R 374 375 if [ "$CONFSE3" = "yes" ]; then 376 rep="y" 377 else 378 echo -e "$COLTXT" 379 echo -e "Voulez-vous initialiser la Base de Données ? (${COLCHOIX}O/n${COLTXT}) $COLSAISIE\c " 380 read rep 381 fi 382 if [ ! "$rep" = "n" ]; then 383 # Initialisation de la Base de Données 384 echo -e "$COLCMD\c " 385 echo "DROP DATABASE se3db" | mysql -h $MYSQLIP se3db -u root -p$MYSQLPW 2>/dev/null 386 mysqladmin create se3db -u root -p$MYSQLPW 387 mysql -h $MYSQLIP se3db -u root -p$MYSQLPW <se3db.sql 388 echo "DELETE FROM user WHERE User = 'se3db_admin'"|mysql mysql -u root -p$MYSQLPW 389 echo "DELETE FROM db WHERE User = 'se3db_admin'"|mysql mysql -u root -p$MYSQLPW 390 echo "INSERT INTO user ( \`Host\` , \`User\` , \`Password\` , \`Select_priv\` , \`Insert_priv\` , \`Update_priv\` , \`Delete_priv\` , \`Create_priv\` , \`Drop_priv\` , \`Reload_priv\` , \`Shutdown_priv\` , \`Process_priv\`, \`File_priv\` , \`Grant_priv\` , \`References_priv\` , \`Index_priv\` , \`Alter_priv\` ) VALUES (\"$SE3IP\",'se3db_admin',PASSWORD(\"$SE3PW\"),'Y','Y','Y','Y','Y','Y','N','N','N','N','N','N','N','N')"|mysql mysql -u root -p$MYSQLPW 391 echo "INSERT INTO user ( \`Host\` , \`User\` , \`Password\` , \`Select_priv\` , \`Insert_priv\` , \`Update_priv\` , \`Delete_priv\` , \`Create_priv\` , \`Drop_priv\` , \`Reload_priv\` , \`Shutdown_priv\` , \`Process_priv\`, \`File_priv\` , \`Grant_priv\` , \`References_priv\` , \`Index_priv\` , \`Alter_priv\` ) VALUES (\"localhost\",'se3db_admin',PASSWORD(\"$SE3PW\"),'Y','Y','Y','Y','Y','Y','N','N','N','N','N','N','N','N')"|mysql mysql -u root -p$MYSQLPW 392 echo "INSERT INTO db ( \`Host\` , \`Db\` , \`User\` , \`Select_priv\` , \`Insert_priv\` , \`Update_priv\` , \`Delete_priv\` , \`Create_priv\` , \`Drop_priv\` , \`Grant_priv\` , \`References_priv\` , \`Index_priv\` , \`Alter_priv\` ) VALUES (\"$SE3IP\",'se3db','se3db_admin','Y','Y','Y','Y','Y','Y','N','N','N','Y')"|mysql mysql -u root -p$MYSQLPW 393 echo "INSERT INTO db ( \`Host\` , \`Db\` , \`User\` , \`Select_priv\` , \`Insert_priv\` , \`Update_priv\` , \`Delete_priv\` , \`Create_priv\` , \`Drop_priv\` , \`Grant_priv\` , \`References_priv\` , \`Index_priv\` , \`Alter_priv\` ) VALUES (\"localhost\",'se3db','se3db_admin','Y','Y','Y','Y','Y','Y','N','N','N','Y')"|mysql mysql -u root -p$MYSQLPW 394 mysqladmin reload -u root -p$MYSQLPW 395 # Mise a jours de paramètres en fonction de la distrib 396 echo "UPDATE params SET value=\"$WWWPATH/se3\" WHERE name=\"path_to_wwwse3\""|mysql -h $MYSQLIP se3db -u se3db_admin -p$SE3PW 397 echo "UPDATE params SET value=\"$SMBCONF\" WHERE name=\"path2smbconf\""|mysql -h $MYSQLIP se3db -u se3db_admin -p$SE3PW 398 echo "UPDATE params SET value=\"/etc/$SLAPDIR/ldap.conf\" WHERE name=\"path2ldapconf\""|mysql -h $MYSQLIP se3db -u se3db_admin -p$SE3PW 399 echo "UPDATE params SET value=\"$PAMLDAPCONF\" WHERE name=\"path2pamldapconf\""|mysql -h $MYSQLIP se3db -u se3db_admin -p$SE3PW 400 echo "UPDATE params SET value=\"$NSSLDAPCONF\" WHERE name=\"path2nssldapconf\""|mysql -h $MYSQLIP se3db -u se3db_admin -p$SE3PW 401 echo "UPDATE params SET value=\"$LDAPSECRET\" WHERE name=\"path2ldapsecret\""|mysql -h $MYSQLIP se3db -u se3db_admin -p$SE3PW 402 echo "UPDATE params SET value=\"$INITDSAMBA\" WHERE name=\"serv_samba\""|mysql -h $MYSQLIP se3db -u se3db_admin -p$SE3PW 403 echo "UPDATE params SET value=\"$INITDAPACHE\" WHERE name=\"serv_apache\""|mysql -h $MYSQLIP se3db -u se3db_admin -p$SE3PW 404 echo "UPDATE params SET value=\"$INITDSLAPD\" WHERE name=\"serv_slapd\""|mysql -h $MYSQLIP se3db -u se3db_admin -p$SE3PW 405 echo "UPDATE params SET value=\"$INITDNSCD\" WHERE name=\"serv_nscd\""|mysql -h $MYSQLIP se3db -u se3db_admin -p$SE3PW 406 # Paramètres divers renseignés par l'utilisateur 407 echo "UPDATE params SET value=\"$DOMNAME\" WHERE name=\"domain\""|mysql -h $MYSQLIP se3db -u se3db_admin -p$SE3PW 408 409 if [ "$MYSQL_AUTOCONF" = "yes" ]; then 410 echo "UPDATE params SET value=\"$URL_IFACEWEB\" WHERE name=\"urlse3\""|mysql -h $MYSQLIP se3db -u se3db_admin -p$SE3PW 411 echo "UPDATE params SET value=\"$DEFAULTGID\" WHERE name=\"defaultgid\""|mysql -h $MYSQLIP se3db -u se3db_admin -p$SE3PW 412 echo "UPDATE params SET value=\"$UIDPOLICY\" WHERE name=\"uidPolicy\""|mysql -h $MYSQLIP se3db -u se3db_admin -p$SE3PW 413 echo "UPDATE params SET value=\"$DEFAULTSHELL\" WHERE name=\"defaultshell\""|mysql -h $MYSQLIP se3db -u se3db_admin -p$SE3PW 414 echo "UPDATE params SET value=\"$URL_MAJSE3\" WHERE name=\"urlmaj\""|mysql -h $MYSQLIP se3db -u se3db_admin -p$SE3PW 415 echo "UPDATE params SET value=\"$FTP_MAJSE3\" WHERE name=\"ftpmaj\""|mysql -h $MYSQLIP se3db -u se3db_admin -p$SE3PW 416 417 else 418 echo "UPDATE params SET value=\"http://$FQHN:909\" WHERE name=\"urlse3\""|mysql -h $MYSQLIP se3db -u se3db_admin -p$SE3PW 419 fi 420 421 fi 422 423 if [ "$rep" = "n" ]; then 424 echo -e "$COLTXT" 425 echo -e "Voulez-vous configurer l'annuaire LDAP ? (${COLCHOIX}O/n${COLTXT}) ${COLSAISIE}\c " 426 read rep 427 fi 428 if [ ! "$rep" = "n" ]; then 429 if [ "$CONFSE3" != "yes" ]; then 430 # Configuration de l'annuaire LDAP 431 432 rep="o" 433 while [ "$rep" = "o" ] 434 do 435 echo -e "$COLTXT" 436 echo -e "Entrez l'adresse IP de l'annuaire LDAP [${COLDEFAUT}$SE3IP${COLTXT}] ${COLSAISIE}\c " 437 read LDAPIP 438 if [ "$LDAPIP" == "" ]; then 439 LDAPIP="$SE3IP" 440 fi 441 442 if [ "$LDAPIP" != "$SE3IP" ]; then 443 while [ "$REP_CONFIRM" != "o" -a "$REP_CONFIRM" != "n" ] 444 do 445 echo -e "$COLINFO\c " 446 echo -e "Vous avez demandé à installer le serveur ldap sur une machine distante." 447 echo -e "IL EST INDISPENSABLE QUE LA MACHINE DISTANTE SOIT SOUS DEBIAN LENNY OU QUE L'ANNUAIRE" 448 echo -e "DISTANT SOIT AU FORMAT SCHEMA CHECK ON POUR QUE L'INSTALLATION ABOUTISSE !" 449 echo -e "par exemple LCS LENNY répond à ce prérequis" 450 echo -e "Dans le doute, il est vivement recommandé de laisser l'annuaire en local" 451 echo -e "Etes vous certain de vouloir conserver votre choix ? (${COLCHOIX}o/n${COLTXT}) $COLSAISIE\c " 452 read REP_CONFIRM 453 done 454 if [ "$REP_CONFIRM" != "o" ]; then 455 echo "L'annuaire sera installé en local" 456 LDAPIP="$SE3IP" 457 fi 458 459 fi 460 #Vérification de la présence de $LDAPIP 461 if ! ping -c1 -t1 $LDAPIP > /dev/null; then 462 echo -e "${COLERREUR}" 463 echo "ERREUR:" 464 echo -e "${COLTXT} Il semble que l'adresse ${COLINFO}$LDAPIP${COLTXT} ne réponde pas au ping." 465 echo " Est-ce que:" 466 echo " - C'est normal ? Les pings sont-ils bloqués ?" 467 echo " - Il y a un problème de connectique?" 468 echo " - Vous vous êtes trompé sur l'adresse?" 469 echo " Si les pings ne sont pas filtrés, il est recommandé de refaire un tour" 470 echo " dans la boucle de saisie de l'adresse pour contrôler qu'après correction" 471 echo " le ping passe bien." 472 echo -e "Voulez-vous corriger l'adresse? (${COLCHOIX}O/n${COLTXT}) $COLSAISIE\c " 473 read rep 474 475 if [ -z "$rep" ]; then 476 rep="o" 477 fi 478 else 479 rep="n" 480 fi 481 done 482 483 #Choix du DN de base: 484 BDN="dc=`echo $DOMNAME |sed -e "s/\./,dc=/g"`" 485 486 echo -e "$COLINFO" 487 echo "Plusieurs formes de DN de BASE sont proposés:" 488 489 echo -e " ${COLTXT}(${COLCHOIX}1${COLTXT}) Dans l'Académie de Caen, le DN de base serait:\n $BDN" 490 491 ETABBDN=$(echo $DOMNAME | cut -d"." -f1) 492 ACADBDN=$(echo $DOMNAME | cut -d"." -f2) 493 ALTBDN2="ou=$ETABBDN,ou=$ACADBDN,ou=education,o=gouv,c=fr" 494 echo -e " ${COLTXT}(${COLCHOIX}2${COLTXT}) Dans l'Académie de Rouen, le DN de base serait:\n $ALTBDN2" 495 496 echo -e " ${COLTXT}(${COLCHOIX}3${COLTXT}) Autre format." 497 REPONSE="" 498 while [ "$REPONSE" != "1" -a "$REPONSE" != "2" -a "$REPONSE" != "3" ] 499 do 500 echo -e "$COLTXT\c " 501 echo -e "Votre choix: $COLSAISIE\c " 502 read REPONSE 503 done 504 505 case $REPONSE in 506 1) 507 BDN="$BDN" 508 ;; 509 2) 510 BDN="$ALTBDN2" 511 ;; 512 *) 513 BDN="$BDN" 514 ;; 515 esac 516 517 rep="o" 518 while [ "$rep" = "o" ] 519 do 520 echo -e "$COLTXT" 521 echo -e "Entrez le DN de base [${COLDEFAUT}$BDN${COLTXT}]" 522 echo -e "BASEDN: $COLSAISIE\c " 523 read BASEDN 524 if [ "$BASEDN" = "" ]; then 525 BASEDN=$BDN 526 fi 527 528 echo -e "$COLTXT" 529 echo -e "Entrez le RDN de l'administrateur de l'annuaire [${COLDEFAUT}cn=admin${COLTXT}] $COLSAISIE\c " 530 read ADMINRDN 531 if [ "$ADMINRDN" = "" ]; then 532 ADMINRDN="cn=admin" 533 fi 534 535 echo -e "$COLTXT" 536 echo -e "Entrez le mot de passe de l'administrateur de l'annuaire [${COLDEFAUT}$SE3PW${COLTXT}] $COLSAISIE\c " 537 read ADMINPW 538 if [ "$ADMINPW" = "" ]; then 539 ADMINPW="$SE3PW" 540 fi 541 542 # Test de contact de l'annuaire sous l'identité saisie: 543 if [ "$LDAPIP" != "$SE3IP" ]; then 544 echo -e "$COLCMD" 545 #if ! ldapsearch -xLLL -h $LDAPIP $ADMINRDN > /dev/null; then 546 if ! ldapsearch -xLLL -h $LDAPIP -b $BASEDN > /dev/null; then 547 echo -e "${COLERREUR}" 548 echo "ERREUR:" 549 echo -e "$COLTXT\c " 550 echo -e " Il semble que l'annuaire sur ${COLINFO}${LDAPIP}${COLTXT} n'ait pas pu être consulté" 551 echo -e " en anonyme." 552 echo -e " L'adresse IP du LDAP et le BASEDN sont-ils corrects?" 553 REPONSE="" 554 while [ "$REPONSE" != "o" -a "$REPONSE" != "n" ] 555 do 556 echo -e "$COLTXT" 557 echo -e "Voulez-vous corriger votre saisie? (${COLCHOIX}o/n${COLTXT}) $COLSAISIE\c " 558 read REPONSE 559 done 560 else 561 # Pas d'erreur en anonyme 562 REPONSE="n" 563 fi 564 if [ "$REPONSE" = "n" ]; then 565 echo -e "$COLCMD\c " 566 #if ! ldapsearch -xLLL -h $LDAPIP -D "$ADMINRDN,$BASEDN" -w $ADMINPW $ADMINRDN > /dev/null; then 567 if ! ldapsearch -xLLL -h $LDAPIP -D "$ADMINRDN,$BASEDN" -w $ADMINPW -b $BASEDN > /dev/null; then 568 echo -e "${COLERREUR}" 569 echo "ERREUR:" 570 echo -e "$COLTXT\c " 571 echo -e " Il semble que l'annuaire sur ${COLINFO}${LDAPIP}${COLTXT} n'ait pas pu être consulté" 572 echo -e " en se présentant comme administrateur du LDAP" 573 echo -e " (problème de compte/mot de passe?)." 574 echo "" 575 rep="" 576 while [ "$rep" != "o" -a "$rep" != "n" ] 577 do 578 echo -e "$COLTXT" 579 echo -e "Voulez-vous corriger votre saisie? (${COLCHOIX}o/n${COLTXT}) $COLSAISIE\c " 580 read rep 581 done 582 else 583 rep="n" 584 fi 585 else 586 # Correction à faire. 587 # Un tour de plus dans la boucle. 588 rep="o" 589 fi 590 else 591 # L'annuaire est encore vide. 592 # Il va être mis en place sur le SE3 lui-même: 593 rep="n" 594 fi 595 done 596 PEOPLERDN="People" 597 GROUPSRDN="Groups" 598 COMPUTERSRDN="Computers" 599 PARCSRDN="Parcs" 600 RIGHTSRDN="Rights" 601 PRINTERSRDN="Printers" 602 TRASHRDN="Trash" 603 604 fi 605 606 607 echo -e "$COLCMD\c " 608 # Renseignement de la base de données à partir des entrées fournies 609 echo "UPDATE params SET value=\"$LDAPIP\" WHERE name=\"ldap_server\""|mysql -h $MYSQLIP se3db -u se3db_admin -p$SE3PW 610 echo "UPDATE params SET value=\"$BASEDN\" WHERE name=\"ldap_base_dn\""|mysql -h $MYSQLIP se3db -u se3db_admin -p$SE3PW 611 echo "UPDATE params SET value=\"$ADMINRDN\" WHERE name=\"adminRdn\""|mysql -h $MYSQLIP se3db -u se3db_admin -p$SE3PW 612 echo "UPDATE params SET value=\"$ADMINPW\" WHERE name=\"adminPw\""|mysql -h $MYSQLIP se3db -u se3db_admin -p$SE3PW 613 echo "UPDATE params SET value=\"ou=$PEOPLERDN\" WHERE name=\"peopleRdn\""|mysql -h $MYSQLIP se3db -u se3db_admin -p$SE3PW 614 echo "UPDATE params SET value=\"ou=$GROUPSRDN\" WHERE name=\"groupsRdn\""|mysql -h $MYSQLIP se3db -u se3db_admin -p$SE3PW 615 echo "UPDATE params SET value=\"ou=$COMPUTERSRDN\" WHERE name=\"computersRdn\""|mysql -h $MYSQLIP se3db -u se3db_admin -p$SE3PW 616 echo "UPDATE params SET value=\"ou=$PARCSRDN\" WHERE name=\"parcsRdn\""|mysql -h $MYSQLIP se3db -u se3db_admin -p$SE3PW 617 echo "UPDATE params SET value=\"ou=$RIGHTSRDN\" WHERE name=\"rightsRdn\""|mysql -h $MYSQLIP se3db -u se3db_admin -p$SE3PW 618 echo "UPDATE params SET value=\"ou=$PRINTERSRDN\" WHERE name=\"printersRdn\""|mysql -h $MYSQLIP se3db -u se3db_admin -p$SE3PW 619 echo "UPDATE params SET value=\"ou=$TRASHRDN\" WHERE name=\"trashRdn\""|mysql -h $MYSQLIP se3db -u se3db_admin -p$SE3PW 620 fi 621 fi 622 623 # Lecture des paramètres LDAP depuis la base de données 624 # au cas où la section 2 aurait été zappée 625 626 if [ "$MYSQLIP" = "" ]; then 627 echo -e "$COLTXT" 628 echo -e "Entrez l'adresse de la base MySQL [${COLDEFAUT}localhost${COLTXT}] $COLSAISIE\c " 629 read MYSQLIP 630 if [ "$MYSQLIP" = "" ]; then 631 MYSQLIP="localhost" 632 fi 633 634 echo -e "$COLTXT" 635 echo -e "Entrez le mot de passe Administrateur SambaEdu3 (Non trivial SVP)" 636 echo -e "SE3PW: $COLSAISIE\c " 637 read SE3PW 638 fi 639 echo -e "$COLCMD" 640 LDAPIP=`echo "SELECT value FROM params WHERE name='ldap_server'" | mysql -h $MYSQLIP se3db -u se3db_admin -p$SE3PW -N` 641 BASEDN=`echo "SELECT value FROM params WHERE name='ldap_base_dn'" | mysql -h $MYSQLIP se3db -u se3db_admin -p$SE3PW -N` 642 643 DN_BASEDN=`echo "SELECT value FROM params WHERE name='ldap_base_dn'" | mysql -h $MYSQLIP se3db -u se3db_admin -p$SE3PW -N | cut -d',' -f1` 644 ADMINRDN=`echo "SELECT value FROM params WHERE name='adminRdn'" | mysql -h $MYSQLIP se3db -u se3db_admin -p$SE3PW -N` 645 ADMINPW=`echo "SELECT value FROM params WHERE name='adminPw'" | mysql -h $MYSQLIP se3db -u se3db_admin -p$SE3PW -N` 646 PEOPLERDN=`echo "SELECT value FROM params WHERE name='peopleRdn'" | mysql -h $MYSQLIP se3db -u se3db_admin -p$SE3PW -N` 647 GROUPSRDN=`echo "SELECT value FROM params WHERE name='groupsRdn'" | mysql -h $MYSQLIP se3db -u se3db_admin -p$SE3PW -N` 648 RIGHTSRDN=`echo "SELECT value FROM params WHERE name='rightsRdn'" | mysql -h $MYSQLIP se3db -u se3db_admin -p$SE3PW -N` 649 COMPUTERSRDN=`echo "SELECT value FROM params WHERE name='computersRdn'" | mysql -h $MYSQLIP se3db -u se3db_admin -p$SE3PW -N` 650 PARCSRDN=`echo "SELECT value FROM params WHERE name='parcsRdn'" | mysql -h $MYSQLIP se3db -u se3db_admin -p$SE3PW -N` 651 PRINTERSRDN=`echo "SELECT value FROM params WHERE name='printersRdn'" | mysql -h $MYSQLIP se3db -u se3db_admin -p$SE3PW -N` 652 TRASHRDN=`echo "SELECT value FROM params WHERE name='trashRdn'" | mysql -h $MYSQLIP se3db -u se3db_admin -p$SE3PW -N` 653 654 echo $ADMINPW >$LDAPSECRET 655 656 # Mise en place de la versionSE3 657 658 VERSION=`cat version` 659 #echo "INSERT INTO params VALUES ('', 'version', '$VERSION', 0, 'No version SambaEdu', 4)" | mysql -h $MYSQLIP se3db -u se3db_admin -p$SE3PW 660 REJ=`echo "SELECT value FROM params WHERE name='registred'" | mysql -h $MYSQLIP se3db -u se3db_admin -p$SE3PW -N` 661 if [ -z "$REJ" ]; then 662 echo "INSERT INTO params VALUES ('', 'registred', '0', 0, 'Enregistrement du serveur', 4)" | mysql -h $MYSQLIP se3db -u se3db_admin -p$SE3PW 663 fi 664 if [ "$SMBCONFIN" = "smb_3.conf.in" ]; then 665 echo "INSERT INTO params VALUES ('', 'smbversion', 'samba3', 0, 'version de Samba', 6)" | mysql -h $MYSQLIP se3db -u se3db_admin -p$SE3PW 666 fi 667 668 if [ "$SLAPD_AUTOCONF" = "yes" ]; then 669 echo -e "$COLPARTIE" 670 echo "Section 3: " 671 echo "---------- " 672 echo -e "$COLTXT\c " 673 echo -e "Configuration automatique de SLAPD sur le serveur SE3...." 674 rep="y" 675 sleep 2 676 else 677 echo -e "$COLTITRE\c " 678 echo "Récapitulatif de la configuration LDAP" 679 echo "--------------------------------------" 680 echo -e "$COLINFO\c " 681 echo "Adresse de l'annuaire: $LDAPIP" 682 echo "DN de l'administrateur: $ADMINRDN,$BASEDN ($ADMINPW)" 683 echo "Branche People: $PEOPLERDN,$BASEDN" 684 echo "Branche Groups: $GROUPSRDN,$BASEDN" 685 echo "Branche Computers: $COMPUTERSRDN,$BASEDN" 686 echo "Branche Parcs: $PARCSRDN,$BASEDN" 687 echo "Branche Rights: $RIGHTSRDN,$BASEDN" 688 echo "Branche Printers: $PRINTERSRDN,$BASEDN" 689 echo "Branche Trash: $TRASHRDN,$BASEDN" 690 echo -e "$COLTXT\c " 691 echo -e "Ces renseignements sont-ils corrects ? (${COLCHOIX}O/n${COLTXT}) $COLSAISIE\c " 692 read rep 693 if [ "$rep" = "n" ]; then 694 echo -e "$COLTXT" 695 exit 1 696 fi 697 698 # 699 # Paramétrage du serveur LDAP sur le serveur SE3 700 # 701 702 echo -e "$COLPARTIE" 703 echo "Section 3: " 704 echo "---------- " 705 echo -e "$COLTXT\c " 706 echo -e "Voulez-vous configurer le service SLAPD sur le serveur SE3 ? (${COLCHOIX}O/n${COLTXT}) $COLSAISIE\c " 707 read rep 708 fi 709 710 if [ ! "$rep" = "n" ]; then 711 # Configuration du slapd 712 echo -e "$COLCMD\c " 713 $INITDSLAPD stop 714 if [ ! -d /var/lib/ldap ]; then 715 mkdir /var/lib/ldap 716 chown openldap:openldap /var/lib/ldap 717 else 718 cp -a /var/lib/ldap /var/lib/ldap.se3sav 719 fi 720 /usr/share/se3/scripts/mkSlapdConf.sh installinit 721 # cat conf/$SLAPDCONFIN | sed -e "s/#SCHEMADIR#/$SCHEMADIR/g" | sed -e "s/#BASEDN#/$BASEDN/g" | sed -e "s/#ADMINRDN#/$ADMINRDN/g" | sed -e "s/#ADMINPW#/$ADMINPW/g" > $SLAPDCONF 722 723 # Prise en compte des lignes spécifiques à la version 2.1.x backportée 724 725 # chmod 640 $SLAPDCONF 726 # chown root.$LDAPGRP $SLAPDCONF 727 # pour bypasser le nouveau mode de conf slapd 728 mv /etc/ldap/slapd.d /etc/ldap/slapd.d.se3 729 /usr/sbin/slapindex 2>/dev/null 730 chown openldap.openldap /var/lib/ldap/* 731 $INITDSLAPD start 732 if [ "$?" != "0" ]; then 733 echo -e "$COLERREUR Erreur lors du lancement de ldap - impossible de poursuivre" 734 echo -e "$COLTXT\c " 735 exit 1 736 fi 737 sleep 2 738 echo "UPDATE params SET value=\"/etc/$SLAPDIR/slapd.conf\" WHERE name=\"path2slapdconf\""|mysql -h $MYSQLIP se3db -u se3db_admin -p$SE3PW 739 fi 740 741 # 742 # Ecriture dans l'annuaire des branches et entrées nécessaires à SambaEdu3 743 # 744 if [ "$SLAPD_AUTOCONF" = "yes" ]; then 745 rep="y" 746 echo -e "$COLPARTIE" 747 echo "Section 4: " 748 echo "---------- " 749 echo -e "$COLTXT\c " 750 echo -e "Intégration des données dans l'annuaire...." 751 sleep 2 752 else 753 echo -e "$COLPARTIE" 754 echo "Section 4: " 755 echo "---------- " 756 echo -e "$COLTXT\c " 757 echo -e "Voulez-vous intégrer les entrées SambaEdu3 à l'annuaire ? (${COLCHOIX}O/n${COLTXT}) $COLSAISIE\c " 758 read rep_1T 759 fi 760 761 762 if [ ! "$rep_1T" = "n" ]; then 763 echo -e "$COLCMD\c " 764 # Suppression des ou= dans les noms des branches 765 ADMINR=`echo $ADMINRDN |cut -d , -f 1 |cut -d = -f 2` 766 PEOPLER=`echo $PEOPLERDN |cut -d = -f 2` 767 GROUPSR=`echo $GROUPSRDN |cut -d = -f 2` 768 COMPUTERSR=`echo $COMPUTERSRDN |cut -d = -f 2` 769 PARCSR=`echo $PARCSRDN |cut -d = -f 2` 770 RIGHTSR=`echo $RIGHTSRDN |cut -d = -f 2` 771 PRINTERSR=`echo $PRINTERSRDN |cut -d = -f 2` 772 773 # Lecture de defaultgid pour attribution a admin 774 775 defaultgid=`echo "SELECT value FROM params WHERE name='defaultgid'" | mysql -h $MYSQLIP se3db -u se3db_admin -p$SE3PW -N` 776 777 # test le type de BASEDN 778 cp ldif/top.ldif /tmp/ 779 TYPE_DN=`echo $DN_BASEDN | cut -d = -f 1` 780 if [ "$TYPE_DN" = "ou" ] 781 then 782 echo "ObjectClass: organizationalUnit" >> /tmp/top.ldif 783 fi 784 if [ "$TYPE_DN" = "dc" ] 785 then 786 echo "ObjectClass: Domain" >> /tmp/top.ldif 787 fi 788 789 DN_DC=`echo $DN_BASEDN | cut -d = -f 2` 790 echo "$TYPE_DN: $DN_DC" >> /tmp/top.ldif 791 792 # Mise en place des entrées dans l'annuaire 793 cat /tmp/top.ldif | sed -e "s/#BASEDN#/$BASEDN/g" | ldapadd -x -D "$ADMINRDN,$BASEDN" -w $ADMINPW 794 cat ldif/People.ldif | sed -e "s/#BASEDN#/$BASEDN/g" | sed -e "s/#PEOPLE#/$PEOPLER/g" | ldapadd -x -D "$ADMINRDN,$BASEDN" -w $ADMINPW 795 cat ldif/cnadmin.ldif | sed -e "s/#BASEDN#/$BASEDN/g" | sed -e "s/#ADMINRDN#/$ADMINRDN/g" | sed -e "s/#ADMINR#/$ADMINR/g" | ldapadd -x -D "$ADMINRDN,$BASEDN" -w $ADMINPW 796 cat ldif/Groups.ldif | sed -e "s/#BASEDN#/$BASEDN/g" | sed -e "s/#GROUPS#/$GROUPSR/g" | ldapadd -x -D "$ADMINRDN,$BASEDN" -w $ADMINPW 797 cat ldif/admins.ldif | sed -e "s/#BASEDN#/$BASEDN/g" | sed -e "s/#GROUPS#/$GROUPSR/g" | ldapadd -x -D "$ADMINRDN,$BASEDN" -w $ADMINPW 798 cat ldif/lcs-users.ldif | sed -e "s/#BASEDN#/$BASEDN/g" | sed -e "s/#GROUPS#/$GROUPSR/g" | ldapadd -x -D "$ADMINRDN,$BASEDN" -w $ADMINPW 799 cat ldif/Eleves.ldif | sed -e "s/#BASEDN#/$BASEDN/g" | sed -e "s/#GROUPS#/$GROUPSR/g" | ldapadd -x -D "$ADMINRDN,$BASEDN" -w $ADMINPW 800 cat ldif/Profs.ldif | sed -e "s/#BASEDN#/$BASEDN/g" | sed -e "s/#GROUPS#/$GROUPSR/g" | ldapadd -x -D "$ADMINRDN,$BASEDN" -w $ADMINPW 801 cat ldif/Administration.ldif | sed -e "s/#BASEDN#/$BASEDN/g" | sed -e "s/#GROUPS#/$GROUPSR/g" | ldapadd -x -D "$ADMINRDN,$BASEDN" -w $ADMINPW 802 cat ldif/machines.ldif | sed -e "s/#BASEDN#/$BASEDN/g" | sed -e "s/#GROUPS#/$GROUPSR/g" | ldapadd -x -D "$ADMINRDN,$BASEDN" -w $ADMINPW 803 cat ldif/Computers.ldif | sed -e "s/#BASEDN#/$BASEDN/g" | sed -e "s/#COMPUTERS#/$COMPUTERSR/g" | ldapadd -x -D "$ADMINRDN,$BASEDN" -w $ADMINPW 804 cat ldif/Parcs.ldif | sed -e "s/#BASEDN#/$BASEDN/g" | sed -e "s/#PARCS#/$PARCSR/g" | ldapadd -x -D "$ADMINRDN,$BASEDN" -w $ADMINPW 805 cat ldif/RightsRoot.ldif | sed -e "s/#BASEDN#/$BASEDN/g" | sed -e "s/#RIGHTS#/$RIGHTSR/g" | ldapadd -x -D "$ADMINRDN,$BASEDN" -w $ADMINPW 806 cat ldif/rights.ldif | sed -e "s/#BASEDN#/$BASEDN/g" | sed -e "s/#RIGHTS#/$RIGHTSR/g" | sed -e "s/#GROUPS#/$GROUPSR/g"| sed -e "s/#PEOPLE#/$PEOPLER/g" | ldapadd -x -c -D "$ADMINRDN,$BASEDN" -w $ADMINPW 807 cat ldif/printers.ldif | sed -e "s/#BASEDN#/$BASEDN/g" | sed -e "s/#PRINTERS#/$PRINTERSR/g" | ldapadd -x -c -D "$ADMINRDN,$BASEDN" -w $ADMINPW 808 fi 809 810 # 811 # Mise en place de Samba, enfin... 812 # 813 if [ ! -z "$(ldapsearch -xLLL sambaDomainName=* sambaDomainName | 814 grep '^sambaDomainName: ' | sed -e 's/^sambaDomainName: //')" ]; then 815 echo "AVERTISSEMENT: ..." 816 echo "Un Domaine déjà existant dans l'annuaire a été trouvé:" 817 ldapsearch -xLLL sambaDomainName=* sambaDomainName | 818 grep '^sambaDomainName: ' | sed -e 's/^sambaDomainName: //' 819 TAB_DEFAULT_DOMAIN=($(ldapsearch -xLLL sambaDomainName=* sambaDomainName | 820 grep '^sambaDomainName: ' | sed -e 's/^sambaDomainName: //')) 821 DEFAULT_DOMAIN=${TAB_DEFAULT_DOMAIN[0]} 822 else 823 DEFAULT_DOMAIN="SAMBAEDU3" 824 fi 825 826 827 if [ "$SMB_AUTOCONF" = "yes" ]; then 828 rep="y" 829 echo -e "$COLPARTIE" 830 echo "Section 5: " 831 echo "---------- " 832 echo -e "$COLTXT\c " 833 echo -e "Configuration automatique de Samba ...." 834 sleep 2 835 else 836 837 echo -e "$COLPARTIE" 838 echo "Section 5: " 839 echo "---------- " 840 echo -e "$COLTXT\c " 841 echo -e "Voulez-vous configurer Samba ? (${COLCHOIX}O/n${COLTXT}) $COLSAISIE\c " 842 read rep 843 fi 844 845 846 if [ ! "$rep" = "n" ]; then 847 if [ "$SMB_AUTOCONF" != "yes" ]; then 848 849 # Configuration du samba 850 echo -e "$COLTXT" 851 echo -e "Entrez le nom du domaine NT [${COLDEFAUT}${DEFAULT_DOMAIN}${COLTXT}] $COLSAISIE\c " 852 read NTDOM 853 if [ "$NTDOM" = "" ]; then 854 NTDOM="$DEFAULT_DOMAIN" 855 fi 856 857 echo -e "$COLTXT" 858 echo -e "Entrez le nom netbios du serveur SE3 [${COLDEFAUT}se3${COLTXT}] $COLSAISIE\c " 859 read NETBIOS 860 if [ "$NETBIOS" = "" ]; then 861 NETBIOS="se3" 862 fi 863 864 if [ "$SE3IP" = "" ]; then 865 echo -e "$COLTXT" 866 echo -e "Entrez l'adresse IP du serveur SE3 [${COLDEFAUT}$IPADDR${COLTXT}] $COLSAISIE\c " 867 read SE3IP 868 if [ "$SE3IP" = "" ]; then 869 SE3IP=$IPADDR 870 fi 871 fi 872 873 874 echo -e "$COLTXT" 875 echo -e "Entrez le nom de votre interface reseau [${COLDEFAUT}${ECARD}${COLTXT}] $COLSAISIE\c " 876 read SE3ECARD 877 878 NETMASK=`/sbin/ifconfig $ECARD |grep inet |cut -d \ -f 16 | cut -d : -f 2` 879 echo -e "$COLTXT" 880 echo -e "Entrez le masque de sous-réseau [${COLDEFAUT}$NETMASK${COLTXT}] $COLSAISIE\c " 881 read SE3MASK 882 if [ "$SE3MASK" = "" ]; then 883 SE3MASK=$NETMASK 884 fi 885 fi 886 887 if [ "$SE3ECARD" = "" ]; then 888 SE3ECARD="$ECARD" 889 fi 890 891 if [ "$NTDOM" != "$DEFAULT_DOMAIN" -a "$DEFAULT_DOMAIN" != "SAMBAEDU3" ]; then 892 ldapdelete -x -D $ROOTDN -w $PASSDN sambaDomainName=$sambaDomainName,$BASEDN 893 fi 894 895 echo -e "$COLTXT" 896 echo "Mise en place de la configuration Samba..." 897 echo -e "$COLCMD\c " 898 $INITDSAMBA stop 899 CHARSET="UTF-8" 900 sed -e "s/#IPSERVEUR#/$SE3IP/g;s/#MASK#/$SE3MASK/g;s/#NETBIOSNAME#/$NETBIOS/g;s/#DOMAIN#/$NTDOM/g;s/#SLAPDIP#/$LDAPIP/g;s/#BASEDN#/$BASEDN/g;s/#ADMINRDN#/$ADMINRDN/g;s/#ADMINPW#/$ADMINPW/g;s/#PEOPLE#/$PEOPLERDN/g;s/#GROUPS#/$GROUPSRDN/g;s/#COMPUTERS#/$COMPUTERSRDN/g;s/#CHARSET#/$CHARSET/g" conf/$SMBCONFIN > $SMBCONF 901 smbpasswd -w $ADMINPW 902 903 echo -e "$COLTXT" 904 echo "Démarrage du serveur Samba..." 905 echo -e "$COLCMD\c " 906 $INITDSAMBA start 907 # Renseignement du SID du domaine 908 # Et Renseignement des comptes root et admin samba 909 echo -e "$COLTXT" 910 echo "Renseignement du SID du domaine, des comptes root et admin Samba..." 911 echo -e "$COLCMD\c " 912 let gid1=2*$defaultgid+1001 913 DOMAINSID=`net getlocalsid 2>/dev/null | cut -d: -f2 | sed -e "s/ //g"` 914 if [ ! "$rep_1T" = "n" ]; then 915 cat ldif/root.ldif | sed -e "s/#BASEDN#/$BASEDN/g" > ldif/root.ldif.2 916 cat ldif/admin.ldif | sed -e "s/#BASEDN#/$BASEDN/g" | sed -e "s/#PEOPLE#/$PEOPLER/g" | sed -e "s/#DOMAIN#/$DOMNAME/g" | sed -e "s/#DEFAULTGID#/$defaultgid/g" | sed -e "s/#GID1#/$gid1/g" >>ldif/root.ldif.2 917 /usr/share/se3/sbin/convertSambaAccount --sid $DOMAINSID --input ldif/root.ldif.2 --output /root/root.ldif.3 918 ldapadd -x -c -D "$ADMINRDN,$BASEDN" -w $ADMINPW -f /root/root.ldif.3 919 sed -e "s/#BASEDN#/$BASEDN/g;s/#DOMAINSID#/$DOMAINSID/g;s/#GROUPS#/$GROUPSR/g;s/#PEOPLE#/$PEOPLERDN/g" ldif/Samba.ldif > /root/Samba.ldif 920 ldapadd -x -c -D "$ADMINRDN,$BASEDN" -w $ADMINPW -f /root/Samba.ldif 921 922 echo -e "$COLTXT" 923 echo "Mappage des groupes..." 924 echo -e "$COLCMD\c " 925 # ajout dbo pour mappage des groupes de bases 926 net groupmap add sid=$DOMAINSID-512 ntgroup=Admins unixgroup=admins type=domain comment="Administrateurs du domaine" 927 net groupmap add ntgroup=Eleves unixgroup=Eleves type=domain comment="Eleves du domaine" 928 net groupmap add ntgroup=Profs unixgroup=Profs type=domain comment="Profs du domaine" 929 net groupmap add ntgroup="Utilisateurs du domaine" rid="513" unixgroup="lcs-users" type="domain" 930 net groupmap add ntgroup="machines" rid="515" unixgroup="machines" type="domain" 931 932 echo "UPDATE params SET value=\"$NTDOM\" WHERE name=\"se3_domain\""|mysql -h $MYSQLIP se3db -u se3db_admin -p$SE3PW 933 echo "UPDATE params SET value=\"$NETBIOS\" WHERE name=\"netbios_name\""|mysql -h $MYSQLIP se3db -u se3db_admin -p$SE3PW 934 echo "UPDATE params SET value=\"$SE3IP\" WHERE name=\"se3ip\""|mysql -h $MYSQLIP se3db -u se3db_admin -p$SE3PW 935 echo "UPDATE params SET value=\"$SE3MASK\" WHERE name=\"se3mask\""|mysql -h $MYSQLIP se3db -u se3db_admin -p$SE3PW 936 echo "UPDATE params SET value=\"$SE3ECARD\" WHERE name=\"ecard\""|mysql -h $MYSQLIP se3db -u se3db_admin -p$SE3PW 937 938 fi 939 /usr/share/se3/sbin/userChangePwd.pl admin $SE3PW 940 DS=`echo "SELECT value FROM params WHERE name='domainsid'" | mysql -h $MYSQLIP se3db -u se3db_admin -p$SE3PW -N` 941 if [ -z "$DS" ]; then 942 echo "INSERT INTO params VALUES ('', 'domainsid', \"$DOMAINSID\", 0, 'SID du domaine Samba', 4)" | mysql -h $MYSQLIP se3db -u se3db_admin -p$SE3PW 943 else 944 echo "UPDATE params SET value=\"$DOMAINSID\" WHERE name=\"domainsid\""|mysql -h $MYSQLIP se3db -u se3db_admin -p$SE3PW 945 fi 946 947 # Saisie de l'entrée du PDC dans Computers 948 echo -e "$COLTXT" 949 echo "Ajout de l'entrée du PDC dans la branche Computers..." 950 echo -e "$COLCMD\c " 951 COMPUTERSR=`echo $COMPUTERSRDN |cut -d = -f 2` 952 LDAP_MASTER=`ldapsearch -xLLL -b $COMPUTERSRDN,$BASEDN "(&(l=maitre)("'!'"(ipHostnumber=$SE3IP)))"` 953 954 if [ -z "$LDAP_MASTER" ]; then 955 cat ldif/se3pdc.ldif | sed -e "s/#BASEDN#/$BASEDN/g" | sed -e "s/#COMPUTERS#/$COMPUTERSR/g" | sed -e "s/#NETBIOSNAME#/$NETBIOS/g" | sed -e "s/#IPSERVEUR#/$SE3IP/g" | ldapadd -x -D "$ADMINRDN,$BASEDN" -w $ADMINPW 956 else 957 cat ldif/se3pdc.ldif | sed -e "s/#BASEDN#/$BASEDN/g" | sed -e "s/#COMPUTERS#/$COMPUTERSR/g" | sed -e "s/#NETBIOSNAME#/$NETBIOS/g" | sed -e "s/#IPSERVEUR#/$SE3IP/g" | sed -e "s/maitre/secondaire/" | sed -e "s/Maitre/Secondaire/" | ldapadd -x -D "$ADMINRDN,$BASEDN" -w $ADMINPW 958 echo "${COLINFO}Attention, il y a déjà un serveur déclaré maitre dans l'annuaire. Se3 sera enregistré comme serveur secondaire dans le ldap" 959 echo "$COLTXT" 960 fi 961 962 #relancer le serveur cups 963 echo -e "$COLTXT" 964 echo "Redémarrage de CUPS..." 965 echo -e "$COLCMD\c " 966 [ -f /etc/init.d/cupsys ] && /etc/init.d/cupsys restart 967 [ -f /etc/init.d/cups ] && /etc/init.d/cups restart 968 969 # install trombine 970 971 # 972 973 # Génération clé rsa root 974 if [ ! -e /root/.ssh/id_rsa.pub ]; then 975 ssh-keygen -t rsa -N "" -f /root/.ssh/id_rsa -q 976 fi 977 cp /root/.ssh/id_rsa.pub /var/se3/Progs/install/ 978 979 980 fi 981 982 # keyser ajout demandé par le ploufon - pour la sauvegarde de secret.tdb 983 cp -a /var/lib/samba/secrets.tdb /etc/save/ 984 985 # keyser modif du 4/4/05 - Config en fonction des serveur LCS / SLIS 986 987 # if [ "$IFACEWEB_AUTOCONF" = "yes" ]; then 988 989 990 if [ "$IFACEWEB_AUTOCONF" = "yes" -a "$LCS_IP" != "" ]; then 991 992 echo -e "$COLPARTIE" 993 echo "Section 6: " 994 echo "---------- " 995 echo -e "$COLTXT\c " 996 echo -e "Configuration automatique du positionnement de l'IP LCS dans MySQL...\c " 997 sleep 1 998 echo "UPDATE params SET value=\"$LCS_IP\" WHERE name=\"lcsip\""|mysql -h $MYSQLIP se3db -u se3db_admin -p$SE3PW 999 1000 else 1001 1002 echo -e "$COLPARTIE" 1003 echo "Section 6: " 1004 echo "---------- " 1005 echo -e "$COLTXT\c " 1006 echo -e "Présence éventuelle de SLIS ou LCS ...\n" 1007 IPOK="NO" 1008 REPONSE="" 1009 [ "$LCS_OU_SLIS" = "no" ] && REPONSE="3" 1010 while [ "$REPONSE" != "1" -a "$REPONSE" != "2" -a "$REPONSE" != "3" ] 1011 do 1012 echo -e "$COLTXT\c " 1013 echo -e "Quel type de serveur de communication avez-vous sur votre réseau ?\n" 1014 echo -e "$COLTXT\c " 1015 echo -e " ${COLTXT}(${COLCHOIX}1${COLTXT}) Un SLIS\n " 1016 echo -e " ${COLTXT}(${COLCHOIX}2${COLTXT}) Un LCS\n " 1017 echo -e " ${COLTXT}(${COLCHOIX}3${COLTXT}) Vous n'avez pas de tel serveur de communication\n " 1018 echo -e "$COLTXT\c " 1019 echo -e "Votre choix: $COLSAISIE\c " 1020 read REPONSE 1021 1022 case $REPONSE in 1023 1) 1024 while [ "$IPOK" != "o" ] 1025 do 1026 echo -e "${COLTXT}Quelle est l'adresse IP de votre SLIS ? ${COLSAISIE}\c " 1027 read SLIS_IP 1028 echo -e "$COLTXT\c " 1029 echo -e "Votre SLIS a comme IP ${COLINFO}${SLIS_IP}${COLTXT}" 1030 IPOK="" 1031 while [ "$IPOK" != "o" -a "$IPOK" != "n" ] 1032 do 1033 echo -e "$COLTXT\c " 1034 echo -e "Est-ce correct ? (${COLCHOIX}o/n${COLTXT}) ${COLSAISIE}\c " 1035 read IPOK 1036 done 1037 done 1038 echo -e "$COLTXT\c " 1039 echo "Ecriture des informations relatives au SLIS dans MySQL..." 1040 echo -e "$COLCMD\c " 1041 echo "UPDATE params SET value=\"$SLIS_IP\" WHERE name=\"slisip\""|mysql -h $MYSQLIP se3db -u se3db_admin -p$SE3PW 1042 echo "UPDATE params SET value=\"$SLIS_IP\" WHERE name=\"ntpserv\""|mysql -h $MYSQLIP se3db -u se3db_admin -p$SE3PW 1043 echo "UPDATE params SET value=\"http://${SLIS_IP}:2000\" WHERE name=\"slis_url\""|mysql -h $MYSQLIP se3db -u se3db_admin -p$SE3PW 1044 DEFAULTGID="600" 1045 DEFAULTSHELL="/dev/null" 1046 echo "UPDATE params SET value=\"$DEFAULTGID\" WHERE name=\"defaultgid\""|mysql -h $MYSQLIP se3db -u se3db_admin -p$SE3PW 1047 echo "UPDATE params SET value=\"$DEFAULTSHELL\" WHERE name=\"defaultshell\""|mysql -h $MYSQLIP se3db -u se3db_admin -p$SE3PW 1048 ;; 1049 1050 2) 1051 while [ "$IPOK" != "o" ] 1052 do 1053 echo -e "${COLTXT}Quelle est l'adresse IP de votre LCS ? ${COLSAISIE}\c " 1054 read LCS_IP 1055 echo -e "$COLTXT\c " 1056 echo -e "Votre LCS a comme IP ${COLINFO}${LCS_IP}${COLTXT}" 1057 IPOK="" 1058 while [ "$IPOK" != "o" -a "$IPOK" != "n" ] 1059 do 1060 echo -e "$COLTXT\c " 1061 echo -e "Est-ce correct ? (${COLCHOIX}o/n${COLTXT}) ${COLSAISIE}\c " 1062 read IPOK 1063 done 1064 done 1065 echo -e "$COLTXT\c " 1066 echo "Ecriture de l'IP de LCS dans MySQL..." 1067 echo -e "$COLCMD\c " 1068 echo "UPDATE params SET value=\"$LCS_IP\" WHERE name=\"lcsip\""|mysql -h $MYSQLIP se3db -u se3db_admin -p$SE3PW 1069 ;; 1070 1071 3) 1072 echo -e "$COLTXT\c " 1073 echo "Ecriture de l'information dans MySQL..." 1074 echo -e "$COLCMD\c " 1075 echo "UPDATE params SET value=\"http://${SE3IP}:909\" WHERE name=\"urlse3\""|mysql -h $MYSQLIP se3db -u se3db_admin -p$SE3PW 1076 ;; 1077 1078 *) 1079 echo -e "${COLERREUR}\n" 1080 echo "Choix erroné. Veuillez recommencer svp." 1081 echo -e "$COLTXT\c " 1082 ;; 1083 1084 esac 1085 done 1086 1087 fi 1088 1089 [ ! -z `getent group | grep "lcs-users:x:108"` ] && /usr/share/se3/sbin/se3_modif_gidNumber.sh 1090 1091 echo -e "$COLPARTIE" 1092 echo "Section 7: " 1093 echo "---------- " 1094 echo -e "$COLTXT\c " 1095 echo -e "Activation des quotas disques \c " 1096 sleep 1 1097 /usr/share/se3/sbin/install_quotas.sh 1098 1099 ### ajout keyser version 1.0 ### 1100 1101 # ajout des chemins de se3 ds le path de root 1102 echo 'PATH="${PATH}:/usr/share/se3/sbin:/usr/share/se3/scripts"' >> /root/.profile 1103 1104 #Fermeture de ssh sauf pour root 1105 touch /etc/nologin 1106 1107 #Passage aux mots de pass cryptés 1108 /usr/sbin/pwconv 1109 1110 # Droit sur public, certains etab desactivent public, donc on le fait la et pas dans permse3 1111 setfacl -m u::rwx /var/se3/Docs/public 1112 setfacl -m g::rwx /var/se3/Docs/public 1113 setfacl -m o::rwx /var/se3/Docs/public 1114 setfacl -m d:u::rwx /var/se3/Docs/public 1115 setfacl -m d:g::rwx /var/se3/Docs/public 1116 setfacl -m d:o::rwx /var/se3/Docs/public 1117 setfacl -m d:o::rwx /var/se3/Progs/rw 1118 1119 # au cas ou il existerait un ancien fichier pref.js, on le vire.... 1120 rm -f /etc/skel/user/profil/appdata/Mozilla/Firefox/Profiles/default/prefs.js 1121 1122 # Instanciation 1123 echo -e "$COLPARTIE" 1124 echo "Section 8: " 1125 echo "---------- " 1126 echo -e "$COLTXT\c " 1127 echo -e "Instanciation initiale du serveur... \c " 1128 sleep 1 1129 1130 /usr/share/se3/sbin/instance_se3.sh 1131 1132 # Relance apache2se 1133 echo -e "$COLCMD" 1134 /etc/init.d/apache2se restart 1135 /etc/init.d/apache2 restart 1136 echo -e "$COLTXT" 1137 1138 1139 # installation script intégration clients linux - deplace ds se3-domain 1140 echo -e "$COLPARTIE" 1141 echo "Section 9: " 1142 echo "---------- " 1143 echo -e "$COLTXT\c " 1144 echo -e "Configuration du compte adminse3... \c " 1145 sleep 1 1146 1147 1148 XPPASS="$ADMINSE3PW" 1149 #saisir pass si necessaire 1150 # a Faire 1151 if [ -z "$XPPASS" ]; then 1152 # XPPASS=`echo "SELECT value FROM params WHERE name='xppass'" | mysql -h $MYSQLIP se3db -u se3db_admin -p$SE3PW -N` 1153 XPPASS_RDM="$(makepasswd)" 1154 echo -e "${COLTXT}Lors de la jonction au domaine des machines Win 2000/XP, un compte local adminse3 sera créé.\nVeuillez saisir un mot de passe pour ce compte (caractères spéciaux interdits) [${COLDEFAUT}${XPPASS_RDM}${COLTXT}] ${COLSAISIE}" 1155 read XPPASS 1156 echo -e "${COLTXT}" 1157 [ -z "$XPPASS" ] && XPPASS="$XPPASS_RDM" 1158 fi 1159 1160 NEWXPPASS=$(echo "$XPPASS" | sed -e 's/\-//g' | sed -e s'/\$//g' | sed -e 's/\#//g'| sed -e 's/\~//g'| sed -e 's/\&//g') 1161 if [ "$XPPASS" != "$NEWXPPASS" ]; then 1162 echo -e "${COLERREUR}Suppression des caractères interdits :" 1163 echo -e "${COLINFO}Le mot de passe root mysqla été modifié pour $NEWXPPASS" 1164 sleep 2 1165 XPPASS="$NEWXPPASS" 1166 fi 1167 1168 1169 echo "UPDATE params SET value=\"$XPPASS\" WHERE name=\"xppass\""|mysql -h $MYSQLIP se3db -u se3db_admin -p$SE3PW 1170 echo -e "${COLINFO}Le mot de passe adminse3 a été initialisé à $XPPASS dans la BDD" 1171 echo -e "$COLTXT\c " 1172 1173 1174 ### Creation adminse3 dans annuaire et mise en place privileges admin-adminse3 pour mise au domaine 1175 /usr/share/se3/sbin/create_adminse3.sh 1176 1177 echo -e "$COLPARTIE" 1178 echo "Section 10: " 1179 echo "---------- " 1180 echo -e "$COLTXT\c " 1181 echo -e "Mise en place des droits et configuration finale... \c " 1182 sleep 1 1183 ### remise en place des droits par défaut 1184 /usr/share/se3/scripts/permse3 1185 1186 1187 # actualisation du cache des parametres : 1188 /usr/share/se3/includes/config.inc.sh -clpbmsdf 1189 1190 # Lance postinst de nos dependances, ces dernieres ayant besoin de l'execution du script d'install 1191 [ -f /var/lib/dpkg/info/se3-logonpy.postinst ] && /var/lib/dpkg/info/se3-logonpy.postinst configure 1192 [ -f /var/lib/dpkg/info/se3-domain.postinst ] && /var/lib/dpkg/info/se3-domain.postinst configure 1193 1194 #Lancement maj intermediaires si necessaire 1195 cd /var/cache/se3_install/ 1196 ./maj_se.sh 1197 1198 1199 echo -e "$COLTITRE" 1200 echo "Terminé!" 1201 echo -e "$COLTXT"
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Tue Mar 17 22:47:18 2015 | Cross-referenced by PHPXref 0.7.1 |