Différences
Ci-dessous, les différences entre deux révisions de la page.
— |
tutoriel:donnees_ubuntu_dans_logiciel_windows [Le 02/08/2025, 19:20] (Version actuelle) geole créée |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ===== Présentation ===== | ||
+ | **Le but est de décrire l'utilisation de la partition windows contenant le logiciel pour stocker ses données Ubuntu.** | ||
+ | Souvent lors d'une [[:cohabitation_ubuntu_windows|cohabitation entre Windows et Ubuntu]], une des difficultés que l'on rencontre est l'accès commun aux données pour les deux systèmes.\\ | ||
+ | |||
+ | En effet, Windows ne sachant pas nativement lire les partitions [[:systeme_de_fichiers#|EXT4]] d'Ubuntu, vous ne pourrez pas, à partir d'un Windows, accéder à vos données stockées sur une partition Ubuntu. | ||
+ | Il est donc nécessaire: | ||
+ | * Soit de stocker les données utilisateur dans [[https://doc.ubuntu-fr.org/tutoriel/partitions_communes_windows_ubuntu|une partition commune.]] | ||
+ | * Soit de stocker directement les données au même endroit que windows les stocke le plus fréquemment qui est le **C:** déjà existant. | ||
+ | |||
+ | Cet article va traiter ce dernier cas. Il est testé dans le contexte suivant Ubuntu 24.04 et windows 10 non chiffré.\\ | ||
+ | L'utilisation de ce tuto nécessite la maîtrise du [[https://doc.ubuntu-fr.org/terminal|terminal]] et du [[ https://doc.ubuntu-fr.org/presse-papier|copier/coller]]. Il est possible aussi de consulter [[https://www.youtube.com/watch?v=F7LIylN0rZc|ce lien.]] \\ Une bonne connaissance des [[https://doc.ubuntu-fr.org/permissions|autorisation d'accès]] aux fichiers est un plus | ||
+ | |||
+ | Les diverses étapes sont décrites ci-après dans le contexte suivant: un administrateur ubuntu ayant un nom différant de l'administrateur windows et facultativement deux utilisateurs standards ayant des noms identiques entre windows et ubuntu. Ce qui n'est pas obligatoire mais simplifie la compréhension. | ||
+ | |||
+ | ===== Contexte mono_utilisateur. ===== | ||
+ | C'est le cas simple où il n'existe qu'un seul utilisateur.\\ | ||
+ | Il faut d'abord vérifier que l'utilisateur est bien référencé avec le n° 1000 en frappant la commande ** id**.\\ | ||
+ | On monte la partition windows en disant que l'utilisateur est propriétaire de l'ensemble des données en ajoutant la description de la partition windows dans le fichier /etc/fstab, en créant le point de montage et en exécutant le montage.\\ | ||
+ | Exemple avec un windows ayant une étiquette "windows1". | ||
+ | <code bash>echo /dev/disk/by-label/Windows1 /media/Windows1 ntfs3 defaults,auto,nofail,force,windows_names,uid=1000,gid=1000 0 0 | sudo tee -a /etc/fstab | ||
+ | sudo mkdir -v /media/Windows1 | ||
+ | udisksctl mount -b /dev/disk/by-label/Windows1 | ||
+ | df -htntfs3</code> | ||
+ | C'est quasiment fini. | ||
+ | ===== Contexte Multi-utilisateur. ===== | ||
+ | Le contexte développé est le suivant: Chaque utilisateur a le droit de lire les documents de la famille. Quiconque n'appartenant pas à la famille, n'a aucun droit! | ||
+ | ==== Création de la famille d'utilisateurs ==== | ||
+ | <code bash>sudo addgroup famille | ||
+ | sudo adduser a famille # l'utilisateur a est l'administrateur ubuntu. | ||
+ | sudo adduser enfant1 famille | ||
+ | sudo adduser enfant2 famille </code> | ||
+ | On monte la partition windows en disant que **root** est propriétaire de l'ensemble en ajoutant la description de la partition windows dans le fichier /etc/fstab, en créant le point de montage et en exécutant le montage. Exemple avec un windows ayant une étiquette "windows1". | ||
+ | <code bash>echo /dev/disk/by-label/Windows1 /media/Windows1 ntfs3 defaults,auto,nofail,force,windows_names 0 0 | sudo tee -a /etc/fstab | ||
+ | sudo mkdir -v /media/Windows1 | ||
+ | udisksctl mount -b /dev/disk/by-label/Windows1 | ||
+ | df -htntfs3</code> | ||
+ | ==== Installer les permissions. ==== | ||
+ | Le problème embêtant est que si on définit une bonne fois pour toutes les autorisations, les nouveaux fichiers qui seront créés sous le contrôle de windows, ne seront pas intégrés dans ces autorisations et resteront la propriété de **root**.\\ | ||
+ | il est donc nécessaire de fabriquer un service système qui affectera les bonnes permissions pour la totalité des fichiers existants à chaque démmarrage de ubuntu. | ||
+ | === Solution simple === | ||
+ | Chaque utilisateur ubuntu accède à la totalité de ses répertoires windows et en lecture à tous les fichiers des autres utilisateurs. | ||
+ | <code bash>sudo su -c 'cat <<EOF>/etc/systemd/system/Appairage.service | ||
+ | [Unit] | ||
+ | Description=Appairage des utilisateurs. | ||
+ | After=multi-user.target | ||
+ | [Service] | ||
+ | ExecStartPre=chown -R enfant1:famille /media/Windows1/Users/enfant1 | ||
+ | ExecStartPre=chmod -R 750 /media/Windows1/Users/enfant1 | ||
+ | ExecStartPre=chown -R enfant2:famille /media/Windows1/Users/enfant2 | ||
+ | ExecStartPre=chmod -R 750 /media/Windows1/Users/enfant2 | ||
+ | ExecStartPre=chown -R a:famille /media/Windows1/Users/franc | ||
+ | ExecStartPre=chmod -R 750 /media/Windows1/Users/franc | ||
+ | ExecStartPre=chmod -R 777 /media/Windows1/Public | ||
+ | ExecStart=echo Appairage réussi. | ||
+ | [Install] | ||
+ | WantedBy=multi-user.target | ||
+ | EOF'</code> | ||
+ | |||
+ | === Solution avec un script === | ||
+ | Permet de n'autoriser que quelques répertoires. | ||
+ | <code bash>sudo su -c 'cat <<EOF>/etc/systemd/system/Appairage.service | ||
+ | [Unit] | ||
+ | Description=Appairage des utilisateurs. | ||
+ | After=multi-user.target | ||
+ | [Service] | ||
+ | ExecStart=bash /home/a/Appairage.sh | ||
+ | ExecStartPost=echo Appairage réussi. | ||
+ | [Install] | ||
+ | WantedBy = multi-user.target | ||
+ | EOF'</code> | ||
+ | On définit les répertoires habituels. On peut ne pas prendre tous les répertoires de cette liste. | ||
+ | <code bash>cat <<'EOF'>$HOME/Appairage.sh | ||
+ | #!/bin/bash | ||
+ | PDM=/media/Windows1/Users #Point de montage de la partition windows | ||
+ | Appairer () { | ||
+ | chown $1:famille $PDM/$2 | ||
+ | chmod 750 $PDM/$2 | ||
+ | chown -R $1:famille $PDM/$2/{Desktop,Documents,Downloads,Music,Pictures,Videos} | ||
+ | chown $1:famille $PDM/$2/AppData | ||
+ | chown $1:famille $PDM/$2/AppData/Roaming | ||
+ | chown $1:famille $PDM/$2/AppData/Roaming/Microsoft | ||
+ | chown $1:famille $PDM/$2/AppData/Roaming/Microsoft/Windows | ||
+ | chown -R $1:famille $PDM/$2/AppData/Roaming/Microsoft/Windows/Templates | ||
+ | chmod -R 750 $PDM/$2/{Desktop,Documents,Downloads,Music,Pictures,Videos} | ||
+ | chmod -R 750 $PDM/$2/AppData/Roaming/Microsoft/Windows/Templates | ||
+ | } | ||
+ | Appairer enfant1 enfant1 # Utilisateur ubuntu Puis Utilisateur windows | ||
+ | Appairer enfant2 enfant2 # Utilisateur ubuntu Puis Utilisateur windows | ||
+ | Appairer a franc # Utilisateur ubuntu Puis Utilisateur windows | ||
+ | # Traiter le répertoire Public..... | ||
+ | chmod -R 777 $PDM/Public | ||
+ | EOF | ||
+ | sleep 1 | ||
+ | sudo chmod +x $HOME/Appairage.sh # Autoriser l'exécution du fichier.</code> | ||
+ | ==== Tester le service ==== | ||
+ | <code bash>systemctl stop Appairage.service && systemctl daemon-reload && systemctl enable Appairage.service && systemctl start Appairage | ||
+ | ls -l /media/Windows1/Users | ||
+ | ls -l /media/Windows1/Users/enfant1 | grep " enfant" | ||
+ | ls -l /media/Windows1/Users/enfant2 | grep " enfant" | ||
+ | ls -l /media/Windows1/Users/franc | grep " a" | ||
+ | echo test>/media/Windows1/Users/franc/AppData/Roaming/Microsoft/Windows/Templates/test.txt | ||
+ | echo test>/media/Windows1/Users/enfant1/AppData/Roaming/Microsoft/Windows/Templates/test.txt | ||
+ | head -1 /media/Windows1/Users/enfant1/Downloads/desktop.ini</code> | ||
+ | ==== Rebooter et vérifer l'exécution ==== | ||
+ | <code bash>journalctl --no-pager -b -g appairage | ||
+ | systemctl status Appairage </code> | ||
+ | |||
+ | ===== Reste à la charge de chaque utilisateur ===== | ||
+ | On peut ne pas prendre tous ces répertoires. | ||
+ | ==== La création des redirections standards et leurs figeages. ==== | ||
+ | <code bash>USER2=$USER #Dans le cas où les deux noms sont identiques ou, dans le cas contraire il faut préciser le nom windows: USER2=franc | ||
+ | PDM=/media/Windows1/Users | ||
+ | xdg-user-dirs-update --set DESKTOP $PDM/$USER2/Desktop | ||
+ | xdg-user-dirs-update --set DOCUMENTS $PDM/$USER2/Documents | ||
+ | xdg-user-dirs-update --set PICTURES $PDM/$USER2/Pictures | ||
+ | xdg-user-dirs-update --set MUSIC $PDM/$USER2/Music | ||
+ | xdg-user-dirs-update --set DOWNLOAD $PDM/$USER2/Downloads | ||
+ | xdg-user-dirs-update --set VIDEOS $PDM/$USER2/Videos | ||
+ | xdg-user-dirs-update --set TEMPLATES $PDM/$USER2/AppData/Roaming/Microsoft/Windows/Templates | ||
+ | xdg-user-dirs-update --set PUBLIC $PDM/Public | ||
+ | cp -nv /etc/xdg/user-dirs.conf $HOME/.config && sed -i 's/True/False/' $HOME/.config/user-dirs.conf</code> | ||
+ | ==== Le basculement des fichiers standards ==== | ||
+ | <code bash>cp -vru $HOME/Documents/* $PDM/$USER2/Documents && rm -rv $HOME/Documents && ln -s $PDM/$USER2/Documents $HOME/Documents | ||
+ | cp -vru $HOME/Images/* $PDM/$USER2/Pictures && rm -rv $HOME/Images && ln -s $PDM/$USER2/Pictures $HOME/Images | ||
+ | cp -vru $HOME/Musique/* $PDM/$USER2/Music && rm -rv $HOME/Musique && ln -s $PDM/$USER2/Music $HOME/Musique | ||
+ | cp -vru $HOME/Vidéos/* $PDM/$USER2/Videos && rm -rv $HOME/Vidéos && ln -s $PDM/$USER2/Videos $HOME/Vidéos | ||
+ | cp -vru $HOME/Téléchargements/* $PDM/$USER2/Downloads && rm -rv $HOME/Téléchargements && ln -s $PDM/$USER2/Downloads $HOME/Téléchargements | ||
+ | cp -vru $HOME/Bureau/* $PDM/$USER2/Desktop && rm -rv $HOME/Documents & sleep 1 ; ln -s $PDM/$USER2/Desktop /$HOME/Documents | ||
+ | cp -vru $HOME/Public/* $PDM/Public && rm -rv $HOME/Public & sleep 1 ; ln -s $PDM/Public $HOME/Public | ||
+ | cp -vru $HOME/Modèles/* $PDM/$USER2/AppData/Roaming/Microsoft/Windows/Templates && rm -rv $HOME/Modèles && ln -s $PDM/$USER2/AppData/Roaming/Microsoft/Windows/Templates $HOME/Modèles | ||
+ | ls -Ll $HOME/Public</code> |