Dopo le 3 del mattino, due sole categorie di persone sono al lavoro: le prostitute e i programmatori. [Anonimo].
L’obbiettivo di questo post è di aggiungere una shell ssh e il demone ntpd al vostro nas, ma prima di fare ciò è bene capire un po con quale macchina abbiamo a che fare. Il nas LaCie 2Big Network preso come riferimento e su cui è stata eseguita questa procedura ha il firmware ufficiale, distribuito dalla LaCie, aggiornato alla versione 2.2.3.
# cat /proc/cpuinfo Processor : ARM926EJ-S rev 0 (v5l) BogoMIPS : 266.24 Features : swp half thumb fastmult edsp CPU implementer : 0x41 CPU architecture: 5TEJ CPU variant : 0x0 CPU part : 0x926 CPU revision : 0 Cache type : write-back Cache clean : cp15 c7 ops Cache lockdown : format C Cache format : Harvard I size : 32768 I assoc : 1 I line length : 32 I sets : 1024 D size : 32768 D assoc : 1 D line length : 32 D sets : 1024 Hardware : Feroceon Revision : 0000 Serial : 0000000000000000
# cat /proc/version Linux version 2.6.22.7 (root@grp-dash) (gcc version 4.2.1) #1 Thu Apr 9 16:07:45 CEST 2009
# free total used free shared buffers Mem: 61952 60184 1768 0 7384 Swap: 128376 60184 0 128376 Total: 190328 130144
# df -h Filesystem Size Used Available Use% Mounted on rootfs 648.4M 20.2M 595.3M 3% / udev 648.4M 20.2M 595.3M 3% /dev /dev/md0 7.5M 5.9M 1.2M 83% /oldroot udev 10.0M 0 10.0M 0% /oldroot/dev udev 10.0M 0 10.0M 0% /oldroot/dev none 30.3M 0 30.3M 0% /oldroot/dev/shm /dev/md1 167.0M 111.3M 47.1M 70% /oldroot/var/original /dev/md2 648.4M 20.2M 595.3M 3% /oldroot/snapshots unionfs 648.4M 20.2M 595.3M 3% / /dev/md4 930.4G 1.2M 930.4G 0% /home
# cat /proc/partitions major minor #blocks name 8 0 976762584 sda 8 1 1 sda1 8 2 975755970 sda2 8 5 128457 sda5 8 6 8001 sda6 8 7 8001 sda7 8 8 176683 sda8 8 9 674698 sda9 8 10 8001 sda10 8 16 976762584 sdb 8 17 1 sdb1 8 18 975755970 sdb2 8 21 128457 sdb5 8 22 8001 sdb6 8 23 8001 sdb7 8 24 176683 sdb8 8 25 674698 sdb9 8 26 8001 sdb10 31 0 512 mtdblock0 9 0 7936 md0 9 1 176576 md1 9 2 674624 md2 9 3 128384 md3 9 4 975755904 md4
# cat /proc/mtd dev: size erasesize name mtd0: 00080000 00010000 "cfi_flash_0"
Sinteticamente è un sistema operativo linux con un kernel decisamente datato (sic!) compilato per processori con architettura arm, cpu a 400mhz, 64mb di ram (i nuovi modelli hanno 128 mb di ram) e bootloader uboot. Dalle poche informazioni reperite dal sito ufficiale sembra che sia stato usato per costruire il sistema scratcbox e per avviare i servizi e i demoni hanno usato initng al posto di init.d. I problemi che nascono sono molteplici: il reperimento del software già compilato per il sistema (a meno di buttarsi a capofitto nel cross-compiling) compatibile con le versioni di libreria utilizzate dal nas e la creazione degli script di avvio per initng. Anche gli script per initng trovati in rete devono essere modificati un po per farli funzionare sul sistema, dato che gli sviluppatori non hanno rispettato pienamente le specifiche di initng, inserendo tutti gli script *.i nella cartella /etc/initng/
senza effettuare la suddivisione in sottocartelle (deamon per i demoni, net per i servizi di rete, ecc.)
Premessa: Non mi assumo alcuna responsabilità qualora, in seguito alle modifiche effettuate, il vostro sistema smettesse di funzionare correttamente. Vi ricordo, inoltre, che ogni modifica hardware o software al sistema comporta la perdita della garanzia da parte del produttore.
L’accesso al sistema è fondamentale per poter aggiungere al nostro nas uno script bash che esegue dei comandi a nostro piacimento (webshell) o preferibilmente uno script ad hoc per avviare il servizio telnet ed avere una console di root remota.
Ci sono diversi modi per “bucare” il vostro nas, infatti a seconda dei servizi avviati sulla macchina la sicurezza di questo oggetto va decisamente a farsi benedire. Un modo molto semplice per avere accesso al sistema senza smontare fisicamente i dischi è creare una nuova condivisione con un percorso particolare. (vedi più sotto) Avrete così un accesso a tutto il sistema e con i privilegi di amministratore dato che il webserver del nas possiede i diritti di root.
La controparte di questo hacking è che al riavvio della macchina, la condivisione creata viene cambiata dal sistema (meccanismo di protezione??) e rediretta nella vostra condivisione principale, obbligandovi a dover riapplicare la ‘patch’ ogni qualvolta sentite l’esigenza di accedere al vostro sistema linux. Anche la rimozione della nuova condivisione è da eseguire con estrema attenzione. Il mio suggerimento è di rimuovere questa condivisione una volta che si è uppato sul nas il demone telnet e il suo file di avvio (vedi sotto).
Hacking tramite la creazione di una nuova condivisione
- Create una nuova condivisione sul vostro nas di nome “Hack”. La path della condivisione non è importante ciò che importa è che abilitiate almeno la condivisione http.
- Salvare la configurazione xml del vostro nas sul disco (Sistema->Manutenzione->Salva configurazione)
- Fare una copia di backup del file appena salvato (Fatelo! Vi servirà più avanti per rimettere le cose in ordine).
- Editare il file di configurazione xml scaricato modificando la path della condivisione “Hack” come da figura:
Tenete conto le righe del codice xml del vostro file possono differire dall’immagine qui sopra riportata, in relazione al numero di condivisioni della vostra macchina, dagli utenti e dai gruppi.
- Salvare le modifiche e uppare la nuova configurazione sul nas (Sistema->Manutenzione->Carica la configurazione)
- Usate il vostro browser e accedete alle pagina di amministrazione del nas e cliccate su sfoglia per navigare sulla nuova condivisione via web.
La magia viene eseguita dalla riga ../../../../
che impone al sistema di creare una nuova condivisione partendo dalla radice.
Se provate a rimuovere la condivisione “hack” farete danni al vostro sistema, perché insieme alla condivisione rimuoverete anche i file in essa contenuti (quindi il sistema operativo del nas). Un modo indolore per effettuare la rimozione della condivisione è caricare il backup della configurazione del nas effettuato precedentemente (edconf.xml) e solo dopo rimuovere la condivisione ‘hack’ normalmente tramite l’interfaccia web.
Una volta che avete l’accesso al filesystem, per di più con i diritti di root (!), potrete uppare tutti i file che volete.
Binari compilati per architettura ARM e file di configurazione per initng e pam
Da qui in poi avrete bisogno di questo archivio:
>> LaCie_2Big_Network_[TELNET][NTP][SSH][CUPS].zip (6,79Mb),
contenente tutti i binari e le librerie, compilati per architettura arm, che vi servono per installare sul vostro nas i demoni Telnet, NTP, OpenSSH e Cups.
(link aggiornato in data 19/01/12 🙁 aggiunta protezione hotlink al file)
L’archivio contiene i seguenti file:
cups-1.3.8-r1.tbz2
(1,89Mb), contenente tutti file del servizio di stampa. è incluso nell’archivio anche la libreria libpaper (libpaper-1.1.23.tbz2
) richiesta dal cups e non presente nel nas.cups-1.3.8-r1_(driver).tbz2
(3.74Mb), contenente tutti file ppd presenti nella distribuzione 9.10 di ubuntu. Questo file, ovviamente, non è presente nel sito internet dove ho recuperato i binari compilati per il nas.cups-1.3.8-r1_(language).tbz2
(419Kb), contenente la traduzione nelle maggiori lingue, italiano compreso, delle pagine html di cups. Questo file non è presente nel sito internet dove ho recuperato i binari compilati per il nas.ntp-4.2.4_p4.tbz2
(247Kb), contenente i binari e i file di configurazione per il demone ntpopenssh-4.7_p1-r6.tbz2
(490Kb), contenente i binari e i file di configurazione per il demone ssh. L’archivio contiene inoltre le librerie tcp-wrappers (tcp-wrappers-7.6-r8.tbz2
) richieste dal demone non presenti nel nas.usbutils-0.73.tbz2
(86,2Kb). Questo file non è strettamente necessario al nas ne è obbligatorio installarlo per far funzionare cups, tuttavia può essere di aiuto poiché installa l’eseguibilelsusb
.utelnetd.tbz2
(5.7Kb), contenente il demone utelnetd e un file per eseguirlo (vedi paragrafo successivo per maggiori info)
Gli archivi originali li ho recuperati dal sito:
http://downloads.buffalo.nas-central.org/LSPro_ARM9/Distributions/Genlink/Binaries/armv5tejl-softfloat-linux-gnueabi/
dove sono presenti molti pacchetti già compilati per i nas della buffalo. Senonché questi pacchetti sono pensati per un sistema che usa inet.d e non initng, per cui ho dovuto crearmi a mano gli scrip di avvio per i demoni sshd, ntpd e cups (rispettivamente /etc/initng/sshd.i
, /etc/initng/ntpd.i
e /etc/initng/cups.i
). Vi posso assicurare che non è stato un bel vedere: la documentazione in merito è alquanto carente e il forum ufficiale del progetto initng è sommerso dallo spam. (Quanto adoro gli spammer 👿 )
Ho voluto lasciare i pacchetti distinti, evitando di fare un unico archivio, in modo da lasciarvi la massima scelta su cosa installare. Da i file ho rimosso i man page e i docs.
L’archivio utelnetd.tbz2
contiene due file, il demone telnet e un file per lanciarlo e configurare la bash del vostro sistema. Copiate i due file nella cartella /www/cgi-bin/public/
tramite la condivisione creata precedentemente.
EccoVi il contenuto del file telnet.cgi:
#!/bin/sh echo "Content-type: text/plain" echo "" # Settings for root bash shell HOME='/root' PATH='/usr/local/bin:/bin:/sbin:/usr/bin:/usr/sbin:.:' TERM=linux PS1='\u@\h:\w# ' PS2='> ' PS3='> ' PS4='+ ' export PS1 PS2 PS3 PS4 PATH HOME TERM # Run telnet daemon echo utelnetd -l /bin/bash eval utelnetd -l /bin/bash
Potete lanciare il vostro demone telnet da un browser web all’indirizzo:
http://indirizzo_nas/cgi-bin/public/telnet.cgi
Se la pagina rimane bianca e in caricamento infinito non preoccupatevi, lanciate ugualmente il vostro client telnet sull’indirizzo del nas e godetevi la vostra console di root senza login. (evviva sicurezza!)
Una volta che si possiede una console a tutti gli effetti si può anche pensare di fare uno step in avanti con la sicurezza installando openssh.
Copiate l’archivio openssh-4.7_p1-r6[modificato].tbz2
nella vostra cartella condivisa del nas.
Dalla console di telnet eseguite:
# cd /home/share/nome_cartella_della_vostra_condivisione # tar -xvjf openssh-4.7_p1-r6.tbz2 -C / # rm openssh-4.7_p1-r6.tbz2 # cd /etc/initng/runlevel/ # echo sshd >> default.runlevel # touch /var/log/lastlog
Al primo avvio del nas dopo l’installazione dello ssh sarà, per una sola volta, più lento, la causa è la creazione automatica dei file:
ssh_host_dsa_key ssh_host_dsa_key.pub ssh_host_key ssh_host_key.pub ssh_host_rsa_key ssh_host_rsa_key.pub
obbligatori per il funzionamento del demone ssh stesso (cartella /etc/ssh/
).
Eccovi il file di configurazione (sshd.i
), incluso nell’archivio, per initng per il demone sshd:
#!/sbin/itype # NAME: OpenSSH # DESCRIPTION: The standard Linux SSH server # WWW: http://www.openssh.com/ service sshd/generate_keys { env KEYGEN=/usr/bin/ssh-keygen; env RSA1_KEY=/etc/ssh/ssh_host_key; env RSA_KEY=/etc/ssh/ssh_host_rsa_key; env DSA_KEY=/etc/ssh/ssh_host_dsa_key; script start = { [ ! -s ${RSA1_KEY} ] && \ ${KEYGEN} -q -t rsa1 -f ${RSA1_KEY} -C '' -N '' 2>&1 if [ ! -s ${RSA_KEY} ] ; then ${KEYGEN} -q -t rsa -f ${RSA_KEY} -C '' -N '' 2>&1 chmod 600 ${RSA_KEY} chmod 644 ${RSA_KEY}.pub fi if [ ! -s ${DSA_KEY} ] ; then ${KEYGEN} -q -t dsa -f ${DSA_KEY} -C '' -N '' 2>&1 chmod 600 ${DSA_KEY} chmod 644 ${DSA_KEY}.pub fi } } daemon sshd { need = bootmisc virtual/net mountfs; pid_file = /var/run/sshd.pid; need = sshd/generate_keys; exec daemon = /usr/sbin/sshd -D; daemon_stops_badly; respawn; }
Altro problema sono le pam, anche qui, il file presente nell’archivio originale non funziona e ho dovuto editarlo a mano. Eccovi il suo nuovo contenuto:
#%PAM-1.0 auth required pam_unix.so account required pam_unix.so password required pam_unix.so session required pam_unix.so
Modificatelo a vostra discrezione (file /etc/pam.d/sshd
).
Persistenza dei privilegi dell’utente
I problemi tuttavia non finiscono qui. Ad ogni riavvio della macchina il file /etc/passwd
e /etc/shadow
vengono sovrascritti. In particolare ogni nuovo utente creato tramite l’interfaccia web del nas non ha il diritto di loggarsi alla console remota del nas. Es:
admin:x:500:100::/home:/bin/false
Il /bin/false
è il nostro problema! Per ovviare alla situazione ho creato un servizio per initng, chiamato personal, che permette di ripristinare i privilegi di un account:
#!/sbin/itype # # Cambiate la riga user="utente" inserendo a posto di 'utente' il nome dell'utente da voi creato service personal { need = edconfd/ready; last; script start = { user="utente" PASSWD="$user:x:0:0::/root:/bin/bash" if [ "x`cat /etc/passwd | grep $user`" == "x" ]; then echo $PASSWD >> /etc/passwd echo "Insert user $user done" >&2 else LINE="`cat /etc/passwd | grep $user`" if [ "$LINE" != "$PASSWD" ]; then sed -i "s#${LINE}#${PASSWD}#g" /etc/passwd echo "User $user restored" >&2 fi fi exit 0 }; }
Si presuppone che l’utente sia stato creato precedentemente tramite l’interfaccia web del nas.
L’unica modifica richiesta è cambiare la stringa user="utente"
, inserendo al posto di utente il nome dello user che avete creato. L’esecuzione dello script comporta la modifica dei privilegi dell’utente (che diventerà un alter ego del root) e la possibilità di effettuare il login remoto nella shell ssh.
Il file non è presente in alcun archivio, ma è possibile scaricarlo qui:
- personal.i (prima versione)
- personal2.i (versione per i più smaliziati)
Per avviare automaticamente al boot del nas lo script copiare il file personal.i
nella cartella /etc/initng/
, ed eseguire:
# cd /etc/initng/runlevel/ # echo personal >> default.runlevel
Una volta che lo script è stato aggiunto potete finalmente eliminare il vostro demone telnet e il suo file di avvio dalla cartella /www/cgi-bin/public/
. Per scaramanzia vi consiglio di riavviare la macchina e accertarvi che tutto funzioni come si ci aspetti prima di rimuovere i due file.
Problemi con su e passwd e personalizzazione del promtp della bash
Quando gli sviluppatori della LaCie hanno compilato il sistema hanno tralasciato, penso volutamente, qualcosa…
Loggatevi come root al nas ed eseguite (ricordo che l’accesso telnet che avete è di root):
# vi /etc/busybox.conf
Inserite queste linee, salvate il file e uscite dall’editor
[SUID] passwd = ssx 0.0 su = ssx root.0
Dalla console, sempre con l’account di root, eseguite questi comandi:
# chown 0.0 /etc/busybox.conf # chmod 600 /etc/busybox.conf # chown 0.0 /bin/busybox # chmod 4755 /bin/busybox
I problemi con su e passwd sono finiti.
Se volete il promt della bash esteso vi consiglio di editare il file /etc/profile.bash
cambiando la riga:
PS1='[\u@\h \W]\$ '
in
PS1='[\u@\h \w]\$ '
Copiate l’archivio ntp-4.2.4_p4.tbz2
(247Kb) nella vostra cartella condivisa del nas.
Dalla console, con i privilegi di root attivi, eseguite:
# cd /home/share/nome_cartella_della_vostra_condivisione # tar -xvjf ntp-4.2.4_p4.tbz2 -C / # rm -r ntp-4.2.4_p4.tbz2 # cd /etc/initng/runlevel/ # echo ntpd >> default.runlevel
Questo qui è il file di configurazione, incluso nell’archivio, per initng per il demone ntpd:
#!/sbin/itype daemon ntpd { env NTPD_PID = /var/run/ntpd.pid; need = bootmisc virtual/net; require_network; exec daemon = /usr/sbin/ntpd -c /etc/ntp.conf -p ${NTPD_PID}; forks; pid_file = ${NTPD_PID}; respawn; }
Non dimenticatevi di configurare correttamente il vostro fuso orario. Potete farlo dalla pagina web di configurazione “system” del vostro nas. Per finire riavviate il nas.
Installazione di Cups (print server)
Copiate l’archivio cups-1.3.8-r1.tbz2
(1.89Mb) nella vostra cartella condivisa del nas.
Dalla console, con i privilegi di root attivi, eseguite:
# cd /home/share/nome_cartella_della_vostra_condivisione # tar -xvjf cups-1.3.8-r1.tbz2 -C / # rm -r cups-1.3.8-r1.tbz2 # cd /etc/initng/runlevel/ # echo cupsd >> default.runlevel
Aprite l’interfaccia web del nas e cliccate su GRUPPI e poi aggiungi, e create un nuovo gruppo con il nome “lpadmin” e aggiungete al gruppo l’utente che avete creato precedentemente per accedere al nas in ssh.
# vi /etc/sysconfig/modules
Aggiungete la riga usblp
, come da figura e salvate.
L’ultimo passaggio impone al sistema di caricare automaticamente all’avvio il modulo che supporta la stampa su porta usb.
Vi ricordo che i comandi per modificare un file con l’editor vi sono “i” per inserire nuovo testo e “ESC”+”:wq” per salvare e uscire.
Eccovi il file di configurazione, incluso nell’archivio, per avviare automaticamente il demone cups tramite initng:
#!/sbin/itype # NAME: CUPS # DESCRIPTION: The Common Unix Printing System # WWW: http://www.cups.org daemon cupsd { need = bootmisc dbus virtual/net avahi; require_network; exec daemon = /usr/sbin/cupsd -F -c /etc/cups/cupsd.conf; }
Dovete, inoltre, modificare il file /etc/cups/cupsd.conf
per permettere l’amministrazione remota del cups, altrimenti inattiva. Come aiuto vi riporto il mio file di configurazione. Per un ulteriore aiuto su come configurare il cups vi rimando al sito internet ufficiale www.cups.org.
Anche per il cups ho dovuto editare a mano il file pam. Eccovi il suo nuovo contenuto:
#%PAM-1.0 auth required pam_unix.so account required pam_unix.so
Modificatelo a vostra discrezione (file /etc/pam.d/cups
).
Una volta riavviata la macchina, il cups sarà in esecuzione e raggiungibile all’indirizzo del vostro nas alla porta 631:
https://indirizzo_nas:631
I file cups-1.3.8-r1_(driver).tbz2
e cups-1.3.8-r1_(launguage).tbz2
, sono opzionali e contengono i driver e la traduzione dell’interfaccia web, installarli o meno è una vostra scelta. Potete anche installare solo la lingua italiana rimuovendo dall’archivio cups-1.3.8-r1_(launguage).tbz2
le cartelle delle lingue che non desiderate, lo stesso dicasi per il file con i driver.
Per poter stampare in formato raw (output pre formattato) dovete togliere il commento alla linea seguente dal file /etc/cups/mime.convs
:
application/octet-stream application/vnd.cups-raw 0 -
Assicuratevi che non sia commentata anche la linea seguente del file /etc/cups/mime.types
:
application/octet-stream
In linux la stampante sarà rintracciabile all’indirizzo (fate attenzione alle volte non c’è bisogno di indicare il numero di porta):
ipp://indirizzo_nas:631/printers/nome_stampante
Es:
ipp://192.168.1.100:631/printers/ML-3050
In windows xp cliccate su “Aggiungi stampante” e per aggiungere una nuova stampante di rete e selezionate “Stampante in Internet o della rete domestica o aziendale” e usate l’URL:
http://indirizzo_nas:631/printers/nome_stampante
Selezionate, infine, il driver per la vostra stampante.
Una piccola precisazione, il samba del nas non è stato compilato con il supporto per il cups. (libcups.so.2
)
The next generation control (ngc)
# ngc -H initNGControl (0.6.10.2 ) by Jimmy Wennlund http://www.initng.org/ ngc understand this commands: short Option : description ---------------------------------------------------------- [-h] --help : Print what commands you can send to initng. [-H] --help_all : Print out verbose list of all commands. [-s] --status <opt> : Print all services. [-O] --options <opt> : Print out option_db. [-u] --start opt : Start service. [-d] --stop opt : Stop service. [-t] --states <opt> : Print out all possible states. [-I] --list_filedescriptors <opt> : Print all open filedescriptors initng have. [-P] --print_service_db <opt> : Print service_db [-p] --print_active_db <opt> : Print active_db [-v] --verbose : Toggle the verbose flag - ONLY FOR DEBUGGING [-i] --add_verbose opt : Add string to watch for to make initng verbose - ONLY FOR DEBUGGING [-k] --del_verbose opt : Del string to watch for to make initng verbose - ONLY FOR DEBUGGING [-c] --hot_reload : Fast Reload [-g] --get_pid_of opt : Get pid of service [-j] --restart_from opt : Stop all services, and start from [-z] --zap <opt> : Resets a failed service, so it can be restarted. [-r] --restart opt : Restart service [-T] --time opt : Print uptime [-f] --father opt : Print father to [-R] --reload_service <opt> : Reload service data from disk ( reparse /etc/initng ) [-6] --reboot : Reboot the computer [-0] --poweroff : Power off the computer [-1] --halt : Halt the computer [-m] --print_plugins : Print loaded plugins [-o] --load_module opt : Load Module [-n] --done : Prints percent of system up [-a] --service_dep_on opt : Print what services me depends on [-A] --service_dep_on_deep opt : Print what services me depends on deep [-b] --service_dep_on_me opt : Print what dependencies that are depending on me [-B] --service_dep_on_me_deep opt : Print what dependencies that are depending on me deep [-U] --run opt : Simply run an exec with specified name, example ngc --run service/test:start [-y] --stop_unneeded : Stop all services, not in runlevel
È possibile ripristinare il filesystem del nas allo stato precedente le modifiche effettuando l’aggiornamento del firmware, anche con la stessa versione installata sul nas, nel mio caso 2.2.3, usando l’utility messa a disposizione dalla LaCie stessa. Tuttavia non è possibile effettuare tale operazione se il nas risulta non essere più visibile in rete, infatti l’utility non esegue il processo di aggiornamento se non vede precedentemente il nas.
Procedura di reset ufficiale fornita da LaCie
Portare l’interruttore dell’unità su OFF.. Dopo lo spegnimento, assicurarsi che l’interruttore rimanga in posizione OFF.
Se l’unità si trova in modalità SAFE, spostare lo switch RAID in modalità BIG.
PREMERE A LUNGO il pulsante frontale. SPOSTARE l’interruttore di accensione in posizione ON . Il LED sul lato frontale dell’unità inizia a lampeggiare.
Quando il LED smette di lampeggiare, RILASCIARE il pulsante frontale.
Una volta rilasciato, il LED inizia a LAMPEGGIARE DI NUOVO. Quando smette, PREMERE A LUNGO il pulsante frontale. Il LED ricomincia a lampeggiare.
Quando il LED smette di lampeggiare, RILASCIARE il pulsante. L’unità esegue il reset.
Una volta che il reset è stato eseguito l’unità si riavvierà automaticamente.
Se necessario, riportare il selettore RAID su SAFE.
Per recuperare eventuali dati persi durante il processo, si devono ricreare le condivisioni presenti sull’unità prima del reset. Eventuali aggiornamenti del firmware dovranno essere applicati di nuovo.
La procedura di reset è parecchio noiosa da eseguire, infatti solo al quarto tentativo il nas si è resettato correttamente, quindi vi consiglio di avere molta pasienza.
- uboot
- scratcbox
- buildroot
- www.initng.org, vedi preferibilmente http://gitorious.org/initng/.
- Lacie NAS-Central
- General NAS-Central Forums
- http://downloads.buffalo.nas-central.org/LSPro_ARM9/Distributions/Genlink/Binaries/armv5tejl-softfloat-linux-gnueabi/
(binari compilati per architettura arm) - LaCie (pagina di supporto)
- LaCie GPL
- www.cups.org, Common UNIX Printing System.
Un idea molto interessante che mi è venuta in mente è di modificare il raid del nas. In particolare, usare gli hard disk esterni, agganciabili alle porte del usb, come parte integrante del raid usando il raid 5 o aggiungere un hd esterno da usare come spare in caso di guasto. Non ho compiuto alcuna prova in merito, principalmente per mancanza di hd, ma se qualcuno ha avuto la stessa mia idea e ci sta provando mi faccia sapere qualcosa. 🙂
Aggiornamento del kernel (?!?)
Ringrazio gli utenti del forum “General NAS-Central Forums”, che con i loro utili post hanno permesso la stesura di questo articolo e soprattutto di bucare il mio nas. 🙂
Sorry for spam 😉
I can use rsync from telnet on 2big :
root@LaCie-2big:/www/cgi-bin/public# rsync -avz 192.168.0.13:/home/user/Folder /home/share/
It works fine !
I continue to search for ssh (and nfs too).
Ciao :]
I’m sorry, I could not answer before, I was helping my friend with the C programming language.
NFS.
You have to export nas filesystem. To do this you have to configure
/etc/exports
file.something like this:
# /etc/exports: the access control list for filesystems which may be exported
# to NFS clients. See exports(5).
#
/home/share/path_name 192.168.1.0/24(ro)
where path_name is the name of your share on the nas, and
192.168.1.0/24(ro)
is the range of address of your lan.This is the way to export an NFS filesystem on a linux pc.
Unfortunately i haven’t been able to test the NFS kernel module.
SSH.
Do you have created your own user on the NAS?
and above all, did you have created the
personal.i
file located in the/etc/initng/
?I’m talking about the section entitled “Persistenza dei privilegi dell’utente” (Persistence of user privileges).
Be sure to edit
user = "utente"
replacing"utente"
with your username.Sorry, I had a 403 error previously.. And if retry too.. I’m not lucky today 😀
Thank you for your time.
I had create a file exports, not exactely like you, but it should work.
If I change with telnet the root password of 2big, it works, I can access ssh from my laptop.
Maybe I miss a step with your tutorial, I’ll try another day to restart from beginning.
Thanks for sharing 🙂
The solution is simple, do not use the root account.
You have to create a new user on your NAS from the web interface.
In fact, the NAS will reset, at each startup, the file
/etc/passwd
and/etc/shadow
, overwriting any modifications made from the shell.The script “
personal.i
” will automatically change the rights of the account, in particular, rewriting:– The user identifier (third field), the number that the operating system uses for internal purposes. Changing it to zero. (root)
– The group identifier (fourth field). This number identifies the primary group of the user; That Are all files created by this user may Initially be accessible to this group. Changing it to zero. (group root)
– The path to the user’s home directory (sixth field). By changing the path with the “
/root
” directory– And changing the last field from “
/bin/false
” to “/bin/bash
“, allowing your account to access to ssh shell.Your username will become, to all effects, a new administrator with root privileges.
Sorry for my bad English.
Your English is not so bad, even better than me 🙂
I think I do everything right, but it’s seems the script ‘personal.i’ doesn’t run, so my user haven’t right rules (myuser:x:503:100::/home:/bin/false).
Is there any way tu run on demand the script to check if is it ok on file ?
You have to explicitly add the script to the services that start during the boot of the NAS:
go to:
# cd /etc/initng/runlevel/
and type:
echo personal >> default.runlevel
Yuo can test if the script is working using ngc:
ngc -u personal
to start the service;ngc -r personal
to restart the service;ngc -d personal
to stop the service;ngc -s personal
to check the status of the service;ngc -z personal
to restore service (zap) that has started and it went wrong;ngc -h
for the helpngc -H
for the extended helpngc -6
for system rebootngc -0
for system Power off. (Not to be used. Is preferable to stop the system using the shutdown button)ecc.
I added a small paragraph in the article with the output of ngc extended help command.
Well, I already try with ngc. But with your confirmation, it’s seem to be a problem with my personnal.i file.
Service “personnal” previously failed (NOT_FOUND),
If a do a ls command, I saw the personnal.i file, but with green color. Is it a problem of right on the file ?
(modules.i the same)
Sylvain
Actually the file name is “personal.i” with one “n”, not “personnal.i”.
So if you called your file “personnal.i” with two “nn” then you must run this command:
# cd /etc/initng/runlevel/
# echo personnal >> default.runlevel
Please check what you entered in the file
default.runlevel
Also, check that there are no windows carriage return characters (or some other strange character),
which are different from those of Linux system.
(which is a common mistake, when you do copy and paste from a webpage)
Good luck. 🙂
Goodnight,
Sorry, it was my mistake ! Because tonight I run : ngc -u personal
Starting service “personal”, hang on..
Service “personal” is now in state: SERVICE_START_RUN
User myuser restored
Service “personal” is started!
So it look like great ! But it strange because when I had reboot (not try wet), It seems to not work. I will test another day.
Again, thanks for your time and help.
Sylvain
And at least, ssh with my user works at home !!
🙂
Thank you.
Thank you for your great tutorial! However I have the Lacie 2Big with ver 2.0.6 and I had troubles upgrading to 2.0.7 and 2.2.3. I succeeded in gaining root access but I had problems with the ssh deamon and the bittorrent client transmission. For openssh I had to install also the openssl libraries from “buffalo” because a symbol was missing in the local libs. For transmission, it crashes after a while and creates a core dump, but I have not jet figured out what is the source of the problem. Any idea?
Intanto presumo dalla tua mail che sei italiano giusto?
L’intera guida che ho scritto si basa sul presupposto che sul Nas giri il sistema 2.2.3 della LaCie o successivi.
Quindi non ti so dire molto sulla possibile mancanza delle librerie openssl e varie dato che per il tuo sistema (2.0.6), non ho fatto alcun test.
Non mi ricordo più se la procedura di aggiornamento del nas si faceva con l’utility “LaCie Network Assistant” o direttamente dalla pagina web.
Se non dico sciocchezze ci voleva l’utility, ricordo che su un mio pc con windows xp falliva, su un secondo pc con lo stesso sistema operativo funzionava correttamente.
Ti consiglio di insistere nell’effettuare l’aggiornamento del Nas quanto meno alla versione 2.2.3, perché quest’ultima sostituisce totalmente il sistema operativo del nas.
In particolare, la versione delle librerie presenti nel Nas (v2.2.3) sono le stesse della versione 5.x Debian Lenny, per cui ogni programma che installi sul nas deve rispettare le dipendenze di versione.
Nulla ti so dire sulla versione delle librerie (e sopratutto quali) sono presenti sul Nas con s.o. versione 2.0.6.
Per quanto riguarda Transmission non ricordo più quale versione ho testato sul nas, credo quella presente su:
http://downloads.buffalo.nas-central.org/LSPro_ARM9/Distributions/Genlink/Binaries/armv5tejl-softfloat-linux-gnueabi/,
ma anche qui vale la stessa condizione per la versione delle librerie e dipendenze del pacchetto Transmission.
Un altra versione è questa qui: http://packages.debian.org/squeeze/transmission-daemon
(non sono riuscito a trovare il pacchetto per la versione lenny)
Ricordo che l’architettura del nas è armel, per cui..
http://packages.debian.org/squeeze/armel/transmission-daemon/download
Accertati sempre che le dipendenze siano rispettate quando installi nuovo software sul Nas.
In generale evita di sovrascrivere file già presenti nel sistema operativo del Nas (ho avuto esperienze pessime),
e infine, su una macchina con si poca ram perché transmission?
Voglio dire, cpu ne ha poca, ram anche di meno (64 mb), swap (128mb), appena metti un file a scaricare di qualche giga si pianta tutto il nas.
Ad ogni modo, in bocca al lupo.
Fantastica guida!
Erano anni che cercavo di eliminare dalle mie condivizioni alcune cartelle precedentemente create e passate in modo “read-only”: solo l’utente “admin” poteva modificarle, ma via web gui si possono solo cancellare i file uno a uno e non le sottocartelle (e admin non si puo connettere via ftp o smb ovviamente), grrr…
Una nota: funziona tutto perfettamente col firmware 2.2.8 (ultimo disponibile al momento)
Una seconda nota: io ho messo la mia chiave pubblica ssh in /root/.ssh/authorized_keys per facilitarmi l’accesso. Non so se fosse necessario (non sono un pam guru)
c’è la possibilità di eseguire hack adattato anche su d2 network 2? purtroppo non trovo “Salvare la configurazione xml del vostro nas sul disco (Sistema->Manutenzione->Salva configurazione)”
In verità tutta questa guida, hack compreso, non è stata scritta per la nuova versione del nas, quindi non sono in grado di darti una mano d’aiuto in merito. Purtroppo non possiedo ne conosco il modello d2 network 2, l’unico aiuto che ti posso dare è questo link:
http://forum.nas-central.org/viewforum.php?f=238
Mi spiace, Giulio.
Una delle pecche di questo NAS è la mancanza dell’ISCSI.
Con questo hack potrebbe essere possibile utilizzare l’ISCSI in maniera affidabile per un cluster?
Premetto che, non uso più il nas da anni, ne c’è l’ho a portata di mano per fare dei test…
Per quanto riguarda il protocollo l’ISCSI ci sono due commenti (in questo articolo) significativi che ho scritto il 1 e 2 novembre 2010, che trattano l’argomento.
In particolare, le buone notizie sono:
– I moduli del kernel necessari al servizio sono già presenti nel nas,
– avevo già buttato giù parte dello script, circa un centinaio di righe, necessario per l’avvio del servizio (link nel commento del 02/11/2010)
Nel frattempo però il package di lenny, che suggerivo nel primo commento, è stato rimosso, con tutti i repository di lenny.
Il motivi perché non ho mai finito di testare l’ISCSI sono diversi:
– la conversazione con andreaDV (il ragazzo che mi aveva chiesto dell’ISCSI) è rimasta tronca,
– non ho mai potuto testare per bene ciò che avevo scritto, ne approntare una configurazione di test
– per ultimo, non conosco affatto il protocollo ISCSI, ne ho l’esigenza di averlo nella mia rete casalinga (per le mie esigenze è un overkill).
Mi dispiace, ma questo è tutto l’aiuto che posso darti, il nas, come dicevo prima, è a casa mia e io sono uno studente fuori sede.
In bocca al lupo.
Giulio
Ciao scusami se ti scrivo come commento a questo post, ma, vedendo la tua preparazione sull’argomento io ci provo visto che sono disperato.
ho un 2big network 2 della LaCie che mi ha servito con onore per qualche anno. Ieri l’ho spento in maniera normalissima, ma oggi, quando l’ho acceso non funziona più.
O meglio si avvia, tutto correttemente, m non riesco ad accederci in nessun modo. Il software lacie vede che c’è un hd di rete ma non riesce a collegarmi e non ci riesco neanche se cerco l’ip statico che gli avevo dato. Nulla.
Al suo interno ci sono 2 hd da 1tb in raid. Ho provato a staccarli e a metterli direttamente come esterni via usb su pc, ma non mi fa vedere l’unità dalle risorse del pc. Ho fatto tutti i test con i software che conosco per hd e sembrano integri e funzionanti, ma non ne vedo il contenuto. Per questo credo che ci sia qualcosa che non vada direttamente sul lacie (os, rete, etc…).
A me non interessa nulla del lacie, ma ovviamente devo riuscire a recuperare i dati degli ha. Secondo te come posso fare? Conoscete un modo per poter accedere nell’hd e vederlo? Ho provato anche con un pc con linux, ma neanche questo lo vede.
Grazie davvero di cuore per ogni consiglio, se riesco a recuperare il materiale mi salvi la vita!!!
Bhe la cosa più importante non l’hai detta: è un raid 0 o 1 ?!?
Scontato, i dischi del Nas usano due tipi di filesyste xfs e ext2, leggibili solo sotto s.o. linux e simili.
Bene riprendiamo da questo punto che mi piace:
1. che linux? ubuntu / mint / debian?
2. Installato o livecd?
Mi spiego, negli HD del nas ci sono diverse partizioni che contengono il suo sistema operativo (linux) che sono in raid 1, e
due grosse partizioni (sda2 e sdb2) che contengono i dati personali, la cui modalità raid (0 o 1) è scelta dall’utente.
Le partizioni con il sistema operativo sono formattate in ext2, mentre le partizioni con in dati personali usano il filesystem xfs.
Concentriamoci sulle partizioni con i dati..
Il sistema crea una partizione virtuale, di nome /dev/md4 che rappresenta la “fusione” delle due partizioni fisiche
/dev/sda2
e/dev/sdb2
, questo a prescindere del tipo di raid che stai usando.Per accedere ad una partizione raid, su un sistema linux, devo essere soddisfatte due condizioni:
Il sistema deve riconoscere il filesytem xfs e deve riconoscere che le due partizioni sono in raid, ovvero bisogna installare i pacchetti che gestiscono il raid e l’xfs, che a seconda del sistema che si sta usando potrebbero essere già installati o meno.
Ti dico subito che io uso un sistema linux basato su debian, quindi se usi una versione diversa di linux i comandi che ti posto qui sotto potrebbero non funzionare affatto ed essere completamente privi di senso per la tua macchina.
Dimenticavo, NON USARE L’USB per accedere ai dischi, collegali al pc tramite il cavo sata!
A meno che tu non voglia fare l’alba per traferire i dati, e comunque l’usb potrebbe dare fastidio al raid.
Consiglio di usare un live cd: esiste Parted Magic ( http://partedmagic.com/doku.php?id=downloads ), che è delizioso per recuperare i dati e ha già mdadm (che gestisce il raid) e i moduli di xfs installati.
Altrimenti anche una live di ubuntu va bene, ma bisognerà installare i pacchetti a mano (vedi sotto).
Dopo aver aperto una console:
sudo su
Questo perché dobbiamo essere amministratori..
Installiamo:
apt-get install mdadm xfs xfsprogs
Con buona probabilità ti chiederà anche di installare altri pacchetti e di configurali (postfix), dagli una configurazione localhost, tanto non ci interessa.
Il comando
mdadm --assemble --scan
assemblerà le partizioni raid in automatico.Qui potrebbero apparire molte partizioni:
/md0=boot, /md1=root, /md2=snap, /md3=swap, /md4=data
e non per forza nell’ordine che ti ho appena scritto.
Vedi se la partizione con i tuoi dati è leggibile. Altrimenti bisogna cercare di ripristinare i dati con le utility del filesystem xfs (
xfs_repair
) o con programmi commerciali sotto windows (es: Raise Data Recovery for XFS).Un altra cosa, nei commenti di questo articolo, ci sono molte persone che hanno avuto problemi uguali o simili al tuo, ti consiglierei di darci una seria occhiata.
Bye
Ciao Sei davvero gentilissimo!!! Non so come ringraziarti!
Allora il mio rai è mirror e uso opensuse come so. Non sono un drago di linux (anzi!). Ho solo quel pc che mi serve come un piccolo server.
Quindi, correggimi se sbaglio, dovrei collegare i 2 hd al pc con linux. Poi istallare parted magic, dopodichè, se tutto va bene, vedo il mio hd montato come secondario e posso estrarre i dati?
GRAZIE ANCORA DAVVERO, MI STAI SALVANDO!
Non mi è chiara un’altra cosa posso usare un live cd?
Grazie ancora
Bravo! Hai il doppio delle probabilità di recuperare i tuoi dati, alla faccia degli stolti che preferiscono il raid 0.
Si, sarebbe meglio che collegassi i due hd direttamente al pc.
Allora…
Credo di essermi spiegato male, Parted Magic è un live cd, in particolare è basato sula distribuzione linux slackware.
Te lo avevo suggerito perché è un cd che è pensato per recuperare dati da sistemi danneggiati o per clonare partizioni, ecc.
E sopratutto parte con molti programmi già installati di default.
Io non conosco i comandi per installare pacchetti su un s.o. suse / opensuse, (non l’ho mai usato)
per cui ti avevo scritto i comandi per un s.o. debian-like.
Con un live cd di ubuntu / mint, i comandi per installare e far riconoscere i il raid e i filesystem te li ho scritti nel commento precedente.
Sul live cd di ubuntu mdadm non e’ installato di default.
Ripeto mdadm è il demone che gestisce il raid, mentre per correggere eventuali errori nel filesystem xfs bisogna usare il tool xfs_repair.
Magari prima di lanciare il comando eseguire
man xfs_repair
per rendersi conto di cosa fa il tool non sarebbe male.Non saprò mai come ringraziarti: risolto tutto!!! Sei un grandissimo!
Figurati. Sono contento che hai risolto.
Mi è rimasta la curiosità di capire cos’è successo al nas, comunque l’importante che hai recuperato i dati.
Anche a me. Sono sempre più convinto che ci sia un campo magnetico in quell’area che da dei problemi. Il fatto è che prima di giovedì il nas ha funzionato perfettamente senza alcun accenno di rottura. Anche gli hd sono completamente sani. Il software lacie istallato nei vari pc vede che è presente un nas, ma non riece ad accedere. Può essere qualche problema alla scheda di rete (o altro hd) o un problem software? Boh… Del resto come faccio a capirlo se non riesco ad accedervi? Grazie ancora!!!
Ciao si possono sotituire i dischi del mio lacie 2big network che sono da 1 tb con dei dischi da 4 o 6 tb ?
Grazie fib d’ora per la risposta …
Il modello 2big Network supporta hard disk fino a 2Gb.
Quest’estate ho provato con mano il problema dopo aver installato sul mio nas due HD da 3gb western digital Red
Ho dovuto buttare 1gb di spazio, purtroppo non dipende dall’hardware ma piuttosto dal software della macchina stessa.
Ti consiglio inoltre di usare clonezilla per copiare il sistema operativo dal disco sorgente a quello nuovo di destinazione.
Poi devi rifare la formattazione del nas al fine di utilizzare il terabytes aggiuntivo.
Ti posso assicurare, comunque, che questa non è un operazione facile.
Accetta dischi fino a 2 TB intendevi credo , giusto . Mi spiegheresti come fare , e secondo te riesco a farlo con dei dischi da 6 tb ?
Grazie
Si, scusami, tutte le unità di misura del messaggio precedente erano Terabytes non Gigabytes.
Il problema è il boot loader del nas riesce ad utilizzare solo i primi 2Tb del disco, tutto lo spazio di superiore ai 2Tb non è proprio possibile gestirlo. Quindi comprare un disco di dimensione > 2Tb è uno spreco di denaro.
Il mio errore è stato, per l’appunto, non informarmi prima su questa limitazione.
Avendo comprato due hd da 3Tb ho dovuto “buttare” 1TB di spazio, ovvero la partizione del nas dove si storano i dati utente è di circa 1,9Tb, (un pò di spazio viene usato per le partizioni in RAID 1 usate dal S.O.).
Questo nas inoltre lavora con gli uuid delle partizioni, per cui, per trasferire il sistema operativo dai dischi d’origine ai nuovi senza impazzire (pena l’impossibilità di avviare S.O) ho dovuto fare una copia di tutto il disco sorgente nel disco di destinazione con clonezilla (http://clonezilla.org/):
Disco sorgente 1 -> nuovo disco 1
Disco sorgente 2 -> nuovo disco 2
Per di più la partizione dei dati utente l’ho dovuta formattare nuovamente.
E per di più alcune partizioni virtuali RAID 1 del sistema operativo non erano sincronizzate, quindi ho sincronizzarle a mano.
Un delirio.
Ho sostituito i dischi originali per due ragioni:
La prima, speravo di avere più spazio di memorizzazione, tentativo fallito miseramente…
La seconda, i dischi originali fanno pena, sembrano dei trattori e scaldavano come un forno
In merito alla seconda ragione ho notato un miglioramento sostanziale, non solo i dischi WD Red sono praticamente freddi e silenziosi, ma consumano anche meno corrente di quelli originali, essendo la serie Red progettata esplicitamente per sistemi Nas.
OT.
Se sei bravo con il mondo linux, ti consiglio di mettere da parte il nas e optare per una scheda madre miniITX con un processore a bassissimo consumo (non so un athom) e costruirti tu un sistema NAS ad hoc, magari con una distro ad hoc come FreeNas (basata su freeBSD) o ubunto server (io ho optato per ubunto server)
Io ho acquistato questa scheda madre qui (http://www.logicsupply.it/nf99fl-525/) ma ci sono in giro soluzioni più recenti ed economiche.
In definitiva ho abbandonato il nas e adesso ho un server casalingo che mi consuma 36-38w (router adsl compreso) in idle con picchi di 58w quando è sotto stress, ma ci sono 4hd installati che consumano, e due di questi NON sono hard disk WD serie RED, quindi ho ancora spazio di manovra per ottimizzare ulteriormente i consumi. Inoltre ci sono 5 porte di rete ethernet gigabit e uno modulo per il wifi (il server fornisce il wifi a casa);
Ogni porta di rete, quando attiva, consuma circa 1-1.5w…
Insomma se si vuole avere un pc che sta sempre acceso bisogna tenere conto dei consumi e della qualità dei componenti.
(Un HD, stesso modello di quelli installati nel nas (segate a 7.200 rpm), mi si è rotto dopo due anni! Che schifo, Comunque non ho perso dati era configurato in raid 1) 🙂
Scusami della digressione.
Grazie mille degli utilissimi consigli.