#1 Le 11/02/2007, à 21:52
- syl.ubuntu
[résolu] changer les droits de tous les fichiers de /home
bonjour à tous,
Suite à une petite erreur tous mes fichiers ont le droit d'être exécutable :-(
J'ai essayé de faire
chmod -R u-x *
mais ça ne modifie que les fichiers du répertoire courant car du coups les répertoires sont impossibles à visiter, et il faut ensuite que je fasse chmod -R u+X * pour pouvoir voir mes répertoires.
Bref, j'aimerai avoir une commande qui change les droits uniquement des fichiers (et non des dossiers).
ça doit exister quelque part, mais j'ai beau chercher l'aide sur chmod je ne trouve pas.
Par avance merci de toute réponse,
syl.
Dernière modification par syl.ubuntu (Le 12/02/2007, à 14:40)
Hors ligne
#2 Le 11/02/2007, à 22:27
- fantomas62
Re : [résolu] changer les droits de tous les fichiers de /home
Bonjour,
Je ne pense pas qu'une option de chmod existe pour cela. Par contre il est assez simple de faire un script shell qui le fasse. C'est le bon moment pour que tu t'y mette!!!:P
Marc
Hors ligne
#3 Le 11/02/2007, à 23:09
- syl.ubuntu
Re : [résolu] changer les droits de tous les fichiers de /home
Merci de m'indiquer une direction de recherche.
Le mieux serait donc de faire une boucle sur l'ensemble des fichiers+répertoires,
du type:
for i in `ls ?????`; do chmod u-x $i; chmod u+X $i; done
J'ai plus qu'à trouver dans ls pour qu'il donne le nom complet des fichiers.
Syl.
Hors ligne
#4 Le 12/02/2007, à 00:16
- fantomas62
Re : [résolu] changer les droits de tous les fichiers de /home
Regarde l'option -l de ls.
Il te faudra aussi tester dans ta boucle si $i est un fichier ou un répertoire. Pour cela regarde la commande "test"
man test
Hors ligne
#5 Le 12/02/2007, à 12:54
- syl.ubuntu
Re : [résolu] changer les droits de tous les fichiers de /home
Merci de m'aider, mais je ne comprends pas très bien tes indications:
- ls -l me donne les droits des fichiers, mais ne me permet pas d'utiliser la sortie dans une boucle for du moins directement.
- Pour test, en fait je me disais que la commande chmod u-x $i suvie de chmod u+X $i permet la lecture du répertoire, si j'ai bien compris, en plus si le fichier est executable par le groupe il devient executable par l'utilisateur, cela semble donc convenir.
(j'ai bon?)
A moins que tu voulais que j'utilise test pour un programme dynamique???
Bref, je ne connais pas trop la programmation shell, et n'ai pas le temps de l'apprendre.
Voilà ce que j'ai essayé:
for i in `find -name *` -> pb ajoute les fichiers cachés
Après j'ai essayé:
for i in *
puis for i in */*
puis for i in */*/*
etc....
->pb si un dossier a un espace "fichier avec espace"
il est bien affiché si on fait echo $i, mais avec chmod il essaie de modifier "fichier" puis "avec" puis "espace".
Bref, je m'arrache les cheveux pour quelque chose qui doit être ultra classique (balayer l'enseble des fichiers de l'arborescence).
Quelqu'un qui sait programmer en shel a-t-il ça dans ses archives?
Par avance merci,
Sylvain
Hors ligne
#6 Le 12/02/2007, à 13:46
- johnny bigoude
Re : [résolu] changer les droits de tous les fichiers de /home
Salut,
Je crois que la commande find peut t'aider. Je ne oeux pas tester ça ici au travail, mais je pense que dans ton cas ça devrait donner quelque chose comme ça :
find /home * -exec chmod u-x {} \;
#7 Le 12/02/2007, à 14:02
- naholyr
Re : [résolu] changer les droits de tous les fichiers de /home
Ajoute "-type f" dans les arguments de la commande donnée par johnny pour qu'elle ne concerne que les fichiers, et pas les dossiers
Messagerie instantanée : naholyr@jabber.fr
Envoyer vos images sur le web d'un clic !
Choix du système à rebooter (graphique)
Hors ligne
#8 Le 12/02/2007, à 14:39
- syl.ubuntu
Re : [résolu] changer les droits de tous les fichiers de /home
Parfait, ça a l'iar d'avoir parfaitement marché.
J'ai fait:
find /home/sylvain * -type f -exec chmod u-x {} \;
suivi de :
find /home/sylvain* -type f -exec chmod u+X {} \;
Comme quoi quelques connaissances du shell permettent de gagner beaucoups de temps.
Merci à tous pour votre aide,
Syl.
Hors ligne