J'ai besoin d'intimité. Non pas parce que mes actions sont douteuses, mais parce que votre jugement et vos intentions le sont.
5138 links
Ces manipulations ont été effectuées sur un ordi sous Debian «Jessie» ayant XFCE. Elles sont à effectuer pour la plupart en étant root.
L'état de l'art, c'est que quand on branche un disque dur externe formaté en hfs+ (avec journalisation activée), on peut accéder aux fichiers, mais pas écrire dessus.
On va donc revoir les options de montage, pour permette à votre utilisateur d'écrire sur ce disque.
Avertissement: l'écriture sur un système journalisé en hfs+ sous Linux n'est pas 100% fiable, donc évitez d'effectuer ceci sur un disque dur contenant des données importantes (ou faites-en une copie de sauvegarde).
Pour que ces opérations se déroulent bien, prenez soin d'éviter d'effectuer le montage automatique (qui s'effectue en clickant sur le périphérique qui apparaît dans votre gestionnaire de fichiers). Sinon, démontez-le, débranchez la prise USB et remettez-la.
Préparation - à effectuer une seule fois
Préparez le répertoire /mnt/ pour accueillir les points de montage:
mkdir /mnt/mac_temp
mkdir /mnt/mac
Explication: le 1er répertoire servira à effectuer un montage «classique». Le second servira à ré-effectuer un montage avec bindfs
, qui donnera une «vue» sur les fichiers du disque dur avec les permissions utilisateur permettant l'écriture.
Installez bindfs:
aptitude install bindfs
C'est une bonne idée d'installer également hfsprogs
, qui contient des outils de vérification pour les partitions Mac (fsck.hfsplus
)
aptitude install hfsprogs
Montage
Repérez sous quel nom la partition de votre disque dur externe est identifiée:
ls /dev/sd*
Note: chez moi, c'est /dev/sdb3
Repérez l'UUID de cette partition, en vous référant au lien symbolique qui lui correspond, visible avec:
ls -l /dev/disk/by-uuid
Ensuite, effectuez un montage manuel (en remplaçant l'UUID par le votre à la suite du paramètre -U
):
mount -t hfsplus -o rw,force -U abcdefghijklmnopqrstuvwxyz12345 /mnt/mac_temp
Note: l'option rw
est nécessaire pour que le montage de la partition avec journalisation se fasse.
À partir de là, on a re-monté la partition, mais votre utilisateur ne peut toujours pas écrire dessus.
Repérez l'identifiant utilisateur auquel ont été associés les droits sur le point de montage:
ls -ln /mnt/mac_temp
Note: chez moi, elles sont associées à l'utilisateur numéro (l'UID) 99, qui ne correspond à aucun utilisateur existant sur le système.
Le but est maintenant de ré-associer les permissions à votre utilisateur courant.
Si votre système est une Debian installée de façon classique, votre 1er compte utilisateur a sans doute l'UID 1000. Vérifiez, par exemple avec:
ls -ln /home
Maintenant, on créé la «vue» en ré-associant les permissions de sorte que votre utilisateur puisse écrire sur la partition:
bindfs --map=99/1000 /mnt/mac_temp /mnt/mac
Note: remplacez 99
et 1000
par les UID que vous avez relevés précédemment.
Voilà ! Vous devriez pouvoir désormais accéder à votre partition en vous rendant dans /mnt/mac
.
Script pour faciliter les montages ultérieurs
Placez un fichier où vous le souhaitez, dont le contenu ressemblera (selon l'UUID de la partition, etc...) à:
#!/bin/bash
mount -t hfsplus -o rw,force -U abcdefghijklmnopqrstuvwxyz12345 /mnt/mac_temp
bindfs --map=99/1000 /mnt/mac_temp /mnt/mac
Enregistrez ce fichier sous le nom montage_mac.sh
.
Rendez éxécutable ce fichier:
chmod +x ./montage_mac.sh
Il vous suffira alors d'éxécuter ce script (en étant root) pour effectuer le montage.
./montage_mac.sh
Addendum
Pensez à démonter les partitions avant de débrancher le disque dur.
umount /mnt/mac_plus /mnt/mac
Il semblerait qu'on puisse aussi désactiver la journalisation du disque si l'on a un Mac sous le coude, et que cela soit plus arrangeant pour effectuer le montage. Mais cette solution n'a pas été essayée.
var button = document.getElementById("copy-button"),
contentHolder = document.getElementById("content-holder");
button.addEventListener("click", function() {
// We will need a range object and a selection.
var range = document.createRange(),
selection = window.getSelection();
// Clear selection from any previous data.
selection.removeAllRanges();
// Make the range select the entire content of the contentHolder paragraph.
range.selectNodeContents(contentHolder);
// Add that range to the selection.
selection.addRange(range);
// Copy the selection to clipboard.
document.execCommand('copy');
// Clear selection if you want to.
selection.removeAllRanges();
}, false);
document.addEventListener('copy', function(e){
// We need to prevent the default copy functionality,
// otherwise it would just copy the selection as usual.
e.preventDefault();
// The copy event doesn't give us access to the clipboard data,
// so we need to get the user selection via the Selection API.
var selection = window.getSelection().toString();
// Transform the selection in any way we want.
// In this example we will escape HTML code.
var escaped = escapeHTML(selection);
// Place the transformed text in the clipboard.
e.clipboardData.setData('text/plain', escaped);
});
Excellent et ça fonctionne super bien.
Ça peut être très utile. Merci pour le partage.