chmod: mettre une arborescence en 400

chmod: mettre une arborescence en 400 - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 12-05-2003 à 20:24:52    

j'ai un problème à la con. je veux passer une arborescence complète en 400, mais les dossiers doivent etre 500.
 
c'est con comme problème, mais j'y arrive pas
 
le chmod -R u=rX ./leRepertoire ne fonctionne pas (tous les fichiers sont en 500). bref faut que je fasse un script...???

Reply

Marsh Posté le 12-05-2003 à 20:24:52   

Reply

Marsh Posté le 12-05-2003 à 20:44:36    

putain de nom avec des esapces, ça marche po le script!

Reply

Marsh Posté le 12-05-2003 à 21:06:04    

et un octal ca marche pas ?
 
chmod 400 -R
 
moi ca marche, il me semble


---------------
Le droit à la différence s'arrête là où ça commence à m'emmerder sérieusement.
Reply

Marsh Posté le 12-05-2003 à 21:09:52    

ben non, par ce que les répertoires sont vérouilles et impossible à traverser. les rep doivent etre en 500 et les fichiers en 400

Reply

Marsh Posté le 12-05-2003 à 21:20:46    

et avec un if derrière un find ?
genre :

Code :
  1. for rep in `find /blabla/` ; do
  2. if [ -d $rep ]; then chmod 500 $rep
  3. else chmod 400 $rep
  4. fi
  5. done


---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
Reply

Marsh Posté le 12-05-2003 à 21:30:20    

ben j'avais fait ça, le seul problème c'est que j'ai nom avec des espaces...

Reply

Marsh Posté le 12-05-2003 à 21:31:14    

effectivement, je viens d'essayer et ça chie dans la colle...


---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
Reply

Marsh Posté le 12-05-2003 à 21:32:49    

c'est un problème récurrent que j'ai, j'arrive pas à banaliser les caractères spéciales, ça me fait chier de devoir faire un script en python ou perl à chaque fois que j'ai ce genre de rpoblème

Reply

Marsh Posté le 12-05-2003 à 21:43:25    

et en passant par un fichier dans lequel on encadrerait toutes les lignes par " " ? (je le ferais bien, mais je maitrise pas du tout sed :( )


---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
Reply

Marsh Posté le 12-05-2003 à 21:59:54    

le problème c'est que l lsite des caractères spécieaux, je la conanit po... je ferais un script en python plus tard

Reply

Marsh Posté le 12-05-2003 à 21:59:54   

Reply

Marsh Posté le 12-05-2003 à 22:02:04    


 

Code :
  1. for rep in `find /blabla/` ; do
  2. if [ -d $rep ]; then chmod 500 $rep
  3. else chmod 400 $rep
  4. fi
  5. done


 
Bof :)  
 
 
mais plutot  
 

Code :
  1. for rep in "$(find ./blabla )"
  2. do
  3. brol brol
  4. done

Reply

Marsh Posté le 12-05-2003 à 22:24:10    

euh le backquoute c'est pareil que le $()
 
en attendant, j'utilise ça
 

Code :
  1. def chmod(void, dirname, names):
  2.         import os, stat
  3.         for name in names :
  4.                 fullpath=os.path.join(dirname, name)
  5.                 mode=os.stat(fullpath)[stat.ST_MODE]
  6.                 if stat.S_ISDIR(mode):
  7.                         os.chmod(fullpath, 0500)
  8.                 elif stat.S_ISREG(mode):
  9.                         os.chmod(fullpath, 0400)
  10. if __name__=='__main__':
  11.         import sys, os
  12.         for dir in sys.argv[1:]:
  13.                 os.path.walk(dir, chmod, None)

Reply

Marsh Posté le 13-05-2003 à 06:58:08    

++Taz :  
 
1 - Si c'était pareil, tu crois que je te l'aurais proposé ?
2 - Tu es qui pour pouvoir balayer une solution sans l'essayer ?
3 - C'est la solution avec les double quotes qu'il faut essayer !

Reply

Marsh Posté le 13-05-2003 à 09:45:36    

désolé, je savais pas, et puis pourquoi faire simple quand on peut faire compliquer. ok je teste
 

[benoit@benserver dawa]$ ll
total 0
-rw-------    1 benoit   benoit          0 2003-05-13 09:42 dawa2
-rw-------    1 benoit   benoit          0 2003-05-13 09:42 dawa dawa
[benoit@benserver dawa]$ for rep in "$(find ./)"  ; do file $rep; done;
./:      directory
./dawa:  can't stat `./dawa' (No such file or directory).
dawa:    can't stat `dawa' (No such file or directory).
./dawa2: empty

et ça ne marche pas... OK?

Reply

Marsh Posté le 13-05-2003 à 11:27:18    

Et pourquoi pas un find /rep/ -type d -exec chmod 500 {} \;

Reply

Marsh Posté le 13-05-2003 à 11:41:45    

pas con  :pt1cable:

Reply

Marsh Posté le 13-05-2003 à 11:42:52    

Et à ça tu ajoutes un find /rep/ -type f -exec chmod 400 {} \; et le tour est joué  :sol:

Reply

Marsh Posté le 13-05-2003 à 11:49:31    

j'avais po penser à find

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed