GNU/Linux >> Linux Esercitazione >  >> Linux

Linux – Kernel:supporto per gli spazi dei nomi?

Mi chiedo cosa significhi esattamente la funzione "Supporto per spazi dei nomi" nel kernel Linux. Sto usando il kernel 3.11.1 (il kernel stabile più recente in questo momento).

Se decido di disabilitarlo, noterò qualche cambiamento sul mio sistema?

E nel caso qualcuno decida di utilizzare i namespace, è sufficiente compilare NAMESPACES=Y nel kernel, o ha bisogno anche di strumenti per lo spazio utente?

Risposta accettata:

In poche parole, gli spazi dei nomi forniscono un modo per costruire un sistema Linux virtuale all'interno di un sistema Linux più grande. Questo è diverso dall'esecuzione di una macchina virtuale che viene eseguita come processo senza privilegi:la macchina virtuale appare come un singolo processo nell'host, mentre i processi in esecuzione all'interno di uno spazio dei nomi sono ancora in esecuzione sul sistema host.

Un sistema virtuale in esecuzione all'interno di un sistema più grande è chiamato contenitore. L'idea di un contenitore è che i processi in esecuzione all'interno del contenitore ritengano di essere gli unici processi nel sistema. In particolare, l'utente root all'interno del container non ha i privilegi di root al di fuori del container (si noti che questo è vero solo nelle versioni sufficientemente recenti del kernel).

Gli spazi dei nomi virtualizzano una funzionalità alla volta. Alcuni esempi di tipi di spazi dei nomi sono:

  • Spazi dei nomi utente: questo consente ai processi di comportarsi come se fossero in esecuzione come utenti diversi all'interno e all'esterno dello spazio dei nomi. In particolare, i processi eseguiti come UID 0 all'interno dello spazio dei nomi hanno privilegi di superutente solo rispetto ai processi in esecuzione nello stesso spazio dei nomi.
    Dal kernel Linux 3.8, gli utenti senza privilegi possono creare spazi dei nomi utente. Ciò consente a un utente normale di utilizzare le funzionalità riservate al root (come la modifica delle tabelle di routing o l'impostazione delle funzionalità).
  • Spazi dei nomi PID: i processi all'interno di uno spazio dei nomi PID non possono uccidere o tracciare i processi al di fuori di tale spazio dei nomi.
  • Monta spazi dei nomi: questo consente ai processi di avere una propria vista del filesystem. Questa vista può essere una vista parziale, consentendo di nascondere alcuni pezzi del filesystem e di ricomporsi in modo che gli alberi delle directory appaiano in luoghi diversi. Gli spazi dei nomi di montaggio generalizzano la tradizionale funzionalità chroot di Unix, che consente di limitare i processi a un particolare sottoalbero.
  • Spazi dei nomi di rete:consentono la separazione delle risorse di rete (dispositivi di rete) e quindi migliorano l'isolamento dei processi.

Gli spazi dei nomi si basano sul kernel per fornire l'isolamento tra gli spazi dei nomi. Questo è piuttosto complicato da risolvere, quindi potrebbero esserci ancora bug di sicurezza in giro. Il rischio di bug di sicurezza sarebbe il motivo principale per non abilitare la funzione. Un altro motivo per non abilitarlo sarebbe quando stai creando un piccolo kernel per un dispositivo incorporato. In un kernel generico che installeresti su un tipico server o workstation, gli spazi dei nomi dovrebbero essere abilitati, come qualsiasi altra funzionalità del kernel maturo.

Correlati:Linux – Possiamo ottenere informazioni sul compilatore da un binario elf?

Ci sono ancora poche applicazioni che fanno uso di namespace. Eccone alcuni:

  • LXC è consolidato. Si basa su cgroups per fornire i contenitori.
  • virt-sandbox è un progetto sandboxing più recente.
  • Le versioni recenti di Chromium utilizzano anche gli spazi dei nomi per il sandbox, ove disponibili.
  • Il framework uWSGI per le applicazioni in cluster utilizza gli spazi dei nomi per migliorare il sandboxing.

Per ulteriori informazioni, vedere la serie di articoli LWN di Michael Kerrisk.


Linux
  1. Installa Linux Kernel 4.12 in openSUSE

  2. Come aggiornare il kernel su desktop Linux

  3. Linux – Inoltro IP del kernel?

  4. Linux:un kernel contaminato in Linux?

  5. Linux – I diversi kernel Linux/unix sono intercambiabili?

comando sysctl in Linux

Cosa fare in caso di panico del kernel Linux

Aggiorna il kernel Linux di CentOS 8

Guida completa alla registrazione di Linux

Linux:diagramma del kernel Linux vs. Strumenti per le prestazioni?

Rilascio del kernel Linux 5.0, nuove funzionalità e miglioramenti!