Archivio della categoria 'Open Source'

Attenti ad una grave vulnerabilità di PHPMyAdmin su Debian Etch

Debian, Open Source, Segnalazioni, Tips & tricks, Varie 8 commenti »

Schermata della vulnerabilità di PHPMyAdminDa oltre un mese noto sui miei server dove ancora gira Debian 4.0 (Etch) ripetuti tentativi di accesso ai database MySQL approfittando di una grave vulnerabilità di PHPMyAdmin. So che il problema è già stato segnalato su http://bugs.debian.org, ma ancora non è stata rilasciata alcuna patch. Ne parlo qui perché chi ha un server Etch e non ha debitamente protetto l’accesso al db da localhost possa correre ai ripari prima che accada l’irreparabile – mi si passi il gioco di parole. Leggi il resto »


Grep parade!

Open Source, Principianti, Shell, Sistema, Tips & tricks Nessun commento »

Uno dei comandi più utilizzati quando si amministra un server UNIX o Linux da linea di comando è senza dubbio `grep`. Per chi non lo conoscesse, mi limito a dire che si tratta di uno script efficiente e flessibilissimo in grado di individuare espressioni regolari all’interno di un file o di un output testuale. Il nome del comando è infatti acronimo di “global regular-expression print”. Tutto il resto lo trovate con il solito `man grep`. Per chi invece usa abitualmente grep per i task di amministrazione di ogni giorno, raccolgo qui una serie di esempi d’uso un po’ più evoluti e – magari – insoliti. Potrebbero essere utili a voi come lo sono stati a me in numerose occasioni.

Trova le ricorrenze della sequenza qui, quo AND qua in file.txt:
grep "qui.*quo.*qua" ./file.txt

Trova le ricorrenze di qui OR quo OR qua in file.txt:
grep -P 'qui|quo|qua' ./file.txt

Verifica che un indirizzo email sia formattato correttamente:
echo "info@test.eu" | grep -Ei '\b[a-z0-9]{1,}@*\.(it|eu|com|net|org|tv)\b'

Trova la parola qua in modalità case in-sensitive in ./file.txt:
grep -iw "is" demo_file

Trova gli indirizzi email in test.txt formattati come <qwerty.qwerty@qwerty.com> e rimuove i caratteri di enclosure (< e >):
grep -o '<.*@.*\.*>' ./test.txt | tr -d '<>'

Trova le ricorrenze multiple di qui OR quo OR qua in una stringa di testo:
echo -e "1) qui quo qua\n2) quo qui qua\n3)qui quo qui\n4) qua quo qui\n" | grep -E '(qui|quo|qua).*\1'

Verifica se la stringa passata mediante pipe sia un indirizzo IP o meno (provate passando un indirizzo IP mal formato):
echo "192.168.123.123" | grep -E '\b((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b'

Mostra tutte le righe dell’httpd.conf omettendo le istruzioni commentate:
grep -v -E '^\#|^$' /etc/apache2/httpd.conf

Supponendo che lo script test.sh contenga le seguenti istruzioni:

#!/bin/bash
contatore=1
until [ $contatore -gt 10 ]; do
echo contatore $contatore
let contatore+=1
done

… il comando che segue individua la riga 4 e le 3 righe che seguono:

./test.sh | grep -A 3 -i "contatore 4"

… il comando che segue individua invece tutte le righe tranne quelle contenenti il 4 e il 6:

./test.sh | grep -v -e "4" -e "6"

Il sito Internet ufficiale del progetto grep si trova all’indirizzo http://gnu.org/software/grep/.


Recuperare le product key dei prodotti Microsoft con Magical Jelly Bean Keyfinder

Open Source, Tips & tricks, Windows Nessun commento »

Magical Jelly Bean Keyfinder in azioneSe avete perso il controllo della situazione licenze Windows oppure avete ereditato un cliente che ha messo tutte le licenze OEM in un cassetto senza applicare gli appositi sticker sui rispettivi PC, questo tool gratuito e competamente open source fa al caso vostro: si chiama Magical Jelly Bean Keyfinder ed è una semplicissima applicazione che trova e mostra le product key di tutti i prodotti Microsoft e di gran parte del software di terze parti installato sul PC. Non richiede installazione ed è – come dicevo – completamente open source.

Trovate tutto a questo indirizzo: http://www.magicaljellybean.com/keyfinder/


10 anni di Linux!

Diario di bordo, Open Source, Riflessi(oni) Nessun commento »

10 anni di LinuxOra vi racconto qualcosa che mi riguarda. Per vari motivi – ma principalmente per mancanza di tempo – lo faccio molto raramente, anche tra queste pagine disordinate che dovrebbero in qualche modo parlare di me.

Dieci anni fa lavoravo per una società di Milano con la mansione di consulente informatico da piazzare in outsourcing presso loro clienti. Mi occupavo principalmente di progettazione di interfacce e sviluppo in Visual C++ e avevo seguito una serie di progetti molto interessanti per l’epoca, seguendo dalla A alla Z la realizzazione di una soluzione client-server che sfruttava appieno le funzionalità più avanzate di quello che ai tempi era il migliore database disponibile sul mercato: Oracle.

Insomma, lavoravo con quelle erano considerate allora tecnologie eccellenti, molto richieste dai cacciatori di testa della stramaledetta New Economy. Per me era la naturale conclusione di un lungo percorso: in un modo o nell’altro avevo sempre coltivato – parallelamente agli studi scientifici e umanistici – la mia passione per l’informatica, sin dal primo esordio sul mitico Commodore 64 che ricevetti in regalo nel 1986, anni luce fa. Gli amici lo usavano solo per giocare, per me il divertimento stava invece nella realizzazione di semplici programmi in CBM Basic. Avevo subito il fascino di War Games, come qualsiasi altro maschietto della mia generazione. Leggi il resto »


BergamoSera.com: prove tecniche di web-giornalismo in salsa Open Source

Annunci, Diario di bordo, Novità, Open Source Nessun commento »

Bergamo SeraDa qualche giorno ho rimosso gli .htaccess che impedivano ai non addetti ai lavori l’accesso alle pagine di Bergamo Sera, il nuovo quotidiano online dedicato alla provincia di Bergamo che ho sviluppato per Metropole Media Srl. In un certo senso, questo corrisponde ad una sorta di pubblicazione ufficiosa della testata, anche se in realtà la Redazione di Bergamo Sera non ha emesso alcun annuncio ufficiale e mantiene tuttora in modalità offline alcune delle feature sviluppate appositamente per questo portale. Goggle non ha gradito la presenza degli .htaccess e sta cominciando a rimappare il dominio solamente ora. Prima del lancio ufficiale della testata, dunque, potrebbe passare ancora una manciata di giorni. Ho voluto fare un regalo a chi passa da queste parti, magari in cambio fatemi avere un vostro pensiero su come è organizzata la testata: suggerimenti, consigli e critiche sono sempre bene accette. Ovviamente la testata è già stata registrata presso il Tribunale competente e chi dirige la Redazione ha tutte le carte in regola per farlo: Bergamo Sera è a tutti gli effetti una pubblicazione periodica. A me interessano solo opinioni e commenti sulle funzionalità e layout, qualsiasi altra cosa la potete segnalare direttamente alla Redazione dalla pagina http://www.bergamosera.com/cms/scrivi-alla-redazione/. Una nota importante: l’intero progetto è stato realizzato con tecnologie Open Source.


Ridimensionare bulk con mogrify

Open Source, Principianti, Shell, Tips & tricks 1 commento »

La suite di manipolazione delle immagini bitmap ImageMagick mette a disposizione un tool da linea di comando in grado di farci risparmiare un sacco di tempo. Supponiamo infatti di volere mettere online un certo numero di fotografie per creare una photogallery o un catalogo di prodotti. Ogni immagine deve essere debitamente ridimensionata e compressa a 72dpi, un lavoro che può richiedere da qualche decina di secondi a qualche minuto per ogni singola fotografia, dipende tutto dal grado di esperienza di chi tiene in mano il mouse. Anche nella migliore delle ipotesi,  si tratta di un sacco di tempo, specie se le fotografie da lavorare sono centinaia.

Se però avete a disposizione una qualsiasi distribuzione Linux, non dovete fare altro che sfruttare appieno la potenza del comando mogrify, uno dei tool più utili messi a disposizione da ImageMagick.

È sufficiente copiare le immagini da ridimensionare in una nuova directory:

mkdir thumbs
cp -r *.jpg thumbs

Questa operazione è importante perché mogrify trasforma il file senza conservare il file ‘originale. Ora, se vogliamo ridimensionare tutte le immagini contenute nella directory thumbs in maniera tale che non superino mai le dimensioni di 500×500 pixel, lanciamo il comando:

cd thumbs
mogrify -resize 500x500 *.jpg

Et… voilà! :)


FreeBSD 7.2: la tentazione è forte

Diario di bordo, Novità, Open Source, Recensioni Nessun commento »

Beastie, il diavoletto di FreeBSDQualche giorno fa è stata rilasciata l’ultima fiammante stable release di FreeBSD, senza alcun dubbio il più potente e stabile sistema operativo per ambienti server. Come ho già scritto, questo meraviglioso UNIX è stato per molti anni il mio banco di prova fondamentale, diciamo pure che è il sistema operativo su cui ho meglio affinato le mi tecniche di sysadmin. Tra i miei server ho ancora una manciata di “vecchie” FreeBSD che fanno egregiamente il loro lavoro, senza alcun bisogno di manutenzione né aggiornamento. Una in particolare eroga da oltre 5 anni servizi per una dozzina di clienti: un lustro durante il quale non ho mai avuto necessità di effettuare nemmeno un reboot, se non quelli programmati per le ordinarie verifiche sulla parte hardware.

Sistema operativo apparentemente essenziale, ancora claudicante per quanto concerne il desktop, in ambito server FreeBSD batte nettamente Linux su qualsiasi banchmark, polverizzando ogni record quando si tratta di networking. La sua notorietà per molti è legata solo alla sua presenza sui nuovi sistemi operativi di casa Apple. In realtà moltissimi servizi di fascia corporate vengono erogati su cluster FreeBSD, specie oltre oceano.

Le novità di quest’ultima stable interessano principalmente il boot loader e la userland, ma l’aspetto più interessante che accomuna tutti gli ultimi rilasci dalla 6.2 in avanti è la possibilità di effettuare upgrade in maniera sicura e ragionevolmente semplice grazie a freebsd-update, un tool straordinariamente importante per la diffusione di questo sistema operativo. Anche se non ha ancora raggiunto il grado di automazione di apt-get, per citare il migliore in ambito Linux, freebsd-update è ben ingegnerizzato e molto intuitivo, almeno per chi ha già un minimo di dimestichezza con strumenti di questo tipo.

Ecco uno stralcio dell’annuncio ufficiale della release:

Ken Smith has announced the release of FreeBSD 7.2: “The FreeBSD Release Engineering team is pleased to announce the availability of FreeBSD 7.2-RELEASE. This is the third release from the 7-STABLE branch which improves on the functionality of FreeBSD 7.1 and introduces some new features. Some of the highlights: support for fully transparent use of superpages for application memory; support for multiple IPv4 and IPv6 addresses for jails; csup(1) now supports CVSMode to fetch a complete CVS repository; GNOME updated to 2.26, KDE updated to 4.2.2; sparc64 now supports UltraSparc-III processors. FreeBSD 7.2-RELEASE is now available for the amd64, i386, ia64, pc98, powerpc, and sparc64 architectures.” Read the release announcement and release notes for a detailed list of changes. Download: 7.2-RELEASE-i386-dvd1.iso.gz (1,946MB, MD5, torrent), 7.2-RELEASE-amd64-dvd1.iso.gz (2.009MB, MD5, torrent).

Insomma, FreeBSD è un must assoluto e deve essere provato almeno una volta. E che sia amore a prima vista!


L’albero genealogico di Linux

Copincollato, Novità, Open Source Nessun commento »

L'albero genealogico di LinuxQuella che allego è una tavola sinottica molto dettagliata e ben fatta, realizzata da NPU/Lundqvist per mostrare l’evolversi in parallelo delle innumerevoli distribuzioni Linux esistenti/esistite, nonché la parentela che spesso le lega l’una l’altra. Si tratta di un lavoro che ha, a mio modesto parere, un grande valore scientifico e permette di effettuare la scelta di una distro per un determinato progetto anche (e sottolineo anche) in base alla longevità del progetto, alla sua natura iniziale e al numero di varianti che da essa derivano. Quella che allego è ad oggi la versione più aggiornata (release 9.3) ma, data la natura del progetto, invito a fare visita periodicamente al sito Internet ufficiale dei suoi maintainer, all’indirizzo http://futurist.se/gldt/.


Automatizzare smbpasswd da bash

Open Source, Shell, Sistema, Tips & tricks Nessun commento »

Sarà capitato anche a voi – di avere una musica in testa… – di dover ripristinare un certo numero di utenti Samba dopo l’upgrade di un server o la migrazione da un server ad un altro. Ho trovato un vecchio script che fa tutto il lavoro sporco caricando da un file di testo l’elenco degli utenti da ricreare con le relative password.

Il suo funzionamento è semplicissimo: si tratta in poche parole di una manciata di righe di bash che automatizzano l’interazione con il comando smbpasswd.

Lo script si compone di un primo eseguibile che ammette la sintassi seguente:

multi_smbpasswd.sh -o [add/del] -f [nome del file]

In pratica, per ricreare tutti gli utenti di Samba elencati nel file di configurazione utenti.conf:

multi_smbpasswd.sh -o add -f utenti.conf

Per eliminare tutti gli utenti di Samba elencati nel file di configurazione utenti.conf:

multi_smbpasswd.sh -o del -f utenti.conf

Ecco il codice di multi_smbpasswd.sh:

#!/bin/bash
##########################################################
## This script is here to make adding/subtracting users ##
## to the smbpasswd file easyer etc.                    ##
##########################################################

NO_ARGS=2
E_OPTERROR=65

operation=0
    # 1 = add
    # 2 = del
    # 0 = error.
fillel=0
    # 1 = good file and file location.
    # 0 = error

#########################################################
## Parameters:                                         ##
## -o [options] = The operation to preform. Options are##
##         as follows:                                 ##
##         add = add users to the system               ##
##         del = delete users from the system.         ##
## -f [file_location] = The file that the user names   ##
##           are stored in. must provide               ##
##           the compleate location of the             ##
##           file.                                     ##
#########################################################

#protect outselfs from passing nothing to the script.
if [ "$#" -eq "$NO_ARGS" ]
then  #script needs at least 3 options passed to it, otherwise error out and do nothing.
  echo "Usage: $0 -[switch] [option/file_location]"
  exit $E_OPTERROR
fi

while getopts o:f: Option
do
  case "$Option" in
    o)
      #check the option and fill the operation var.
      if [ "$OPTARG" == "add" ]
      then
        #we are going to add the users.
        operation=1
      elif [ "$OPTARG" == "del" ]
      then
        #we are deleting the users.
        operation=2
      else
        #error out, cause they didn't pass the right option.
        operation=0
        echo "Invaild operation option!"
        exit $E_OPTERROR
      fi
    ;;
    f)
      #check the option to see if the file exsists and that it is none zero.
      if [ -f "$OPTARG" ]
      then
        if [ -s "$OPTARG" ]
        then
          filel=1
          filelocation="$OPTARG"
        else
          filel=0
         echo "File is of zero length! You need to have a list of users in the file!"
          exit $E_OPTERROR
        fi
      else
        filel=0
       echo "File isn't there! You must provide a valid file location!"
        exit $E_OPTERROR
      fi
    ;;
    *)
      break
    ;;
  esac

done
shift $(($OPTIND - 1))

if [ $operation == 1 ]
then
  #we are adding the users.
  for i in $(cat "$filelocation")
  do
    username=$(echo "$i" | cut -d':' -f1)
    password=$(echo "$i" | cut -d':' -f2)
    #create a new unix user before smbpasswd
    useradd $username
    smb-passwd-add $username $password
  done
elif [ $operation == 2 ]
then
  #we are deleting the users out of the system.
  for i in $(cat "$filelocation")
  do
    username=$(echo "$i" | cut -d':' -f1)
    #remove the unix user before smbpasswd
    userdel $username
    smbpasswd -x $username
  done
fi

exit 0

Non è tutto però. Perché possa funzionare lo script richiama una procedura esterna altrettanto semplice che si occupa di immettere i valori prelevati dal file di configurazione nello standard input di smbpasswd. Ecco il codice dello script smb-passwd-add:

#!/usr/bin/expect --
# wrapper to make passwd(1) be non-interactive
# username is passed as 1st arg, passwd as 2nd
# Executable only by root

set password [lindex $argv 1]
spawn /usr/bin/smbpasswd -a [lindex $argv 0]
expect "password:"
send "$password\r"
expect "password:"
send "$password\r"
expect eof

Attenzione!!! Come avete notato questo secondo script si basa su expect, che va quindi installato se volete che funzioni.

Infine, ecco un esempio del file utenti.conf:

utente1:wfwiourfhowirf
utente2:eiuewhifuhwef
utente3:dkjfwskfjhwekj
utente4:woeifjwoerifffj

L’originale si trova a questo indirizzo:

http://www.programmingforums.org/thread6522.html

Ho aggiunto solo un paio di righe per una sommaria sincronizzazione tra utenti Samba e utenti unix.

Spero vi possa servire!


Reimpostare data, ora e timezone su un server Linux

Debian, Localizzazione, Open Source, Shell, Sistema, Tips & tricks Nessun commento »

Il celebre pinguino Tux, logo ufficiale del kernel LinuxCi sono tutorial tanto semplici quanto  intramontabili, veri e propri ever green del bravo informatico che muove i primi passi nel magico mondo dell’amministrazione di sistema. Quelle che seguono sono semplici istruzioni che permettono di reimpostare data, ora e timezone su un server Linux. Li metto a disposizione di un cliente che me ne ha fatto richiesta proprio questa mattina. Onore al merito: gli originali di questi tutorial elementari ma utilissimi si trovano qui e qui.

Reimpostare la data

Per reimpostare solo la data su un server Linux è sufficiente accedere alla linea di comando come root e digitare quanto segue:

# date +%Y%m%d -s "20090217"

Reimpostare l’ora

Per reimpostare solo l’ora su un server Linux è sufficiente accedere alla linea di comando come root e digitare quanto segue:

# date +%T -s "11:12:00"

Reimpostare data e ora

Per reimpostare data e ora su un server Linux è sufficiente accedere alla linea di comando come root e digitare quanto segue:

# date -s "16 FEB 2009 11:12:00"

Reimpostare la Time Zone (soluzione A)

Se state utilizzando Fedora, RHEL o CentOS Linux digitate quanto segue:

# redhat-config-date

Oppure lanciate ‘setup’ e scegliete “Timezone configuration”:

Setup di Red Hat

Reimpostare la Time Zone (soluzione B)

Se utilizzate un’altra distribuzione o se – indipendentemente dalla distribuzione che utilizzate – vi sentite sufficientemente self-confident con Linux da mettere mano ai file di configurazione, procedere come segue:

1) spostatevi in /etc/

# cd /etc

2) create un link simbolico al file che contiene la timezone prescelta

# ln -sf /usr/share/zoneinfo/CET localtime

Reimpostare la Time Zone (soluzione C)

È sempre possibile utilizzare le variabili ambientali per ottenere il cambio della timezone:

$ export TZ=Europe/Rome

In questo caso, le impostazioni saranno valide per tutta la sessione ma saranno perse al primo reboot, a meno che non si aggiunga la stessa istruzione nei file di configurazione che gestitsono le variabili ambientali personalizzate, ma non è una scelta che io mi senta di consigliare, meglio a quel punto utilizzare la soluzione A o la soluzione B.