Frage Ich habe gerade einen chmod -x chmod gemacht


Also habe ich ein chmod -x chmod. Wie kann ich dieses Problem beheben? Wie gebe ich Ausführungsrechte zurück an chmod?


26
2017-10-11 07:31


Ursprung


Du hast versehentlich das Ganze chmod! - Thanatos
Siehe auch die Frage zu Unix & Linux SE. - unor


Antworten:


In Linux:

/lib/ld-linux.so.2 /bin/chmod +x /bin/chmod

http://www.slideshare.net/cog/chmod-x-chmod


42
2017-10-11 07:38



bindbn, ich wollte gerade den gleichen Link posten :-) aber ich habe selbst gelesen, da ich neu bei Unix / Linux bin !!! - rihatum
Bei einer 64-Bit-Distribution müssen Sie möglicherweise verwenden /lib64/ld-linux-x86-64.so.2 stattdessen. ldd /bin/chmod sollte genau auflisten, welcher Linker ausgeführt werden soll. - goldPseudo
Ich würde ein minimales Programm schreiben, das chmod (2) verwendet, aber das ist cooler - adamo
@Stefan: Von man ld-linux.so: "ld.so [und ld-linux.so] lädt die von einem Programm benötigten gemeinsamen Bibliotheken, bereitet das Programm auf die Ausführung vor und führt es dann aus." (ld.so ist für a.out format ausführbare Dateien und ld-linux.so ist für ELF-Format.) - Dennis Williamson
@Stefan: Der Kernel weiß nicht wirklich, wie man dynamisch verknüpfte Executables lädt und ausführt, weil es sehr komplex ist und dem glibc folgt, nicht dem Kernel. ld-linux.so ist eine Art ausführbare / library hybride, eine Art statisch verknüpft, läuft im Benutzerbereich und ist dafür verantwortlich, dynamisch verknüpfte ausführbare Dateien und alle ihre Abhängigkeiten zu laden und sie dann auszuführen. - Juliano


Verwenden Sie Python:

# python
Python> import os
Python> os.chmod("/bin/chmod",0755)

17
2017-10-11 12:44



Und als One-Liner: python -c "import os; os.chmod('/bin/chmod', 0755)" - Thanatos


Dies beruht auf der Tatsache, dass die Berechtigungen einer Zieldatei beibehalten werden und nicht die Quelldatei, wenn sie kopiert wird. Wir "entleihen" die Berechtigungen von ls:

cp /bin/ls /tmp/chmod.tmp
cp /bin/chmod /tmp/chmod.tmp
mv /tmp/chmod.tmp /bin/chmod

17
2017-10-11 14:55



Ich denke dein erstes cp muss die Markierung -p haben - Riking
@Riking: Es ist nicht notwendig für diesen Zweck. - Dennis Williamson
Das war vergleichbar mit der Lösung, die ich mir ausgedacht hatte, aber danach cpich die ausführbare Datei catder Inhalt von chmod in die temporäre Datei. - SpellingD


Perl verwenden:

% perl -e 'chmod 0755, qw[/bin/chmod]'

8
2017-10-11 21:54





setfacl -m u::rx /bin/chmod

... gewährt dem Besitzer Ausführungsrechte.

Aber die /lib/ld-linux.so.2 Trick ist ordentlich. :)


6
2017-11-05 17:46





Das ist seltsam ... Ich habe vor ein paar Tagen so etwas über den Tweet von jemandem gesehen ...

http://www.slideshare.net/cog/chmod-x-chmod


5
2017-10-11 08:08



Links zu anderen Websites sind nicht hilfreich, da der Link irgendwann unterbrochen wird. Das ist so, als würde man jemandem sagen, er solle die Antwort googlen. - Phil Hannent
@Phil Hannent: Ich habe diese Diashow auch schon vor drei Tagen gesehen, also war es mein erster Gedanke, ob der OP dort einer der Bewerber war. - Boldewyn
Same, habe das vor ein paar Tagen auf Reddit gesehen ... - Dentrasi


Sollten Sie auf einem System sein, wo /bin/chmod kann nicht vom dynamischen Linker geladen werden:

# /bin/mv /bin/chmod /bin/chmod.tmp
# install -p -m 755 /bin/chmod.tmp /bin/chmod

Dies funktioniert auf meinem MacOS X System.


3
2017-10-11 08:41