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:
- Ruang nama pengguna - ini memungkinkan proses berperilaku seolah-olah mereka 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 superuser hanya sehubungan dengan proses yang berjalan di namespace yang sama.
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).
- PID namespaces - proses di dalam namespace PID tidak bisa membunuh atau melacak proses di luar namespace itu.
- Pasang namespace - ini memungkinkan proses untuk memiliki tampilan sendiri dari sistem file. Tampilan ini bisa berupa tampilan sebagian, memungkinkan beberapa bagian dari sistem file disembunyikan dan potongan-potongan dikomposisi ulang sehingga pohon direktori muncul di tempat yang berbeda. Mount namespaces menggeneralisasi chroot fitur Unix tradisional , yang memungkinkan proses dibatasi pada subtree 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 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:
- LXC sudah mapan. Itu bergantung pada cgroup untuk menyediakan wadah.
- virt-sandbox adalah proyek sandboxing yang lebih baru.
- Versi terbaru Chromium juga menggunakan ruang nama untuk kotak pasir jika tersedia.
- The uWSGI framework untuk aplikasi berkerumun penggunaan ruang nama untuk meningkatkan sandboxing.
Lihat seri artikel LWN oleh Michael Kerrisk untuk informasi lebih lanjut.