Discussion:
directories wieder ausführbar machen
(zu alt für eine Antwort)
Gerhard Wolfstieg
2013-07-05 18:40:01 UTC
Permalink
Hallo zusammen,

wie kann ich (mit chmod) exklusiv directories wieder ausführbar machen?
Wie kann ich in Zukunft ausschließlich normalen Dateien rekursiv die
Ausführbarkeit entziehen?

Oder allgemeiner: wie kann man getrennt nach Ordnern und Dateien
Attribute setzen/löschen?

Entschuldigt, wenn sich das als etwas Banales herausstellen sollte, das
ich wissen müßte. Durch "man chmod" bin ich nicht schlau genug geworden.

Grüße, Gerhard
--
Zum AUSTRAGEN schicken Sie eine Mail an debian-user-german-***@lists.debian.org
mit dem Subject "unsubscribe". Probleme? Mail an ***@lists.debian.org (engl)
Archive: http://lists.debian.org/***@anthrazit.agruppe
Hoshpak
2013-07-05 18:50:01 UTC
Permalink
Am 05.07.2013 20:31, schrieb Gerhard Wolfstieg:

Hallo Gerhard,
Post by Gerhard Wolfstieg
wie kann ich (mit chmod) exklusiv directories wieder ausführbar machen?
Wie kann ich in Zukunft ausschließlich normalen Dateien rekursiv die
Ausführbarkeit entziehen?
Oder allgemeiner: wie kann man getrennt nach Ordnern und Dateien
Attribute setzen/löschen?
es ist vielleicht nicht unbedingt der eleganteste Weg, aber ich nehme
dafür gerne find zur Hilfe. Mit "-type" kann man da ziemlich gut
zwischen Dateien und Verzeichnissen filtern. Typische Beispiele:

find -type f -exec chmod 644 {} \; (rekursiv 644 auf alle Dateien)
find -type d -exec chmod 755 {] \; (rekursiv 755 auf alle Verzeichnisse)

Bei älteren find-Versionen kann es noch notwendig sein, den zu
durchsuchenden Pfad als ersten Parameter anzugeben, bei einem aktuellen
Debian klappt das aber auch so im aktuellen Verzeichnis.

Gruß
Helmut
--
Zum AUSTRAGEN schicken Sie eine Mail an debian-user-german-***@lists.debian.org
mit dem Subject "unsubscribe". Probleme? Mail an ***@lists.debian.org (engl)
Archive: http://lists.debian.org/***@pozimski.eu
Alexander Dahl
2013-07-05 19:00:02 UTC
Permalink
Post by Gerhard Wolfstieg
wie kann ich (mit chmod) exklusiv directories wieder ausführbar machen?
Wie kann ich in Zukunft ausschließlich normalen Dateien rekursiv die
Ausführbarkeit entziehen?
Oder allgemeiner: wie kann man getrennt nach Ordnern und Dateien
Attribute setzen/löschen?
Mit chmod möglicherweise gar nicht, aber mit find:

find -L /home -type d -exec chmod +x {} +
find -L /home -type f -exec chmod -x {} +

Wenn's arg viele Dateien sind, eventuell nicht direkt find ausführen
lassen sondern nochmal nach xargs pipen.

Grüße
Alex
--
»With the first link, the chain is forged. The first speech censured,
the first thought forbidden, the first freedom denied, chains us all
irrevocably.« (Jean-Luc Picard, quoting Judge Aaron Satie)
*** GnuPG-FP: 02C8 A590 7FE5 CA5F 3601 D1D5 8FBA 7744 CC87 10D0 ***
Helmut Pozimski
2013-07-05 19:10:01 UTC
Permalink
Am 05.07.2013 20:31, schrieb Gerhard Wolfstieg:

Hallo Gerhard,
Post by Gerhard Wolfstieg
wie kann ich (mit chmod) exklusiv directories wieder ausführbar machen?
Wie kann ich in Zukunft ausschließlich normalen Dateien rekursiv die
Ausführbarkeit entziehen?
Oder allgemeiner: wie kann man getrennt nach Ordnern und Dateien
Attribute setzen/löschen?
es ist vielleicht nicht unbedingt der eleganteste Weg, aber ich nehme
dafür gerne find zur Hilfe. Mit "-type" kann man da ziemlich gut
zwischen Dateien und Verzeichnissen filtern. Typische Beispiele:

find -type f -exec chmod 644 {} \; (rekursiv 644 auf alle Dateien)
find -type d -exec chmod 755 {] \; (rekursiv 755 auf alle Verzeichnisse)

Bei älteren find-Versionen kann es noch notwendig sein, den zu
durchsuchenden Pfad als ersten Parameter anzugeben, bei einem aktuellen
Debian klappt das aber auch so im aktuellen Verzeichnis.

Gruß
Helmut
--
Zum AUSTRAGEN schicken Sie eine Mail an debian-user-german-***@lists.debian.org
mit dem Subject "unsubscribe". Probleme? Mail an ***@lists.debian.org (engl)
Archive: http://lists.debian.org/***@pozimski.eu
Dirk Griesbach
2013-07-05 19:30:02 UTC
Permalink
Post by Gerhard Wolfstieg
wie kann ich (mit chmod) exklusiv directories wieder ausführbar machen?
man find

find . -type d -exec chmod +x {} \;
bzw. etwas effizienter:
find . -type d -print0 | xargs -0 chmod +x
Post by Gerhard Wolfstieg
Wie kann ich in Zukunft ausschließlich normalen Dateien rekursiv die
Ausführbarkeit entziehen?
Wie oben, aber mit -type f.
Post by Gerhard Wolfstieg
Oder allgemeiner: wie kann man getrennt nach Ordnern und Dateien
Attribute setzen/löschen?
chmod selbst unterscheidet nicht zwischen Dateien und Verzeichnissen,
das musst du, z.B. mit find, schon selbst.

Dirk
--
Zum AUSTRAGEN schicken Sie eine Mail an debian-user-german-***@lists.debian.org
mit dem Subject "unsubscribe". Probleme? Mail an ***@lists.debian.org (engl)
Archive: http://lists.debian.org/***@freenet.de
Spiro Trikaliotis
2013-07-05 20:40:02 UTC
Permalink
Hallo,
Post by Dirk Griesbach
find . -type d -exec chmod +x {} \;
find . -type d -print0 | xargs -0 chmod +x
Hm... Ist das effizienter als:

$ find . -type d -exec chmod +x \{\} \+

? Ich habe da meine Zweifel.

(Beachte das \+ anstelle von \; am Ende.)

Beste Grüße,
Spiro.
--
Spiro R. Trikaliotis
http://www.trikaliotis.net/
--
Zum AUSTRAGEN schicken Sie eine Mail an debian-user-german-***@lists.debian.org
mit dem Subject "unsubscribe". Probleme? Mail an ***@lists.debian.org (engl)
Archive: http://lists.debian.org/***@hermes.local.trikaliotis.net
Dirk Griesbach
2013-07-05 22:00:02 UTC
Permalink
Post by Spiro Trikaliotis
$ find . -type d -exec chmod +x \{\} \+
? Ich habe da meine Zweifel.
Nur mal ein schneller Test über mein $HOME (Daten sind bereits alle
gecached):

~$ /usr/bin/time -f "%E\n" find . -type d -exec ls -lah {} \; > /dev/null
0:59.14

~$ /usr/bin/time -f "%E\n" find . -type d -exec ls -lah {} \+ > /dev/null
0:07.83

~$ /usr/bin/time -f "%E\n" find . -type d -print0 | xargs -0 ls -lah > /dev/null
0:06.92

Ergebnisse sind über mehrere Läufe reproduzierbar.

Dirk
--
Zum AUSTRAGEN schicken Sie eine Mail an debian-user-german-***@lists.debian.org
mit dem Subject "unsubscribe". Probleme? Mail an ***@lists.debian.org (engl)
Archive: http://lists.debian.org/***@freenet.de
Spiro Trikaliotis
2013-07-07 19:50:02 UTC
Permalink
Hallo Dirk,
Post by Dirk Griesbach
Post by Spiro Trikaliotis
$ find . -type d -exec chmod +x \{\} \+
? Ich habe da meine Zweifel.
Nur mal ein schneller Test über mein $HOME (Daten sind bereits alle
~$ /usr/bin/time -f "%E\n" find . -type d -exec ls -lah {} \; > /dev/null
0:59.14
~$ /usr/bin/time -f "%E\n" find . -type d -exec ls -lah {} \+ > /dev/null
0:07.83
~$ /usr/bin/time -f "%E\n" find . -type d -print0 | xargs -0 ls -lah > /dev/null
0:06.92
Ergebnisse sind über mehrere Läufe reproduzierbar.
Hm... Auf den ersten Blick kann ich die Ergebnisse auch reproduzieren.

Aber: Ich habe das ganze über ein Laufwerk laufen lassen, wo ich nicht überall
die Rechte habe, ls -lah auszuführen. Hier ergibt sich folgendes
Phänomen: Die Ausgabe von time erfolgt, *bevor* alles Ergebnisse des
xargs da sind.

Kann es sein, dass time nur die Zeit des find bewertet, nicht aber die
des dahinter liegenden xargs?

Ok, gegencheck: find und den Rest dahinter in ein Skript geschriebe,
dann time ./script ausgeführt: Die Ergebnisse bleiben bestehen. Also
selbst, wenn es oben ein Meßproblem gab, das Ergebnis stimmt trotzdem.

Interessant.

Steht sich find irgendwie "selber im Weg", oder wieso ist es mit der
Pipe schneller? Das wundert ich jetzt doch ein bisschen.

Beste Grüße,
Spiro.
--
Spiro R. Trikaliotis
http://www.trikaliotis.net/
--
Zum AUSTRAGEN schicken Sie eine Mail an debian-user-german-***@lists.debian.org
mit dem Subject "unsubscribe". Probleme? Mail an ***@lists.debian.org (engl)
Archive: http://lists.debian.org/***@hermes.local.trikaliotis.net
Dirk Griesbach
2013-07-08 09:00:03 UTC
Permalink
Post by Spiro Trikaliotis
Post by Dirk Griesbach
~$ /usr/bin/time -f "%E\n" find . -type d -print0 | xargs -0 ls -lah > /dev/null
0:06.92
Kann es sein, dass time nur die Zeit des find bewertet, nicht aber die
des dahinter liegenden xargs?
Argh, du hast recht. Ich habe mit dem Bash-built-in time getestet und
nur nochmal mit /usr/bin/time überprüft... Das in der Bash eingebaute
time misst die gesamte Pipe. Nochmal nachgeschaut: find \+ konnte
aufholen, Mit xargs ist es trotzdem schneller.
Post by Spiro Trikaliotis
Steht sich find irgendwie "selber im Weg", oder wieso ist es mit der
Irgend sowas, ja. Mit den Innereien von find kenne ich mich nicht aus,
da hilft wohl nur ein Blick in den Quellcode.


Dirk
--
Zum AUSTRAGEN schicken Sie eine Mail an debian-user-german-***@lists.debian.org
mit dem Subject "unsubscribe". Probleme? Mail an ***@lists.debian.org (engl)
Archive: http://lists.debian.org/***@freenet.de
Heiko Schlittermann
2013-07-06 08:10:02 UTC
Permalink
Hallo,
Post by Gerhard Wolfstieg
Hallo zusammen,
wie kann ich (mit chmod) exklusiv directories wieder ausfÃŒhrbar machen?
Wie kann ich in Zukunft ausschließlich normalen Dateien rekursiv die
AusfÃŒhrbarkeit entziehen?
Andere Antworten mit find(1) hast Du ja genug bekommen (auch wenn das
der Backslash vor dem + und vor { und } nicht wirklich nötig sind, wenn
eine aktuelle Bash verwendet wird), aber auch auch

chmod -R +X .

kann je nach Situation nÃŒtzlich sein (beachte das grosse X). Es ist
nicht genau die Antwort auf Deine Frage (weder entzieht es rechte, noch
tut es das Setzen von Rechten getrennt nach Files oder Directories,
sondern es richtet sich nach bereits vorhandenem x-Recht.
--
Heiko
Gerhard Wolfstieg
2013-07-14 11:50:01 UTC
Permalink
Hallo alle zusammen,

war im Urlaub (schlechtes Timing für die Anfrage).

Erst einmal danke an alle.

Hab's jetzt so gemacht: erst einmal die die Ausgabe von find in eine
Datei umgelenkt, um zu schauen, was es da so alles gibt, dann mit Hilfe
von regulären Ausdrücken chmod eingebaut, und die Ordnernamen zwischen
Anführungszeichen gesetzt und das Ganze als ausführbare Datei
gespeichert und ausgeführt. Den Vorgang mußte ich anscheinend mehrfach
wiederholen, weil anfangs die Unter-Unterordner nicht zu öffnen waren.

Grüße, Gerhard
--
Zum AUSTRAGEN schicken Sie eine Mail an debian-user-german-***@lists.debian.org
mit dem Subject "unsubscribe". Probleme? Mail an ***@lists.debian.org (engl)
Archive: http://lists.debian.org/***@anthrazit.agruppe
Loading...