GNU/Linux >> Belajar Linux >  >> Linux

Linux – Kernel:Dukungan Namespaces?

Saya bertanya-tanya apa sebenarnya arti fitur "Dukungan Namespaces" di kernel Linux. Saya menggunakan kernel 3.11.1 (kernel stabil terbaru saat ini).

Jika saya memutuskan untuk menonaktifkannya, apakah saya akan melihat adanya perubahan pada sistem saya?

Dan jika seseorang memutuskan untuk menggunakan ruang nama, apakah cukup dengan mengompilasi NAMESPACES=Y di kernel, atau apakah dia membutuhkan alat userspace juga?

Jawaban yang Diterima:

Singkatnya, ruang nama menyediakan cara untuk membangun sistem Linux virtual di dalam sistem Linux yang lebih besar. Ini berbeda dengan menjalankan mesin virtual yang berjalan sebagai proses yang tidak memiliki hak istimewa:mesin virtual muncul sebagai satu proses di host, sedangkan proses yang berjalan di dalam namespace masih berjalan di sistem host.

Sistem virtual yang berjalan di dalam sistem yang lebih besar disebut wadah. Ide wadah adalah bahwa proses yang berjalan di dalam wadah percaya bahwa mereka adalah satu-satunya proses dalam sistem. Secara khusus, pengguna root di dalam wadah tidak memiliki hak akses root di luar wadah (perhatikan bahwa ini hanya berlaku di versi kernel yang cukup baru).

Ruang nama memvirtualisasikan satu fitur dalam satu waktu. Beberapa contoh tipe namespace adalah:

  • Ruang nama pengguna — ini memungkinkan proses berperilaku seolah-olah berjalan sebagai pengguna yang berbeda di dalam dan di luar ruang nama. Secara khusus, proses yang berjalan sebagai UID 0 di dalam namespace memiliki hak pengguna super hanya sehubungan dengan proses yang berjalan di namespace yang sama.
    Sejak kernel Linux 3.8, pengguna yang tidak memiliki hak dapat membuat ruang nama pengguna. Hal ini memungkinkan pengguna biasa untuk menggunakan fitur yang disediakan untuk root (seperti mengubah tabel perutean atau kemampuan pengaturan).
  • Ruang nama PID — proses di dalam ruang nama PID tidak dapat mematikan atau melacak proses di luar ruang nama tersebut.
  • Pasang ruang nama — ini memungkinkan proses memiliki tampilan sendiri terhadap sistem file. Tampilan ini dapat berupa tampilan sebagian, memungkinkan beberapa bagian dari sistem file disembunyikan dan bagian-bagian untuk dikomposisi ulang sehingga pohon direktori muncul di tempat yang berbeda. Mount namespace menggeneralisasi chroot fitur Unix tradisional, yang memungkinkan proses dibatasi pada subpohon tertentu.
  • Ruang nama jaringan — memungkinkan pemisahan sumber daya jaringan (perangkat jaringan) dan dengan demikian meningkatkan isolasi proses.

Ruang nama bergantung pada kernel untuk menyediakan isolasi antara ruang nama. Ini cukup rumit untuk diperbaiki, jadi mungkin masih ada bug keamanan yang tergeletak di sekitar. Risiko bug keamanan akan menjadi alasan utama untuk tidak mengaktifkan fitur tersebut. Alasan lain untuk tidak mengaktifkannya adalah saat Anda membuat kernel kecil untuk perangkat yang disematkan. Di kernel tujuan umum yang akan Anda instal di server atau workstation biasa, ruang nama harus diaktifkan, seperti fitur kernel matang lainnya.

Terkait:Linux – Bisakah kita mendapatkan informasi kompiler dari biner elf?

Masih ada beberapa aplikasi yang menggunakan namespace. Berikut adalah beberapa:

  • LXC sudah mapan. Itu bergantung pada cgroups untuk menyediakan wadah.
  • virt-sandbox adalah proyek sandboxing yang lebih baru.
  • Chromium versi terbaru juga menggunakan ruang nama untuk sandbox jika tersedia.
  • Kerangka kerja uWSGI untuk aplikasi yang dikelompokkan menggunakan ruang nama untuk sandboxing yang lebih baik.

Lihat seri artikel LWN oleh Michael Kerrisk untuk informasi lebih lanjut.


Linux
  1. Siklus hidup pengujian kernel Linux

  2. Instal Linux Kernel 4.12 di openSUSE

  3. Cara memutakhirkan Kernel di Desktop Linux

  1. Ruang Nama Linux

  2. Linux – Penerusan Ip Kernel?

  3. Linux – Kernel Tercemar Di Linux?

  1. Perintah Dmesg di Linux

  2. Perintah Modprobe di Linux

  3. Linux – Apakah Kernel Linux/unix yang Berbeda Dapat Dipertukarkan?