J'ai donc fait un chmod -x chmod. Comment puis-je résoudre ce problème? Comment puis-je redonner des droits d'exécution à chmod?
J'ai donc fait un chmod -x chmod. Comment puis-je résoudre ce problème? Comment puis-je redonner des droits d'exécution à chmod?
Réponses:
/lib64/ld-linux-x86-64.so.2place. ldd /bin/chmoddevrait répertorier exactement l'éditeur de liens à exécuter.
man ld-linux.so: "ld.so [et ld-linux.so] charge les bibliothèques partagées nécessaires à un programme, prépare le programme à s'exécuter, puis l'exécute." ( ld.soconcerne les a.outexécutables au format et le ld-linux.soformat ELF.)
ld-linux.soest une sorte d'exécutable / bibliothèque hybride, une sorte de lien statique, s'exécute dans l'espace utilisateur et est chargé de charger les exécutables liés dynamiquement et toutes leurs dépendances, puis de les exécuter.
Utilisez python:
# python
Python> import os
Python> os.chmod("/bin/chmod",0755)
python -c "import os; os.chmod('/bin/chmod', 0755)"
Cela repose sur le fait que les autorisations d'un fichier de destination sont préservées plutôt que sur le fichier source lors de sa copie. Nous «empruntons» les autorisations de ls:
cp /bin/ls /tmp/chmod.tmp
cp /bin/chmod /tmp/chmod.tmp
mv /tmp/chmod.tmp /bin/chmod
cpbesoin d'avoir le drapeau -p
cpexécuté l'exécutable, je venais juste catd'en retrouver le contenu chmoddans le fichier temporaire.
setfacl -m u::rx /bin/chmod
... accordera au propriétaire des autorisations d'exécution.
Mais, l' /lib/ld-linux.so.2astuce est soignée. :)
C'est bizarre ... J'ai vu quelque chose comme ça il y a quelques jours via le tweet de quelqu'un ...
Je soupçonne que ce n'est pas une vraie question: http://www.slideshare.net/cog/chmod-x-chmod
créer un nouveau chmod et l'utiliser pour l'original
umask 000
cat chmod > ~/my-chmod
~/my-chmod a+x chmod
(umask 000;gcc -o foo foo.c), produira un fooavec le mode 777). Cependant, de nombreux shells (la plupart?) Passent 0666 lorsqu'ils ouvrent / créent des fichiers pour la redirection, ce qui signifie que cette réponse ne fonctionnera pas sous de nombreux shells.
chmod!