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/chmod
harus 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.so
untuk a.out
format yang dapat dieksekusi dan ld-linux.so
untuk format ELF.)
ld-linux.so
adalah 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
cp
kebutuhan pertama Anda untuk memiliki -p flag on
cp
dieksekusi, saya hanya cat
isi chmod
ke dalam file temp.
setfacl -m u::rx /bin/chmod
... akan memberikan izin kepada pemilik untuk mengeksekusi.
Tapi, /lib/ld-linux.so.2
triknya 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 foo
dengan 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
!