Entonces hice a chmod -x chmod
. ¿Cómo puedo solucionar este problema? ¿Cómo le devuelvo los derechos de ejecución a chmod?
Entonces hice a chmod -x chmod
. ¿Cómo puedo solucionar este problema? ¿Cómo le devuelvo los derechos de ejecución a chmod?
Respuestas:
/lib64/ld-linux-x86-64.so.2
en su lugar. ldd /bin/chmod
debería enumerar exactamente qué enlazador ejecutar.
man ld-linux.so
: "ld.so [y ld-linux.so] carga las bibliotecas compartidas que necesita un programa, prepara el programa para ejecutarlo y luego lo ejecuta". ( ld.so
es para a.out
formatos ejecutables y ld-linux.so
es para formato ELF)
ld-linux.so
es una especie de híbrido ejecutable / biblioteca, un tipo de enlace estático, se ejecuta en el espacio de usuario y es responsable de cargar ejecutables vinculados dinámicamente y todas sus dependencias, y luego ejecutarlos.
Utiliza python:
# python
Python> import os
Python> os.chmod("/bin/chmod",0755)
python -c "import os; os.chmod('/bin/chmod', 0755)"
Esto se basa en el hecho de que los permisos de un archivo de destino se conservan en lugar del archivo de origen cuando se copia. Estamos "tomando prestados" los permisos de ls
:
cp /bin/ls /tmp/chmod.tmp
cp /bin/chmod /tmp/chmod.tmp
mv /tmp/chmod.tmp /bin/chmod
cp
necesidad debe tener la bandera -p encendida
cp
de crear el ejecutable, acabo cat
de chmod
ingresar el contenido en el archivo temporal.
setfacl -m u::rx /bin/chmod
... otorgará al propietario permisos de ejecución.
Pero, el /lib/ld-linux.so.2
truco es bueno. :)
Esto es extraño ... Hace unos días vi algo así a través del tweet de alguien ...
Sospecho que esta no es una pregunta real: http://www.slideshare.net/cog/chmod-x-chmod
crear un nuevo chmod y usarlo para el original
umask 000
cat chmod > ~/my-chmod
~/my-chmod a+x chmod
(umask 000;gcc -o foo foo.c)
, producirá un foo
modo 777). Sin embargo, muchos shells (¿la mayoría?) Pasan 0666 cuando abren / crean archivos para la redirección, lo que significa que esta respuesta no funcionará en muchos shells.
chmod
!