Bonjour,
Suite à un petit problème de droits, sur un fichier, j'ai modifié les droits sur tout mon home !
Afin de pouvoir à nouveau lancer ma session, j'ai du faire un :
chmod -R 777 /home/moi
Ca ma sortie de ma galère, mais ce n'est pas très sécurisé n'est pas !
Mais j'ai une idée lumineuse mais bien au dessus de mes capacités !
J'effectue régulièrement des sauvegarde de mon home sur un DD externe.
J'aimerais donc récupérer les droits de mes fichiers de sauvegarde, pour les remettre sur mon home courant.
Je ne veux pas faire une restauration complète, car je ne veux tout de même garder mes mise à jour effectuées depuis (ex garder les mails mais réatribuer les bon droit au fichiers de mon profil Thunderbird. )
Mes fichiers de sauvegarde sont ici :
/mnt/sauvegarde/home/moi
mon home :
/home/moi/
Si vous avez une idée elle sera la bienvenue.
Je ne veux pas avoir à changer un à un les droits des milliers de fichiers de mon home !
Merci.
# tar
Posté par psychoslave__ (site web personnel) . Évalué à 2.
--same-owner
--same-permissions
Pour plus d'info, voir le manuel de tar.
Voila, j'espère que j'ai bien compris ton problème, parce que ça me paraît trop simple. :)
[^] # Re: tar
Posté par Joris Dedieu (site web personnel) . Évalué à 1.
[^] # Re: tar
Posté par peck (site web personnel) . Évalué à 2.
Mais ça ne veut pas dire que la méthode n'est pas bonne, il suffit juste de la précéder d'une restauration de la sauvegarde.
- tar du home
- recupération de la sauvegarde
- untar du home sans les droits
[^] # Re: tar
Posté par alfafa . Évalué à 1.
[^] # Re: tar
Posté par peck (site web personnel) . Évalué à 2.
# Pourquoi faire si compliqué ?
Posté par Joris Dedieu (site web personnel) . Évalué à 2.
Pourquoi faire si compliqué ?
Tu met les répertoires en 750 ou 755 et les fichiers en 640 ou 644.
find /home/moi -type d -exec chmod 750 {} \;
find /home/moi -type f -exec chmod 640 {} \;
Il restera les exécutables. Tu peux travailler avec des patterns :
for i in pl sh py rb
do
find /home/moi -type f -name "*.$i" -exec chmod +x {} \;
done
[^] # Re: Pourquoi faire si compliqué ?
Posté par alfafa . Évalué à 1.
[^] # Re: Pourquoi faire si compliqué ?
Posté par B16F4RV4RD1N . Évalué à 4.
Par contre récupérer une vieille sauvegarde pour remettre les droits des fichiers, là c'est carrément crade, surtout que logiquement tous les fichiers dans ton /home devraient t'appartenir, avec un 640 pour les fichiers par exemple (perso je n'ai pas d'exécutables dans mon /home, sauf des scripts, et ils sont tous dans le même dossier)
Par rapport à la question d'unison évoquée plus bas, c'est vraiment l'idéal selon moi pour synchroniser ses données entre plusieurs sauvegardes / sources. Je l'utilise en local avec un disque dur externe, et par internet (ssh), pour synchroniser les données avec un autre ordinateur. Récemment j'ai eu un vilain crash sur mon ordinateur, et j'ai eu des fichiers corrompus. J'ai pu ainsi vérifier rapidement que mes données importantes n'avaient pas eu de modifications. Mais d'un autre côté si unison compare juste les changements avec la date (je ne sais pas exactement comment cela fonctionne), possible que 2 fichiers restent différents si la différence vient d'une corruption sauvage et non pas de façon normale.
Ici cela suggère que la corruption a été bien détectée (mais pas dans un sens qui l'arrageait) :
http://marc.info/?l=unison-users&m=120101133132567&w(...)
Quoi qu'il en soit Unison permet aussi de vérifier par un diff la différence entre les fichiers à synchroniser, cela permet de rapidement tester si le changement est normal ou pas.
Only wimps use tape backup: real men just upload their important stuff on megaupload, and let the rest of the world ~~mirror~~ link to it
# unison ?
Posté par Tristan RENAUD . Évalué à 1.
http://www.cis.upenn.edu/~bcpierce/unison/download.html
Bon courage.
[^] # conduit
Posté par psychoslave__ (site web personnel) . Évalué à 2.
[^] # Re: conduit
Posté par alfafa . Évalué à 1.
# idee comme ça
Posté par castorpilot . Évalué à 3.
premierement, aller dans /mnt/sauvegarde/home/moi, faire un find dans argument pour recuperer la liste de tous les fichiers.
Ensuite :
while read fichier;
fichier_home=`echo $fichier | sed 's#/mnt/sauvegarde##'`
chmod --reference $fichier $fichier_home
done < liste
Bon, c'est pas vraiement testé. La bonne idée la dedans, c'est le coup du chmod --reference. Ensuite, faut blinder un peut plus le script (nom de fichier avec espaces, ...)
[^] # Re: idee comme ça
Posté par alfafa . Évalué à 1.
Par contre je me dit que plutôt de faire un script pour ça, je vais peux-être tout simplement faire la liste des fichier.
Puis trier les fichiers par droits à supprimer. Ca me fera 8 listes : tous mes fichiers étant en 777, il y aura les listes suivantes :
user-w
user-x
grp-r
grp-w
grp-x
other-r
other-w
oter-x
(pas de user-r évidement)
Puis je vais changer les droits de mes fichiers avec les listes créer.
[^] # Re: idee comme ça
Posté par alfafa . Évalué à 2.
Il n'y a plus qu'a tester :
Créer la liste des fichiers :
find /mnt/suavegarde/moi/* -printf %p\\t%m\\n > liste-fichier
me donne la liste des fichier avec leurs droits. La plus part sont en 640
Donc je commence à faire la manip de d-jo.
ensuite, je récupère les listes des autres droits :
find /mnt/suavegarde/moi/* -perm 777 -printf %p\\n > liste-777
find /mnt/suavegarde/moi/* -perm 600 -printf %p\\n > liste-600
...
Ensuite, le petit script suivant me permet de changer les droits de mes fichiers :
$ scrpit-chmod 600 liste-600
#script-chmod
while read i
do
chmod "$1" "$i"
done < "$2"
Merci pour vos contributions.
[^] # Re: idee comme ça
Posté par Christophe --- . Évalué à 1.
Tant qu'a faire un find, tu peux faire un peu plus simple:
find /mnt/suavegarde/moi/ -printf 'chmod %m %p' | sed -e 's@/mnt/suavegarde/moi@/home/moi@' | sh
Cela devrait normalement passer.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.