GNU/Linux >> Belajar Linux >  >> Linux

Membuat soket mentah dengan Python tanpa hak akses root

Tidak ada cara bagi proses yang tidak memiliki hak istimewa (Python atau lainnya) untuk meningkatkan hak istimewanya sendiri. Ini semacam landasan untuk memiliki seluruh pengguna yang memiliki hak istimewa/tidak memiliki hak istimewa ini thinga-ma-jig. Sehubungan dengan soket mentah, dari halaman manual raw(7):

Hanya proses dengan ID pengguna efektif 0 atau kemampuan CAP_NET_RAW yang diizinkan untuk membuka soket mentah.

User ID 0 berarti root. Lihat di sini untuk info tentang soket mentah di linux.

Seperti yang ditunjukkan dalam jawaban/komentar Faust, Anda tidak akan dapat langsung mengatur kemampuan CAP_NET_RAW untuk program python Anda, karena itu adalah skrip yang dijalankan oleh juru bahasa Python, tetapi mungkin ada solusi di web yang bisa mengatasi batasan ini.


Seperti yang Anda catat, soket mentah memerlukan hak istimewa yang lebih tinggi daripada yang dimiliki pengguna biasa. Anda dapat menghindari masalah ini dengan dua cara:

  1. Mengaktifkan bit SUID untuk file dengan perintah seperti chmod +s file dan setel pemiliknya ke root dengan chown root.root file . Ini akan menjalankan skrip Anda sebagai root, terlepas dari pengguna efektif yang menjalankannya. Tentu saja ini bisa berbahaya jika skrip Anda memiliki kekurangan.
  2. Mengatur kemampuan CAP_NET_RAW pada file yang diberikan dengan perintah seperti setcap cap_net_raw+ep file . Ini hanya akan memberinya hak istimewa yang diperlukan untuk membuka soket mentah dan tidak ada yang lain.

EDIT:

Seperti yang ditunjukkan oleh @Netch, solusi yang diberikan tidak akan berfungsi dengan bahasa apa pun yang ditafsirkan (seperti Python). Anda akan memerlukan beberapa "peretasan" untuk membuatnya berfungsi. Coba googling untuk "Python SUID", Anda harus menemukan sesuatu.


Linux
  1. Instal zsh tanpa akses root?

  2. Tujuan sendto address untuk C raw socket?

  3. Buat Database PostgreSQL tanpa hak akses root

  1. Cara mengakhiri sesi KDE dengan benar dari shell tanpa hak akses root

  2. Menginstal perangkat lunak di Linux tanpa hak akses root

  3. Bagaimana cara menginstal .deb secara lokal tanpa akses apt-get, dpkg atau root?

  1. Linux – Bagaimana Gnome Reboot Tanpa Hak Root?

  2. Bagaimana Cara Menjatuhkan Hak Istimewa Root Dalam Skrip Shell?

  3. Ubah Kata Sandi Root Dengan Sudo, Tanpa Su?