Come accedere ad una memoria di massa remota anche senza essere amministratore e anche via WiFi o non modificare il file /etc/fstab o altro?
Abbiamo diversi sistemi in Linux ma vi dico i due più comodi: Samba e SshFs.
Ringrazio:
N2k e il suo blog
http://www.n2h.it/unixlinux/montare-un-filesystem-remoto-via-ssh-su-linux-ubuntu/
>e la comunità Arch
https://wiki.archlinux.org/index.php/Sshfs_%28Italiano%29
1. Troviamo l’unità
Nell’esempio che useremo abbiamo già configurato Samba e vogliamo vedere una chiavetta USB montata sul nostro router, se logicamente sappiamo dove è (esempio un disco fisso) saltate questo passaggio.
Per prima cosa dobbiamo sapere dove è questa memoria, quindi il suo IP e installiamo una utilità: NMap.
La troviamo qui:
https://software.opensuse.org/package/nmap
Logicamente
1) Inserire una memoria USB nella porta USB del router.
2) Accendere sia il router WiFi, sia il computer.
3) Aprire un terminale e impartire il comando:
nmap 192.168.1.0/24 | grep 192.168
Nota: Gli diciamo di scannerizzare tutte le porte e IP connessi nel range IP 192.168.1.0/24 e tenere (grep) solo quelle righe che abbiano “192.168”. Questo per non impazzire fra 10’000 righe!
Esempio di risposta:
opensuse13k1b64@linux-gid6:~> nmap 192.168.1.0/24 | grep 192.168
nmap scan report for dsldevice.lan (192.168.1.1) Nmap scan report for 192.168.1.2 Nmap scan report for android-a78090f48ec4a246.lan (192.168.1.3) All 1000 scanned ports on android-a78090f48ec4a246.lan (192.168.1.3) are closed Nmap scan report for 192.168.1.5 All 1000 scanned ports on 192.168.1.5 are closed opensuse13k1b64@linux-gid6:~>
Notate che alla seconda riga (Nmap scan report for 192.168.1.2) trova qualcosa e alla terza riga dice di aver trovato “Nmap scan report for android-a78090f48ec4a246.lan (192.168.1.3)” ovvero un dispositivo Android di cui la 192.168.1.3 (alla quarta riga) è chiusa, poi una 192.168.1.5 che però (alla quinta riga) trova chiusa.
Bene la 192.168.1.2 è quasi sicuramente la chiavetta ed è aperta!
Nota: Se è legato ad un dispositivo intelligente, esempio se è un disco del PC possiamo fare un “ping” per controllare.
Nota: Sappiate che il IP 192.168.1.1 e 192.168.1.44 sono di solito accessi diretti al router, quindi non ci servono. di solito partono da 192.168.1.100 al 192.168.1.225 .
2. Usare Samba
per prima cosa configuriamo samba e qui abbiamo una guida:
Vogliamo aprire Dolphin (il file manager di KDE) e vedere dentro?
Così il file-manager (nel caso dell’esempio, Dolphin) verrà aperto mostrando il contenuto della memoria di massa USB.
Possiamo anche aprire normalmente Dolphin e digitare sulla riga di path (percorso)
Nota: “smb” è per Samba, dunque attraverso la strada “smb://” e poi il IP (nel esempio 192.168.1.2) possiamo esplorare la chiavetta.
Logicamente se il dispositivo Android (dalle sue impostazioni) fosse aperta una porta potevamo esplorare anche quel dispositivo.
Samba (suo “papà” è IBM) è comodissimo e inoltre pienamente supportato da Suse, ma se vogliamo fare di più con altro?
3. Usare SSHFS
Abbiamo sshfs che (sulla OpenSuse 15 dovrebbe essere premontato) lo troviamo qui:
https://software.opensuse.org/package/sshfs
SSHFS è un client file system basato sulla SSH File Transfer Protocol. Poiché la maggior parte dei server SSH già supportano questo protocollo è molto facile da configurare: Ovvero sul lato server non c’è niente da fare. Sul lato client di montare il file system è semplice come l’accesso al server con OpenSSH (SSH).
ATTENZIONE: Controlliamo il servizio SSH sia attivo, firewall aperti e che abbiamo FUSE installato (di solito è di base su OpenSuse ma non si sa mai) con il comando da terminale:
lsmod | grep fuse
Se esiste dovrebbe dare questo (lasciate stare i numeri che possono essere diversi):
fuse 106496 3
Nel caso contrario lo troviamo qui:
https://software.opensuse.org/package/fuse
3.1. Via alle danze sshfs
Operiamo da terminale, prima dove mettere:
mkdir -p /mnt/sshfs/
È necessario, inoltre, impostare l’utente (voi registrati) che utilizzerà questa directory come owner: (io o uso il mio nome utente o root)
chown mionome /mnt/sshdir
Poi possiamo collegarla:
sshfs 192.168.1.2:/ /mnt/sshfs
Ovviamente lo troveremo montato nella cartella /mnt/sshfs/
Nota: Se volete potete scegliere un altra cartella o con un altro nome ma vi consiglio di montarla sempre sotto /mnt e usare sshfs come cartella. questa cartella si chiama in informatica mountpoint.
Volendo, ed è meglio, invece di usare il IP possiamo usare il nome macchina e utente: Nel caso “remote-user@” è l’utente l’utente autorizzato ad accedere al server remoto “remote-machine“ e può essere sostituire nell’esempio il 192.168.1.2 :
sshfs [email protected]:/some/directory /mnt/sshfs
“/some/directory” è la cartella del dispositivo remoto dove vogliamo giungere direttamente, ovviamente se vogliamo andare alla “base” è / .
La sintassi generale del comando è questa:
sshfs [email protected]_O_INDIRIZZOIP:/PERCORSO PUNTO_DI_MOUNT_LOCALE OPZIONI_SSH
esempio:
sshfs [email protected]:/home /mnt/sshfs
Logico che dobbiamo registrare il nome utente e nome della macchina sulla macchina dove voliamo collegarci, e potete vedere qui come fare.
Se invece vogliamo accedere attraverso una specifica porta (esempio la 9876):
sshfs [email protected]_O_INDIRIZZOIP:/home/sonoio /mnt/sshfs -C -p 9876
Nota: Assicurarsi prima di connettersi, di aver impostato i giusti permessi sui file, per le cartelle locali dove si vuole effettuare il mount di una cartella remota. Esempio: non lasciare che l’unico proprietario sia root! Sarà possibile utilizzare il comando di mount anche come utente normale, dovrebbe funzionare correttamente. richiederà la password, se necessaria (insomma sempre)!
Accedere ad un Windows: In questo caso la macchina linux (192.168.1.4) ponte potrebbe effettuare un mount delle risorse della macchina Windows ( 192.168.1.86) che devono essere condivise con un comando del tipo
sudo mount -t cifs -o username=maurizio -p //192.168.1.86/biblio /mnt/sshfs
per avere sshfs su windows aggiungere il programma che di solito si chiama
win-sshfs-0.0.1.5-setup.exe
++—
3.2. Per smontare sshfs
Per smontare (ricordatevi!)
fusermount -u /mnt/sshfs
3.3. Effettuare l’umount sshfs
Sintassi per effettuare l’umount delle cartelle remote:
fusermount -u PUNTO_DI_MOUNT_LOCALE
Esempio:
fusermount -u /mnt/sshfs
Si può usare anche il comando umount che è più rapido ma fa meno controlli nello smontaggio, quindi preferite sempre fusermount.
Vedere se la connessione è attiva
vedere se l’output del comando mount riporta che è montata, altrimenti rifate la connessione ed aggiungete l’opzione -o nonempty
mount
esempio di emissione
[email protected]:~# mount /dev/mapper/server1-root on / type ext4 (rw,errors=remount-ro) proc on /proc type proc (rw,noexec,nosuid,nodev) sysfs on /sys type sysfs (rw,noexec,nosuid,nodev) fusectl on /sys/fs/fuse/connections type fusectl (rw) none on /sys/kernel/debug type debugfs (rw) none on /sys/kernel/security type securityfs (rw) udev on /dev type devtmpfs (rw,mode=0755) devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620) tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755) none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880) none on /run/shm type tmpfs (rw,nosuid,nodev) /dev/sda1 on /boot type ext2 (rw) [email protected]:/home/backup on /backup type fuse.sshfs (rw,nosuid,nodev,max_read=65536) [email protected]:~#
Oppure
df -h
esempio di emissione
[email protected]:~# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/server1-root 29G 1015M 27G 4% / udev 238M 4.0K 238M 1% /dev tmpfs 99M 212K 99M 1% /run none 5.0M 0 5.0M 0% /run/lock none 247M 0 247M 0% /run/shm /dev/sda1 228M 24M 193M 11% /boot [email protected]:/home/backup 29G 1019M 27G 4% /backup [email protected]:~#
Chiavi
Qui vi rimando ad una guida più completa:
http://linuxmafia.com/~karsten/Linux/FAQs/sshrsakey.html
https://www.linuxsecrets.com/archlinux-wiki/wiki.archlinux.org/index.php/SSH_keys_(Italiano).html
Errori:
Per impostazione predefinita sshfs adotta un’associazione “diretta” tra UID/GID della macchina remota e quella locale, il che significa per esempio che se il proprietario di un certo file sulla macchina remota è l’utente con UID 1002 anche in locale la proprietà del file sarà attribuita all’utente avente UID 1002. Potrebbero dunque sorgere problemi di permessi se su macchina remota e locale non sussiste un esatta corrispondenza utenti/UID e gruppi/GID. Un modo veloce per superare tale problema è specificare lo UID/GID durante il comando per montare le risorse remote, per esempio
# sshfs [email protected]:/dir/to/mount /mnt/sshdir -o allow_other,idmap=user,uid=1001
fa sì che all’utenza usata per connettersi al server remoto sia associata in locale l’utenza avente UID 1001. Se si ha la necessità di fissare la corrispondenza di più utenze/gruppi è possibile creare degli appositi file di mappatura (si veda il manuale di sshfs).
Inoltre, per permettere l’accesso anche ad altri utenti (indipendentemente dai permessi associati ai file), è stata aggiunta l’opzione: -o allow_other
Errore 1
failed to open /dev/fuse: No such file or directory
L’errore è dovuto alla mancanza del modulo del kernel relativo a fusefs. provate questo e riavviate:
# modprobe fuse
Errore 2
mountpoint is not empty
Se si cerca di montare una risorsa in un mountpoint (esempio /mnt/sshfs) contenente già dei file, può apparire il seguente errore:
fusermount: mountpoint is not empty fusermount: if you are sure this is safe, use the 'nonempty' mount option
Le soluzioni sono:
- usare un mountpoint libero (consigliata)
- appendere, dopo il comando
sshfs
l’opzione-o nonempty
Esempio:
sshfs [email protected]:/home /mnt/sshfs-o nonempty
4. Conclusione
Penso di avervi detto tutto nel caso segnalatelo.