GNU/Linux >> Belajar Linux >  >> Linux

Mengapa file .so dapat dieksekusi?

Saya menduga itu mungkin hanya karena alasan historis.

Jawaban BlueBomber mungkin benar secara historis, tetapi sebenarnya tidak perlu agar objek bersama dapat dieksekusi.

Di sistem Ubuntu saya, tidak. Dari 30 /lib/*.so* dan 600 /usr/lib/*.so* file, hanya satu yang memiliki izin eksekusi, dan itu mungkin hanya sebuah kesalahan.

Jalankan izin mengizinkan file untuk dieksekusi melalui salah satu dari exec*() fungsi; file objek bersama berisi kode yang dapat dieksekusi, tetapi tidak dieksekusi dengan cara itu.

Di sisi lain, pada sistem CentOS 5.7 yang dapat saya akses, file-file itu adalah dapat dieksekusi; hal yang sama berlaku pada sistem SPARC Solaris 9. (Akan menarik untuk mencoba mematikan izin yang dapat dieksekusi pada beberapa file tersebut untuk melihat apakah ada yang rusak, tetapi saya tidak dapat melakukannya.)

(Distribusi Linux apa yang Anda gunakan?)

PEMBARUAN:

Jawaban atas pertanyaan ini menunjukkan contoh (HP-UX) dari sistem di mana bit eksekusi sebenarnya diperlukan. Tampaknya tidak demikian di Linux, di mana beberapa distribusi menyetel bit eksekusi (mungkin karena kelembaman historis) dan yang lainnya tidak. Atau mungkin beberapa Linux benar-benar membutuhkannya.

Poin data lain:Di sistem Ubuntu saya, saya baru saja mencoba membuat file objek bersama saya sendiri. File "libfoo.so" yang dihasilkan dibuat dengan izin eksekusi, tetapi jika saya secara manual chmod -x itu, program yang menggunakannya masih berfungsi.

Bagaimanapun, tetapkan izin eksekusi pada *.so file Sebagian Besar Tidak Berbahaya (dan tentu saja tidak terlalu mengganggu, katakanlah, mengatur izin eksekusi pada file sumber).

PEMBARUAN 2:

Seperti yang ditunjukkan fwyzard dalam komentar, beberapa *.so file benar-benar dapat dieksekusi. Misalnya, di sistem saya saat ini, mengeksekusi /lib/x86_64-linux-gnu/libc-2.27.so mencetak informasi versi untuk pustaka GNU C. /lib/x86_64-linux-gnu/libpthread-2.27.so berperilaku serupa.


Linux
  1. Uji Apakah Ada File Yang Cocok Dengan Pola Untuk Mengeksekusi Skrip?

  2. Mengapa Rm Dapat Menghapus File Read-only?

  3. Kapan File yang Dapat Dieksekusi Tidak?

  1. Apa itu File .run?

  2. Mengapa Solusi Cloud Terkelola Semakin Populer

  3. Mengapa file tidak dapat dimanipulasi oleh inode?

  1. Mengapa header program dapat dieksekusi?

  2. Mengapa Makefile di Linux sangat berguna?

  3. Mengapa folder harus dapat dieksekusi?