Outils pour utilisateurs

Outils du site


articles:linux_mount

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
articles:linux_mount [2024/06/28 14:24] – créée fraterarticles:linux_mount [2024/10/01 20:20] (Version actuelle) – [Mount windows Network Share] frater
Ligne 1: Ligne 1:
 ====== Linux mount & usage ====== ====== Linux mount & usage ======
  
-la commande ''mount'' de linux permet de connecter un file-system sur un folder linux; le plus simple et le plus connu étant le fameux ''mount /dev/sbxx''; mais Linux est tellement capable de faire mieux (et plus).+La commande ''mount'' de Linux permet de connecter un file-system sur un folder linux; le plus simple et le plus connu étant le fameux ''mount /dev/sbxx''; mais Linux est tellement capable de faire mieux (et plus).
  
 Ce billet/article est avant tout un post-it de mes notes. Ce billet/article est avant tout un post-it de mes notes.
Ligne 10: Ligne 10:
  
 <cli> <cli>
-fdisk -l /path/to/image+root@hades-vm:~# fdisk -l /home/frater/images/recalbox.img
  
 Disk recalbox.img: 1.9 GiB, 2002632192 bytes, 3911391 sectors Disk recalbox.img: 1.9 GiB, 2002632192 bytes, 3911391 sectors
 +
 Units: sectors of 1 * 512 = 512 bytes Units: sectors of 1 * 512 = 512 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes
Ligne 24: Ligne 25:
 </cli> </cli>
  
-lookup for "Startparam and Unit size and calculate the offset : +les deux paramètres qui nous intéressent ici sont "**Units**" et la colonne "**Start**"; ces informations font nous permettre de calculer l'offset //DANS// le fichier image que vous désirez monter.
-1263*512 = 646656 for partition #1 +
-132335*512 = 67755520 for partition #2+
  
 +ici, notre bloc size (unit) est de 512 bytes.
  
 +<cli>
 +  1263*512 = 646656     # offset for partition #1
 +132335*512 = 67755520   # offset for partition #2
 +</cli>
  
 +Une fois cette valeur d'offset calculée, on peut la passer à la commande ''mount'', via l'option "-o":
  
 +<cli>
 +root@hades-vm:~# mkdir /mnt/rec-img                                        # create the mounting folder (if not already present)
 +root@hades-vm:~# mount -o loop,offset=67755520 recalbox.img /mnt/rec-img/  # mount second partition
 +</cli>
  
 +===== Monter une image disque qcow2 (qemu) =====
 +
 +Comme le format ''qcow2'' est un format distribuable via réseau, il est plus simple pour monter une image ''qcow2'' de passer par le device ndb (network block device).
 +
 +<WRAP center round info >
 +On Linux, network block device (''NBD'') is a network protocol that can be used to forward a block device (typically a hard disk or partition) from one machine to a second machine. As an example, a local machine can access a hard disk drive that is attached to another computer. 
 +</WRAP>
 +
 +nous allons donc monter notre image qcow2, sur un device nbd; mais avant il convient de paramétrer un peu le device que nous allons utiliser; notamment en augmentant le nombre de partitions par device à 8 (qui est par défaut à 0); par défaut nbd créé 16 device, ce qui est beaucoup; nous allons nous limiter à 2 devices.
 +
 +<cli bash>
 +root@pve02:~# modprobe nbd nbds_max=2
 +root@pve02:~# modprobe nbd max_part=8
 +root@pve02:~# ls -la  /dev/nbd*
 +brw-rw---- 1 root disk 43,  0 Jul 31 23:19 /dev/nbd0
 +brw-rw---- 1 root disk 43, 32 Jul 31 23:19 /dev/nbd1
 +</cli>
 +
 +Une fois nos devices créer, on peut y connecter notre image ''qcow2''.
 +<cli bash>
 +root@pve02:~# qemu-nbd --connect=/dev/nbd0 /mnt/pve/nfs-vmstore/images/101/vm-101-disk-0.qcow2
 +</cli>
 +pour vérifier que la connection est effective, on va lister les partitions:
 +
 +<cli bash>
 +root@pve02:~# fdisk /dev/nbd0 -l
 +Disk /dev/nbd0: 64 GiB, 68719476736 bytes, 134217728 sectors
 +Units: sectors of 1 * 512 = 512 bytes
 +Sector size (logical/physical): 512 bytes / 512 bytes
 +I/O size (minimum/optimal): 512 bytes / 512 bytes
 +Disklabel type: gpt
 +Disk identifier: 036E89F2-400F-4BB8-B1D5-58FF2850708F
 +
 +Device        Start       End   Sectors  Size Type
 +/dev/nbd0p1    2048    923647    921600  450M Windows recovery environment
 +/dev/nbd0p2  923648   1126399    202752   99M EFI System
 +/dev/nbd0p3 1126912   1159167     32256 15.8M Microsoft reserved
 +/dev/nbd0p4 1159168 134215679 133056512 63.4G Microsoft basic data
 +/dev/nbd0p5 1126400   1126911       512  256K unknown
 +
 +Partition table entries are not in disk order.
 +</cli>
 +
 +Si fdisk affiche des partitions, comme pour un disque, c'est gagné; il suffit de //monter// la/les partitions voulues via la commande ''mount'' classique:
 +
 +<cli bash>
 +root@pve02:~# mount /def/nbd0p4 /mnt/loop
 +</cli>
 +
 +on peut ensuite gérer les fichiers/dossiers normalement:
 +
 +<cli bash>
 +root@pve02:~# ls -lah /mnt/loop/
 +total 9.3G
 +dr-x------ 1 root root 4.0K Jul 28 18:11  .
 +drwxr-xr-x 4 root root 4.0K Jul 31 21:51  ..
 +dr-x------ 1 root root    0 Jun 17  2022 '$Recycle.Bin'
 +-r-------- 1 root root 381K Feb  2  2018  bootmgr
 +-r-------- 1 root root    1 Jul 16  2016  BOOTNXT
 +dr-x------ 1 root root    0 Jun 17  2022 'Documents and Settings'
 +-r-------- 1 root root 8.0G Jul 28 17:30  hiberfil.sys
 +dr-x------ 1 root root    0 Jul  3  2022  inetpub
 +-r-------- 1 root root 1.3G Jul 28 17:30  pagefile.sys
 +dr-x------ 1 root root    0 Jun 18  2022  PerfLogs
 +dr-x------ 1 root root 4.0K Jul 25 23:23  ProgramData
 +dr-x------ 1 root root 8.0K Jul 25 23:23 'Program Files'
 +dr-x------ 1 root root 4.0K Jul 26 15:06 'Program Files (x86)'
 +dr-x------ 1 root root 4.0K Jul  3  2022  Python26
 +dr-x------ 1 root root    0 Jun 17  2022  Recovery
 +dr-x------ 1 root root 4.0K Aug 21  2022 'System Volume Information'
 +dr-x------ 1 root root 4.0K Jul  3  2022  Users
 +dr-x------ 1 root root  24K May 20  2023  Windows
 +</cli>
 +
 +Pour libérer l'image, il faut démonter ''umount'' et ensuite déconnecter l'image:
 +
 +<cli bash>
 +root@pve02:~# umount /mnt/loop/
 +root@pve02:~# qemu-nbd --disconnect /dev/nbd0 
 +/dev/nbd0 disconnected
 +</cli>
 +
 +si vous n'avez pas d'autre images a traiter; vous pouvez retirer les devices : 
 +
 +<cli bash>
 +root@pve02:~# rmmod nbd
 +</cli>
 +
 +===== Monter un serveur distant via SSH =====
 +
 +Qui n'a jamais rêver de pouvoir modifier des fichiers //distants// sans pour autant se charger de les uploader?
 +
 +Cette note suppose que vous avez 2 linux disponibles (je n'ai pas tester via ces machines Windows).
 +
 +sur le "serveur" (pc distant) il faut s'assurer d'avoir un user local pouvant se connecter en SSH et qui dispose des droits suffisant sur le folder que l'on désire accéder.
 +
 +sur le "client" il faut installer les outils ''sshfs'':
 +
 +<cli>
 +frater@hades-vm:~# apt install sshfs
 +Reading package lists... Done
 +Building dependency tree... Done
 +Reading state information... Done
 +The following additional packages will be installed:
 +  fuse3
 +The following NEW packages will be installed:
 +  fuse3 sshfs
 +0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
 +Need to get 81.6 kB of archives.
 +After this operation, 227 kB of additional disk space will be used.
 +Do you want to continue? [Y/n] y
 +Get:1 http://deb.debian.org/debian bookworm/main amd64 fuse3 amd64 3.14.0-4 [35.9 kB]
 +Get:2 http://deb.debian.org/debian bookworm/main amd64 sshfs amd64 3.7.3-1.1 [45.6 kB]
 +Fetched 81.6 kB in 0s (519 kB/s)
 +Selecting previously unselected package fuse3.
 +(Reading database ... 42718 files and directories currently installed.)
 +Preparing to unpack .../fuse3_3.14.0-4_amd64.deb ...
 +Unpacking fuse3 (3.14.0-4) ...
 +Selecting previously unselected package sshfs.
 +Preparing to unpack .../sshfs_3.7.3-1.1_amd64.deb ...
 +Unpacking sshfs (3.7.3-1.1) ...
 +Setting up fuse3 (3.14.0-4) ...
 +Setting up sshfs (3.7.3-1.1) ...
 +frater@hades-vm:~# modprobe fuse                 # not sure that it's still necessary
 +</cli>
 +
 +**mount first time**
 +
 +<cli>
 +frater@hades-vm:~# sshfs [-o idmap=user,allow_other] [-C] [-p 1234] remote_ssh_frater@heaven-hades.noloop.cloud:/home/frater /mnt/remote-heaven/
 +The authenticity of host '172.16.0.254 (172.16.0.254)' can't be established.
 +ED25519 key fingerprint is SHA256: C9tEvcWVV6U9GNYfwQVpRiyxwfmnEBEovmsYqShk6k5.
 +This key is not known by any other names.
 +Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
 +(remote_ssh_frater@heaven-hades.noloop.cloud) Password for remote_ssh_frater@heaven-hades:
 +</cli>
 +
 +Vous devez [[https://bitlaunch.io/blog/how-to-check-your-ssh-key-fingerprint/|confirmer et vérifier]] votre fingerprint.
 +
 +Vous devrez également vous authentifier en suivant les politiques d’authentification du serveur distant (mot de passe et/ou clé publique, mfa, etc.).
 +
 +Si aucune erreur n'est affichée, vous pourrez lire et écrire dans le dossier ''/home/frater'' du serveur, via le folder local ''/mnt/remote-heaven/''.
 +
 +**Paramètres**
 +
 +{{tablelayout?rowsHeaderSource=Auto&float=left}}
 +^  argument  ^  description                         ^
 +|  -C        | enable compression during transfert  |
 +|  -o        | options to apply (see below)         |
 +
 +**ssh options (-o)**
 +
 +^  option  ^  descr                                                                                                                                                                                                                                                                                               ^
 +| idmap    | sshfs peut convertir automatiquement les identifiants des utilisateurs, groupes locaux et distants.\\ Utilisez l'option ''idmap=none'' pas de conversion (par défaut)\\ Utilisez l'option ''idmap=user'' pour convertir les valeurs UID/GID de l'utilisateur distant par les valeurs UID/GID locale  |
 +
 +allow_other : allow other users to use the mount point (ex root or other local user)
 +
 +**Clé publique - clé privée**
 +
 +Si vous désirez monter ce folder automatiquement (sans mot de passe) il est possible de préciser un couple de clés publique-privée.
 +
 +<cli>
 +frater@hades-vm:~# ssh-keygen
 +</cli>
 +Nous allons commencer par créer une clé publique, lors de la génération, ne précisez pas de "passphrase", a moins que vous ne désiriez entrer cette phrase a chaque fois; c'est un bon réflexe pour la sécurité, par contre c'est pénible pour l'automation.
 +
 +<cli>
 +frater@hades-vm:~# ssh-copy-id -i /$HOME/.ssh/id_rsa remote_user_name@servername-or-ip
 +</cli>
 +Via cette commande, nous allons copier la clé publique sur le serveur, durant cette commande, il vous sera demandé (une dernière fois) le mot de passe de 'remote_user_name'; si vous avez préciser une passphrase, elle vous sera également demandée.
 +
 +**Linux Distant**
 +on peut vérifier la bonne copie des clés, sur le "serveur" distant, il suffit de vérifier le fichier des clés autorisées:
 +
 +<cli>
 +frater@hades-vm:~# cat /home/remote_user_name/.ssh/authorized_keys
 +ssh-rsa AAAAB3NzaC1...
 +...2ahpw== frater@hades-vm
 +</cli>
 +
 +le fichier commence par un "ssh-rsa", une série de chiffres et lettre (la clé) et se termine par des informations de connexion ''user_name@remote_client'', c'est habituellement user_name@local_client_ip_or_name.
 +
 +**En local**
 +
 +pour vérifier si l'échange de clés est correctement installé, on peut faire un test via la commande suivante:
 +
 +<cli>
 +ssh remote_user@servername-or-ip
 +</cli>
 +
 +===== Mount read-only NTFS =====
 +
 +Il est possible de monter également une partition, une image "formaté" en NTFS.
 +
 +**Monter une partition**
 +<cli>
 +mount -t NTFS -o ro /dev/sdxx /mnt/loop
 +</cli>
 +
 +**Monter un fichier image**
 +<cli>
 +mount -t vfat -o loop,ro,noexec image.img /mnt/loop
 +</cli>
 +
 +il est également possible de préciser un offset dans l'image:
 +<cli>
 +mount -t vfat -o loop,ro,noexec,offset=63 image.img /mnt/loop
 +</cli>
 +
 +===== Mount windows Network Share =====
 +
 +**install pre-requis**
 +
 +<cli>
 +root@hades-vm:~# apt-get install cifs-utils
 +</cli>
 +
 +temporary mount:
 +<cli>
 +root@hades-vm:~# mount -t cifs //[SERVER.DOMAIN.LOCAL]/[SHARE] /mnt/[MOUNT_DIR] -o username=[USERNAME],password=[PASSWORD],domain=[DOMAIN_OR_WORKGROUP]
 +</cli>
 +
 +or if you have credentials file.
 +
 +<cli>
 +root@hades-vm:~# mount -t cifs //[SERVER.DOMAIN.LOCAL]/[SHARE] /mnt/[MOUNT_DIR] -o credentials=/root/.smbcredentials
 +</cli>
 +
 +**permanent mount**
 +
 +<cli>
 +root@hades-vm:~# nano /etc/fstab
 +</cli>
 +
 +il faut ensuite ajouter cette ligne à la fin du fichier:
 +<code>
 +//[SERVER.DOMAIN.LOCAL]/[SHARE] /mnt/[MOUNT_DIR] cifs credentials=/etc/.smbcredentials,iocharset=utf8 0 0
 +</code>
 +
 +**credentials file**
 +
 +Lors du montage du partage, il est possible de préciser un fichier d'authentification; cette précision permet également de monter le partage lors du boot de linux.
 +
 +Dans le fichier ''fstab'', on a préciser un fichier ''.smbcredentials'' (localisé dans le répertoire ''etc'' du système); il est important limiter la lecture/modifications aux seuls utilisateurs qui doivent accéder/modifier ce fichier
 +
 +<file ini .smbcredentials>
 +username=[USERNAME]
 +password=[PASSWORD]
 +domain=[DOMAIN_OR_WORKGROUP]
 +</file>
 +===== Mounting macOSX filesystem =====
 +
 +**install "drivers"**
 +
 +<cli>
 +root@hades-vm:~# apt-get install hfsplus
 +</cli>
 +
 +**mount drive in Read Only**
 +<cli>
 +root@hades-vm:~# mkdir /media/loop                                         # create folder if needed
 +root@hades-vm:~# mount -o ro /dev/hdxx  /media/loop  -t hfsplus
 +</cli>
 +
 +====== dismount ======
 +
 +<cli>
 +root@hades-vm:~# umount /media/loop
 +</cli>
  
articles/linux_mount.1719577466.txt.gz · Dernière modification : de frater