Kleine Hilfe bei Shellscript:



  • Ich möchte alle Rechte ab einem Verzeichnis setzen:

    # Alle Dateien nur lesend.
    chmod 0400 /mnt /mnt/* -R
    
    # Verzeichnisse auch ausfuehrbar.
    for file in find /mnt -type d
    do
      chmod 0500 "$file"
    done
    

    Für Dateien nur Leserechte, Verzeichnisse dürfen auch ausführbar sein. Die for Schleife funktioniert aber nicht. Wie macht Ihr es?

    Viele Grüße

    Peter



  • probier mal

    for file in `find /mnt -type d`
    do
      #...
    done
    


  • peterfarge123 schrieb:

    # Alle Dateien nur lesend.
    chmod 0400 /mnt /mnt/* -R
    
    # Verzeichnisse auch ausfuehrbar.
    for file in find /mnt -type d
    do
      chmod 0500 "$file"
    done
    

    Entweder so:

    for file in `find /mnt -type d`
    do
      chmod 0500 "$file"
    done
    

    oder so (schöner):

    find /mnt -type d -exec chmod 0500 '{}' \;
    


  • chmod -R u=rX /mnt

    diese for i in `backquote`-Variante ist auch nie gut... Abgesehen von der find-exec-Option, kommt das so besser:

    find ...|while read file; do ...; done

    ist aber auch nicht 100%ig sicher...



  • Erstmal vielen Dank.
    Mit den `` funktioniert es jetzt.
    Weil einige der Verzeichnisse Sonderzeichen beinhalten mußte ich auf die exec Varinate umsteigen.

    Ich muß aber weiterhin alle Dateien zweimal durchlaufen; im ersten Durchgang die Dateiattribute setzen, im zweiten Durchgang die Verzeichnisattribute setzen. Geht das auch in einem Rutsch?



  • lies meinen Beitrag nochmal. Besonders die Überschrift und die erste Zeile...



  • Oh... habe ich übersehen. Grpße X setzt das Execute Bit für Verzeichnisse und für Dateien die für andere User bereits ein x haben.

    Vielen Dank

    Peter


Anmelden zum Antworten