SMsoft – informatica e dintorni

varie su OSX, GNU/Linux e l'Open Source

Linux: Montare una cartella remota con sshfs

Linux mette a disposizione molti sistemi per la connessione a file system remoti. SSHFS (Secure SHell FileSystem) è un filesystem che permette di condividere cartelle in modo sicuro tramite la connessione SSH. Nel PC locale, la risorsa remota verrà montato tramite FUSE (Filesystem in Userspace).

Premessa:
Ipotizziamo il seguente scenario:

  • Sistema Locale: s1.local, IP address: 192.168.0.100
  • Sistema Remoto: s2.local, IP address: 192.168.0.101

Ora vediamo come montare la directory remota /home/backup di s2 nella directory locale di s1 /backup. Tutto questo verrà fatto con l’utente root, anche se con piccole modifiche sarà possibile farlo gestire anche da un utente senza privilegi di root.

Iniziamo:
Innanzitutto bisogna installare sshfs nel Sistema Locale (s1):
apt-get install sshfs

Aggiungiamo l’utente root al gruppo fuse:
adduser root fuse

Creiamo la cartella /backup per montare il file system remoto:
mkdir /backup
chown root /backup

Montiamo il FileSystem remoto /home/backup nella cartella /backup:
sshfs -o idmap=user root@192.168.0.101:/home/backup /backup

Nota: il codice -o idmap=user fa si che nel caso i sistemi abbiamo un differente user ID non ci siano problemi di permessi.

Dopo aver eseguito il precedente comando, verrà richiesta la password dell’utente root su s2 ed eventualmente di accettarne la chiave pubblica.

Digitanto ora “mount” si potrà verificare che la cartella remota sia stata montata:
mount
...
...
/dev/sda1 on /boot type ext2 (rw)
root@192.168.0.101:/home/backup on /backup type fuse.sshfs (rw,nosuid,nodev,max_read=65536)

Ora, per smontare la cartella, basterà eseguire:
fusermount -u /backup

Montaggio automatico all’avvio

Nel caso sia necessario montare il FileSystem remoto all’avvio, bisognerà caricare la chiave pubblica di s1 su s2 in modo che non venga più richiesta la password durante la connessione ssh.

Se non avete mai creato una chiave pubblica/privata su s1, basterà digitare su s1:
ssh-keygen
e premere invio quando richiesto. Questo creerà la chiave pubblica in /root/.ssh/id_rsa.pub

Per copiare la chiave pubblica in s2, bisognerà digitare:
ssh-copy-id -i $HOME/.ssh/id_rsa.pub root@192.168.0.101

Per controllare che funzioni tutto correttamente, basterà effettuare un ssh verso s2 e verificare che non venga richiesta la password:
ssh root@192.168.0.101

Nota: solo come promemoria, ricordo che la chiave pubblica, con il comando ssh-copy-id viene copiata in $HOME/.ssh/authorized_keys di s2.

Benissimo, ci siamo quasi. Ora aggiungiamo al file /etc/rc.local le istruzioni per il montaggio del File System remoto, che verrà automaticamente effettuato al riavvio del sistema. Bisognerà inserire nel file /etc/rc.local, prima di un eventuale exit, la riga:
/usr/bin/sshfs -o idmap=user root@192.168.0.101:/home/backup /backup

Ora basterà riavviare e verificare che il FileSystem sia stato correttamente montato.

enjoy!

Caratteri accentati in maiuscolo con MAC OSX

Per digitare caratteri accentati sul nostro MAC con tastiera italiana, basta premere il corrispondente tasto.
I caratteri digitati, però, sono in minuscolo ed a prima vista non c’è modo di scrivere un carattere accentato in maiuscolo, ad esempio Á É.
E’ possibile scrivere la lettera accentata É, con accento grave, seguendo questa procedura:
Premere alt (option) + 8 e poi digitare la lettera E

Se ci fate caso, dopo aver premuto alt + 8, appare a video ´ (l’accento sottolineato), ovvero il sistema aspetta la digitazione di un nuovo carattere a cui applicare l’accento grave.

Ovviamente, oltre l’accento grave è possibile usare anche altri tipi di accento. Segue un riepilogo della combinazione di tasti da premere:

  • alt + 8 per immettere l’accento grave ( ` )
  • alt+ 9 per immettere l’accento acuto ( ´)
  • alt + ì per immettere l’accento circonflesso ( ˆ )
  • alt + u per immettere l’accento umlaut ( ¨ )
  • alt + n per immettere l’accento tilde ( ˜ )

enjoy!

Lion: disabilitare il backup locale di Time Machine

Una nuova funzionalità introdotta su OSX Lion è il backup locale di Time Machine se che se l’hard disk solitamente utilizzato per questo non è collegato.
In pratica OSX, sui notebook, continua ad effettuare il suo backup ogni ora, memorizzando sul disco interno. Al successivo collegamento dell’hard disk di Time Machine, entrambi i backup (quelli sul disco interno e quelli sull’hard disk di Time Machine) saranno accessibili via Time Machine.

Nel caso questa features, che consuma ovviamente spazio nel disco e batteria, non vi serva, potete disabilitarla digitando il seguente comando nel terminale:

 bash |  copy code |? 
1
sudo tmutil disablelocal

e successivamente effettuando un riavvio.

Nel caso in futuro si voglia riattivare tale funzionalità, basterà digitare nel terminale il seguente comando:

 bash |  copy code |? 
1
sudo tmutil enablelocal

Nota: disabilitando la funzionalità di backup locale, i precedenti backup verranno rimossi.
enjoy!

Il simbolo @ nei permessi di un file su OSX

Usando il terminale su OSX e facendo un ls -l, spesso si vede qualcosa del genere:

 bash |  copy code |? 
1
~$ ls -l
2
total 216
3
-rw-r--r--   1 tech  staff   809  9 Ago 15:02 ax_insupd_macchinari.php
4
-rw-r--r--@  1 tech  staff   255  9 Ago 12:34 ax_ret_macc.php
5
-rw-r--r--@  1 tech  staff  2253  4 Nov 17:37 ax_table_cos_ci.php
6
....

Su Linux non è presente il carattere @ alla fine del’elenco dei permessi di un file, così come si vede per il primo file dell’elenco. Allora, cos’è il simboso @ che viene visualizzato per gli altri files?

Non avevo mai approfondito questa cosa, ma leggendo un po’ di documentazione (il classico comando man presente anche su OSX), ho scoperto che OSX conserva informazioni aggiuntive (extended attribute) per i files ed il simbolo @ sta proprio ad indicare la presenta di un attributo del file.

Come faccio a capire cosa contiene l’attributo esteso del file? Innanzitutto si può vedere qual è l’attributo esteso con ls -l@:
~$ ls -l@
total 216
-rw-r--r-- 1 tech staff 809 9 Ago 15:02 ax_insupd_macchinari.php
-rw-r--r--@ 1 tech staff 255 9 Ago 12:34 ax_ret_macc.php
com.apple.metadata:kMDItemWhereFroms 115
-rw-r--r--@ 1 tech staff 2253 4 Nov 17:37 ax_table_cos_ci.php
com.apple.TextEncoding 15
com.apple.quarantine 74

Bene, il file ax_ret_macc.php ha l’attributo com.apple.metadata:kMDItemWhereFroms, mentre il file ax_table_cos_ci.php ha gli attributi com.apple.TextEncoding e com.apple.quarantine.
Cosa significano questi attributi? Dunque:
com.apple.metadata:kMDItemWhereFroms significa che il files è stato scaricato da un sito;
com.apple.quarantine significa che il file è stato scaricato da internet e non è mai stato aperto. Avete presente l’avviso che OSX visualizza quando si apre per la prima volta un file scaricato da internet? Ecco, questo attributo segnala a launcd (il demone che si occupa di avviare un programma in grado di aprre il file) di visualizzare quel messaggio; tale attributo viene rimosso automaticamente;
com.apple.TextEncoding contiene la codifica del file (es utf8).

Ora, per vedere cosa contiene un attributo, basta usare il comando xattr -l:
~$ xattr -l ax_ret_macc.php
com.apple.metadata:kMDItemWhereFroms:
00000000 62 70 6C 69 73 74 30 30 A1 01 5F 10 44 66 74 70 |bplist00.._.Dftp|
00000010 3A 2F 2F 77 77 77 77 77 77 77 77 77 77 77 77 77 |://www.wwwwwwwww|
00000020 77 77 77 77 77 77 77 77 77 77 77 77 77 2E 69 74 |wwwwwwwwwwwww.it|
00000030 2F 2F 77 65 62 2F 6D 6F 6E 69 74 5F 65 6E 65 72 |//web/monit_ener|
00000040 67 2F 61 78 5F 72 65 74 5F 6D 61 63 63 2E 70 68 |g/ax_ret_macc.ph|
00000050 70 08 0A 00 00 00 00 00 00 01 01 00 00 00 00 00 |p...............|
00000060 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000070 00 00 51 |..Q|
00000073

ovvero il file ax_ret_macc.php è stato scaricato da ftp://www.wwwwwwwwwwwwwwwwwwwwww.it//web/monit_energ/ax_ret_macc.php

Infine, nel caso si voglia eliminare un attributo esteso al file, basterà usare xattr -d:
xattr -d com.apple.metadata:kMDItemWhereFroms ax_ret_macc.php
e poi ricontrollare con:
~$ ls -l ax_ret_macc.php
-rw-r--r-- 1 tech staff 255 9 Ago 12:34 ax_ret_macc.php
dove potrete notare che il simbolo @ è sparito.

enjoy!

Album Foto duplicati nell’iPhone

Facendo diversi aggiornamenti di iTunes e cambiando l’iPhone, mi sono ritrovato più album creati, anche se le foto erano sempre le stesse. Tramite iPhone non è possibile cancellare gli album duplicati e neanche tramite iTunes.
E’ possibile far ricostruire la cache delle Foto all’Iphone, cancellando l’attuale file di cache; questo farà sì che l’album tornerà ad essere uno solo.

La procedura è abbastanza semplice. Innanzitutto dovete procurarvi iPhone Explorer. Chiudere l’app Fotografie (controllare che non sia in background ed eventualmente eliminarla), collegare l’iPhone al Mac/PC ed avviare il programma iPhone Explorer.
Il programma indicato, visualizzerà alcune cartelle contenute nell’iPhone. Dovete accedere nella cartella /Media/DCIM/.MISC/ e cancellare il file Info.plist, poi accedete alla cartella /Media/PhotoData/ e cancellate il file Photos.sqlite ed il file PhotosAux.sqlite.

A questo punto potete riavviare l’app Fotografie nell’iPhone ed attendere qualche istante per la creazione della nuova cache delle foto. Al termine ci saranno nuovamente tutte le foto ed i video all’interno del Rullino fotografico!

PS: attenzione a quello che fate. Non mi assumo responsabilità per problemi causati dall’errata esecuzione di quanto indicato.

Enjoy!

Verificare se il modulo gzip_static su nginx funziona

Siete curiosi di sapere se il modulo gzip_static di nginx funziona?
Innanzitutto bisogna installare strace che facciamo con il classico:

 bash |  copy code |? 
1
apt-get install strace

Ora bisogna recuperare il PID di uno dei worker process di nginx:
 bash |  copy code |? 
1
# ps auxw |grep nginx
2
root      8580  0.0  0.0   5000   756 ?        Ss   May05   0:00 nginx: master process /usr/sbin/nginx
3
www-data  8581  0.0  0.0   5220  1568 ?        S    May05   0:09 nginx: worker process
4
www-data  8582  0.0  0.0   5168  1448 ?        S    May05   0:04 nginx: worker process

I due worker process attivi hanno PID 8581 e 8582.
A questo punto “agganciamoci” ad uno dei processi, filtrando per gz e vediamo che succede:
#strace -p 8582 2>&1 | grep gz
Se l’output è qualcosa del tipo:
 bash |  copy code |? 
1
open("/var/www/css/style.css.gz", O_RDONLY|O_NONBLOCK) = 438
2
open("/var/www/js/utils.js.gz", O_RDONLY|O_NONBLOCK) = -1 ENOENT (No such file or directory)

significa che il modulo funziona regolarmente.
enjoy

Evitare la creazione di file .DS_Store su FileSystem remoti montati con sshfs

Come saprete, OSX crea files .DS_Store contenenti informazioni di sistema. Questo avviene anche sui File System remoti montati con sshfs. Ci sono due sistemi per evitare che questo accada:
1 – aggiungere l’opzione noappledouble durante il montaggio, es:
sshfs user@some-host.net:/home/user/ ~/mountpoint -onoappledouble,auto_cache,reconnect,volname=somename,defer_permissions,negative_vncache
2 – configurare OSX in modo che non scriva il file .DS_Store nei FileSystem di rete, digitando nel terminale:
defaults write com.apple.desktopservices DSDontWriteNetworkStores true
che provvede ad inserire tale settaggio nel file ~/Library/Preferences/com.apple.desktopservices.plist

enjoy!

Page optimized by WP Minify WordPress Plugin