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.2
place. ldd /bin/chmod
devrait 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.so
concerne les a.out
exécutables au format et le ld-linux.so
format ELF.)
ld-linux.so
est 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
cp
besoin d'avoir le drapeau -p
cp
exécuté l'exécutable, je venais juste cat
d'en retrouver le contenu chmod
dans le fichier temporaire.
setfacl -m u::rx /bin/chmod
... accordera au propriétaire des autorisations d'exécution.
Mais, l' /lib/ld-linux.so.2
astuce 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 foo
avec 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
!