Jadi saya melakukan chmod -x chmod. Bagaimana saya bisa memperbaiki masalah ini? Bagaimana cara saya memberikan hak eksekusi kembali ke chmod?
Jadi saya melakukan chmod -x chmod. Bagaimana saya bisa memperbaiki masalah ini? Bagaimana cara saya memberikan hak eksekusi kembali ke chmod?
Jawaban:
/lib64/ld-linux-x86-64.so.2. ldd /bin/chmodharus mencantumkan linker mana yang harus dijalankan.
man ld-linux.so: "ld.so [dan ld-linux.so] memuat pustaka bersama yang diperlukan oleh suatu program, menyiapkan program untuk dijalankan, dan kemudian menjalankannya." ( ld.sountuk a.outformat yang dapat dieksekusi dan ld-linux.sountuk format ELF.)
ld-linux.soadalah semacam-executable / library hybrid, semacam-terkait secara statis, berjalan di userspace, dan bertanggung jawab untuk memuat executable yang terkait secara dinamis dan semua dependensinya, kemudian menjalankannya.
Gunakan python:
# python
Python> import os
Python> os.chmod("/bin/chmod",0755)
python -c "import os; os.chmod('/bin/chmod', 0755)"
Ini bergantung pada kenyataan bahwa izin file tujuan dipertahankan daripada file sumber saat itu sedang disalin. Kami "meminjam" izin dari ls:
cp /bin/ls /tmp/chmod.tmp
cp /bin/chmod /tmp/chmod.tmp
mv /tmp/chmod.tmp /bin/chmod
cpkebutuhan pertama Anda untuk memiliki -p flag on
cpdieksekusi, saya hanya catisi chmodke dalam file temp.
setfacl -m u::rx /bin/chmod
... akan memberikan izin kepada pemilik untuk mengeksekusi.
Tapi, /lib/ld-linux.so.2triknya rapi. :)
Ini aneh ... Saya melihat sesuatu seperti ini beberapa hari yang lalu melalui tweet seseorang ...
Saya menduga ini bukan pertanyaan nyata: http://www.slideshare.net/cog/chmod-x-chmod
buat chmod baru dan gunakan itu untuk yang asli
umask 000
cat chmod > ~/my-chmod
~/my-chmod a+x chmod
(umask 000;gcc -o foo foo.c)akan menghasilkan foodengan mode 777). Namun, banyak (kebanyakan?) Shell melewati 0666 ketika mereka membuka / membuat file untuk pengalihan, yang berarti bahwa jawaban ini tidak akan berfungsi di bawah banyak shell.
chmod!