<strong>yum update “*php*”</strong> <strong>yum install php-pear</strong> <strong>yum install gcc</strong> <strong>pecl install json</strong> <strong>cd /etc/php.d/</strong> <strong>echo “extension=json.so” >> json.ini</strong> <strong>/etc/init.d/httpd restart</strong>
Categoria: Linux
Clonare una macchina VirtualBox
Copiare semplicemente la cartella del server non basta perchè non si possono avere due macchine con lo stesso UUID
Cannot register the hard disk ‘PATH’ with UUID {id goes here} because a hard disk ‘PATH2’ with UUID {same id goes here} already exists in the media registry (‘PATH to XML file’).
C’è un comando da CLI che ci permette di clonare un disco senza problemi :
VBoxManage clonehd “Disk1.vdi” “Disk1_Copy.vdi”
VBoxManage lo trovate all’interno dela cartella di installazione di VirtualBox
Nel caso remoto in cui il problema persista forzare il cambio di UUID con questo comando :
VBoxManage internalcommands setvdiuuid “MyCopy.vdi
Display brightness valore dim video
Ubuntu 10.04 php version da 5.3 a 5.2
L’ultima versione LTS del sistema operativo in uso in azienda prevede nei repository ufficiale l’uso del php versione 5.3.
Purtroppo, in azienda abbiamo dei software che hanno bisogno ancora della versione del php 5.2.
Ecco una rapida soluzione per forzare l’installazione del php dalla 5.3 alla 5.2 utilizzando i reposittory di Karmic :
#!/bin/sh # Script to install PHP 5.2 from 9.10 on 10.04 # And pin it so it does not get updated PKGS=`dpkg -l | grep php | awk '{print $2}'` apt-get remove $PKGS sed s/lucid/karmic/g /etc/apt/sources.list | tee /etc/apt/sources.list.d/karmic.list mkdir -p /etc/apt/preferences.d/ for PACKAGE in $PKGS do echo "Package: $PACKAGE Pin: release a=karmic Pin-Priority: 991 " | tee -a /etc/apt/preferences.d/php done apt-get update apt-get install $PKGS
WhatWeb
WhatWeb è uno strumento per la riga di comando che serve a prendere in brevissimo tempo molte informazioni sull’host interessato.
Gli elementi monitorabili spaziano da semplici aspetti come il server Web fino ad arrivare a quale versione del CMS o quale strumento Javascript di uso comune viene rilevato.
Un utile strumento per verificare quali informazioni esponiamo all’esterno.
L’output del comando è per gli amanti della shell: ecco un esempio :
Vediamo come installarlo su ubuntu e provarlo su qualche sito.
La prima cosa da fare, è scarica il pacchetto da qui
Ed installiamo le librerie :
tar xvfz what* cd ./wh* sudo apt-get install ruby sudo apt-get install libxslt-ruby sudo apt-get install libxslt1-dev sudo apt-get install rubygems sudo apt-get install libopenssl-ruby sudo apt-get install ruby1.8-dev sudo gem install anemone
Script eliminazione vecchi kernel
E con pochi giri di parole ecco a voi :
/bin/bash ls /boot/ | grep vmlinuz | sed "s@vmlinuz-@linux-image-@g" | grep -v `uname -r` > /tmp/kernels.tmp for I in `cat /tmp/kernels.tmp` do aptitude remove $I done rm -f /tmp/kernels.tmp update-grub
Nascondi informazioni sulla versione Apache e sulla versione PHP
Di default Apache manda la propria versione di build ed informaizoni riguardanti i moduli installati (es: mod_php, mod_perl, mod_ssl) in ogni header http.
telnet www.example.com 80 Trying www.example.com.com… Connected to www.example.com. Escape character is ‘^]’. HEAD / HTTP/1.0 <- <strong>Premi Enter un paio di volte</strong> HTTP/1.1 200 OK Date: Fri, 09 Jan 2007 18:18:26 GMT Server: Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.12 with Suhosin-Patch Connection: close Content-Type: text/html; charset=UTF-8 Connection closed by foreign host.
In questo esempio si vede come con un semplice telnet ho scoperto che sistema operativo ho, quale versione del php installata e quale versione di Apache, e questo non è una buona cosa dal punto di vista della sicurezza.
Cosa faccio per disabilitarlo ?
Per disabiltiare l’invio di queste informazioni bisogna cambiare due direttive all’interno del file di configurazione di Apache :
/etc/apache2/apache2.conf
ServerTokens Prod ServerSignature Off
e procedere ad un reload di Apache.
Occhio RELOAD… non RESTART.
Dopo questo passaggio l’output sarà :
HTTP/1.1 200 OK Date: Thu, 13 Jan 2011 10:31:08 GMT <strong>Server: Apache</strong> Last-Modified: Tue, 18 May 2010 13:19:39 GMT ETag: "2b4052-57d-486de318c90c0" Accept-Ranges: bytes Content-Length: 1405 Vary: Accept-Encoding Connection: close Content-Type: text/html
Mostrare file nascosti con pureftpd
I file nascosti sotto ambienti Linux sono proceduti dal .
es: .htaccess
Per mostrarli con pureftpd basta inserire questa regola nel file di configurazione :
sudo echo "yes" > /etc/pure-ftpd/conf/DisplayDotFiles
Settare mysql utf8
Di Default molte distribuzioni Linux , installano mysql con default character set settano a latin1.
Per modificare questo valore e impostarlo in utf8 :
alla fine di [client] section, aggiungi:
default-character-set = utf8
alla fine di [mysqld] section, aggiungi:
character-set-server = utf8
restart mysql
> sudo /etc/init.d/mysql restart
per verificare :
> mysql -u root -p mysql> show variables like '%char%';
dovresti vedere :
+--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+ 8 rows in set (0.00 sec)
default-character-set = utf8
at the end of [mysqld] section, add:
character-set-server = utf8
then restart your mysql server:
> sudo /etc/init.d/mysql restart
and make sure it says OK with
* Starting MySQL database server mysqld
then check if it all works out
> mysql -u root -p mysql> show variables like '%char%';
you should see the following:
+--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+ 8 rows in set (0.00 sec)
Controllo automatico updates al login
Per avere sempre sotto controllo lo stato degli aggioranmenti del mio server, ed averlo sempre sotto controllo facendomelo uscire nello script di logon come nella foto sopra, ho scritto questo semplice programma : updates
#!/bin/bash #La prima condizione e' sempre vera. if [[ $(apt-get update 2>&1 | grep Hit) ]]; then if [[ $(apt-get --simulate upgrade 2>&1 | grep Inst) ]]; then apt-get --simulate upgrade | wc -l > /tmp/updates.txt else echo "No Updates available" > /tmp/updates.txt fi fi
Se ci sono degli aggioranmenti disponibili scrivo in un file di testo il numero degli updates (wx -l ) in un file che per comodità viene posizionato in /tmp/updates.txt
Questo script non va eseguito ad ogni login per non appesantire la macchina visto che il controllo degli update fa un fetch di una serie di pagine web e svariati controlli che impegnano abbastanza il server a livello di I/O.
Meglio eseguirlo una volta sola, per questo è preferibile insierire questo script all’interno di /etc/cron.daily per lanciarlo una volta al giorno, piu’ che sufficiente.
A questo punto possiamo mettere all’interno del nostro script di loging l’otput di /tmp/updates.txt.
Io ho fatto così :
/etc/bash.bashrc :
if [ -f /tmp/updates.txt ];then echo -e "Updates Check :\t\t\t $(more /tmp/updates.txt)";fi