Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 wink

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