Droits

Fermé
Nicolas - 10 nov. 2004 à 01:47
 Nicolas - 10 nov. 2004 à 08:58
Salut,

J'ai le prolème suivant, je voudrais modifier les droits de tous les fichiers contenus dans un repertoire, sans modifier les droits des sous-dossiers.

Concrètement, je voudrais changer les droits de tous les fichiers de ma partition /data/ à lecture + écriture, sans éxécution, mais un :

chmod -R 644 /data/*

change les droits des sous-dossiers, à l'intérieur desquels on ne peut même plus naviguer, car le droit d'éxécution n'est plus là.

Y'at-il des arguments à mettre dans chmod, d'autres solutions ?

Merci d'avance,

Nico

3 réponses

jisisv Messages postés 3645 Date d'inscription dimanche 18 mars 2001 Statut Modérateur Dernière intervention 15 janvier 2017 955
10 nov. 2004 à 04:43
Moi ce que j'utilise, c'est find combiné avec xargs
find monrepertoire -type d |xargs chmod 550

(les sous répertoires de "monrepertoire" ne seront plus accessibles par le "reste du monde"
find monrepertoire -type f -maxdepth 1 |xargs chmod 554

(plus d'exécution sur les fichiers dans le sous répertore immédiat "monrepertoire", pour le reste du monde)
L'option type permet de restreindre la recherche fichier normaux, répertoires, pipes, sockets...
donc
man find; man xargs

Essaye
find /data -type d |xargs chmod 755

find /data -type f |xargs chmod 644


S'il ya des fichiers dont le nom contient des espaces, utilise l'option
-print0 avec find et l'option --null avec xargs .
voir par exemple
http://forum.hardware.fr/forum2.php3?post=25352&cat=11
http://www.unixreview.com/documents/s=8274/sam0306g/

Johan
Gates gave you the windows.
GNU gave us the whole house.(Alexandrin)
0
jisisv Messages postés 3645 Date d'inscription dimanche 18 mars 2001 Statut Modérateur Dernière intervention 15 janvier 2017 955
10 nov. 2004 à 04:56
.. suite (fichier merd.. avec un nom contenant un espace)
johand@horus:~/tmp/test$ touch "Un espace"
johand@horus:~/tmp/test$ ls -l Un\ espace
-rw-r--r--  1 johand johand 0 Nov 10 04:52 Un espace
johand@horus:~/tmp/test$ find . -type f -print0 |xargs --null chmod 555
johand@horus:~/tmp/test$ ls -l Un\ espace
-r-xr-xr-x  1 johand johand 0 Nov 10 04:52 Un espace


Johan
Gates gave you the windows.
GNU gave us the whole house.(Alexandrin)
0
Merci beaucoup, ça a marché.

Par contre, je ne saisis pas exactement comment ça marche, ce serait possible d'avoir une ou deux explications s'il vous plait ?

Bonne journée,

Nico
0