GNU/Linux >> Belajar Linux >  >> Linux

Linux – Bisakah Kemampuan Digunakan Dalam Skrip Tanpa Mengatur Biner Interpreter?

Saat ini saya menggunakan cap_net_bind_service MY_USERNAME di /etc/security/capability.conf.
Sekarang saya hanya perlu mengatur cap_net_bind_service+i pada penerjemah bahasa skrip favorit saya untuk dapat menambahkan CAP_NET_BIND_SERVICE ke efektif disetel melalui libcap[-ng].

Ini berfungsi dengan baik, tetapi saya ingin tahu apakah ada cara untuk mencapai hal yang sama tanpa menetapkan batasan apa pun ke biner penerjemah. Meskipun ini bukan masalah besar (akun pengguna lain tidak memiliki batas sehingga mereka tidak dapat menggunakannya bahkan dengan bit yang disetel pada biner penerjemah) itu agak mengganggu karena saya harus menyetel ulang bendera setiap kali penerjemah diperbarui.

Jawaban yang Diterima:

Biasanya, kemampuan tersebut diwariskan kepada anak-anak. Seperti yang dinyatakan dalam halaman manual :

Anak yang dibuat melalui fork(2) mewarisi salinan set kemampuan induknya.

Masalah dengan skrip adalah mereka tidak dapat dieksekusi secara langsung. Kernel melewati daftar pemeriksaan (kode kernel terletak di fs/binfmt_*.c). Salah satunya adalah “binfmt_script.c”, yang memeriksa baris pertama untuk sebuah shebang, kemudian memanggil interpreter yang sebenarnya (yang ada di shebang) dengan skrip Anda sebagai argumen. Dengan demikian, penerjemah standar/umum dipanggil, dan hanya membaca skrip Anda sebagai argumen.

Ini berarti Anda harus menyetel kapabilitas pada interpreter, bukan pada skrip.
Hal yang sama berlaku untuk suid bit, dan flag khusus lainnya.

Jadi, apakah Anda membuat salinan juru bahasa Anda, mengatur kemampuan yang Anda inginkan (juga memeriksa bahwa tidak ada yang dapat mengaksesnya melalui chmod/chown), dan memanggil juru bahasa yang disalin ini di Shebang Anda.
Anda juga dapat melakukan setcap logika dalam skrip Anda.


Linux
  1. Modul kernel Linux kita tidak bisa hidup tanpanya

  2. Linux – Bagaimana Cara Mengatur Afinitas Prosesor Suatu Proses Di Linux?

  3. Bagaimana cara mengatur nama utas di Linux pthreads?

  1. Bagaimana saya bisa mengatur 'backend' di matplotlib dengan Python?

  2. Cara mengatur alamat IP dari C di linux

  3. Tetapkan halaman HTML sebagai wallpaper di Linux

  1. 3 hal berguna yang dapat Anda lakukan dengan alat IP di Linux

  2. 7 namespace Linux yang paling banyak digunakan

  3. Linux – Apa Cara Berbeda Untuk Mengatur Izin File Dll Di Gnu/linux?