Saya bertanya-tanya apa sebenarnya fitur "Namespaces support" di kernel Linux. Saya menggunakan kernel 3.11.1 (kernel stabil terbaru saat ini).
Jika saya memutuskan untuk menonaktifkannya, apakah saya akan melihat ada perubahan pada sistem saya?
Dan jika seseorang memutuskan untuk menggunakan namespaces, apakah itu cukup untuk dikompilasi NAMESPACES=Y
di kernel, atau apakah dia memerlukan alat userspace juga?
linux
linux-kernel
namespace
Martin Vegter
sumber
sumber
Jawaban:
Singkatnya, ruang nama menyediakan cara untuk membangun sistem Linux virtual di dalam sistem Linux yang lebih besar. Ini berbeda dari menjalankan mesin virtual yang berjalan sebagai proses yang tidak terjangkau: 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. Khususnya, pengguna root di dalam wadah tidak memiliki hak akses root di luar wadah (perhatikan bahwa ini hanya benar di versi kernel yang cukup baru).
Namespaces melakukan virtualisasi satu fitur pada satu waktu. Beberapa contoh tipe ruang nama adalah:
Sejak Linux kernel 3.8, pengguna yang tidak mampu dapat membuat ruang nama pengguna. Ini memungkinkan pengguna biasa untuk menggunakan fitur-fitur yang dicadangkan untuk di-root (seperti mengubah tabel rute atau kemampuan pengaturan).
Ruang nama bergantung pada kernel untuk menyediakan isolasi antara ruang nama. Ini cukup rumit untuk dikerjakan dengan benar, jadi mungkin masih ada bug keamanan di sekitar Anda. Risiko bug keamanan akan menjadi alasan utama untuk tidak mengaktifkan fitur ini. Alasan lain untuk tidak mengaktifkannya adalah saat Anda membuat kernel kecil untuk perangkat yang disematkan. Dalam kernel tujuan umum yang akan Anda instal pada server atau workstation biasa, ruang nama harus diaktifkan, seperti fitur kernel matang lainnya.
Masih ada beberapa aplikasi yang menggunakan ruang nama. Berikut ini beberapa di antaranya:
Lihat seri artikel LWN oleh Michael Kerrisk untuk informasi lebih lanjut.
sumber
Linux kernel namespace adalah konsep yang digunakan untuk mengisolasi sekelompok proses dari yang lain sehubungan dengan akses ke sumber daya sistem. Misalnya dua ruang nama PID yang berbeda dapat berisi proses dengan PID yang identik tetapi gambar proses yang sama sekali berbeda. Mereka sering digunakan dalam virtualisasi tingkat OS, di mana satu kernel secara bersamaan menjalankan berbagai sistem operasi - semua harus berbasis Linux (karena mereka berbagi kernel, jelas), tetapi mungkin distribusi dan versi yang berbeda. Lihat misalnya LXC .
Anda mungkin memperhatikan bahwa menonaktifkannya misalnya pada sistem berbasis sistem, karena systemd dapat menggunakan ruang nama untuk fitur wadahnya . Karenanya banyak tergantung pada distribusi apa yang Anda gunakan dan apa yang ingin Anda lakukan dengan sistem.
Seperti hampir setiap fitur kernel, Anda pasti membutuhkan semacam program ruang pengguna - bahkan jika Anda berbicara dengan kernel melalui file khusus (saya tidak yakin Anda bisa), biasanya jauh lebih baik untuk mengandalkan alat khusus, karena mereka menawarkan API yang ramah.
sumber
Untuk memberikan contoh penggunaan namespace, dalam sistem yang diaktifkan SELinux (MLS atau Strict). Namespace biasanya digunakan untuk membuat direktori individual
/tmp
dan atau/home
untuk setiap pengguna. Direktori tersebut hanya dapat dilihat oleh: pengguna, pengguna dengan label yang sama, kernel dan pengguna dengan akses istimewa. Direktori namespace-ed/tmp
akan diberi label oleh SELinux-MLS untuk mencocokkan label SELinux-MLS pengguna. Dalam skenario ini/tmp
direktori yang dilihat pengguna mungkin benar-benar dipasang di tempat lain selain/tmp
(/var/user-tmp
). Namun pengguna hanya melihat/tmp
dengan file yang dibuat karena aktivitas pengguna. pengguna tidak akan pernah melihat file apa pun/tmp
yang merupakan produk dari pengguna lain.sumber