L'utilizzo di "cat" e "echo" è il modo più semplice per accedere al filesystem /proc, sono richiesti però anche alcuni requisiti
Il filesystem /proc deve essere abilitato nel kernel, significa cioè che durante la compilazione deve essere selezionata la seguente opzione
CONFIG_PROC_FS=y |
Il filesistem /proc deve essere prima montato e ciò può essere verificato utilizzando
# mount | grep "type proc" none on /proc type proc (rw) |
Si necessita del permesso di lettura ed a volte anche di scrittura (di solito solo root) al filesystem /proc
Di solito, solo le voci in /proc/sys/* sono scrivibili, le altre sono in lettura e servono solo per il recupero di informazioni.
Il valore di una voce può essere recuperato utilizzando "cat":
# cat /proc/sys/net/ipv6/conf/all/forwarding 0 |
Un nuovo valore può essere impostato (se la relativa voce è scrivibile) utilizzando "echo":
# echo "1" >/proc/sys/net/ipv6/conf/all/forwarding |
L'utilizzo del programma "sysctl" è un metodo moderno per accedere agli switch del kernel. Si può usare anche nel caso in cui il filesystem /proc non sia montato. Si ha però accesso solo a /proc/sys/*!
Il programma "sysctl" è incluso nel pacchetto "procps" (su sistemi Red Hat Linux).
L'interfaccia sysctl deve essere abilitata nel kernel, in fase di compilazione deve cioè essere selezionata l'opzione seguente
CONFIG_SYSCTL=y |
Il valore di una voce può essere recuperato con:
# sysctl net.ipv6.conf.all.forwarding net.ipv6.conf.all.forwarding = 0 |
Un nuovo valore può essere impostato (se la relativa voce è scrivibile) con:
# sysctl -w net.ipv6.conf.all.forwarding=1 net.ipv6.conf.all.forwarding = 1 |
Nota: Non usare spazi prima e dopo del segno "=" quando si impostano valori. Inoltre, nel caso di valori multipli sulla stessa riga è necessario racchiuderli tra virgolette, come per esempio
# sysctl -w net.ipv4.ip_local_port_range="32768 61000" net.ipv4.ip_local_port_range = 32768 61000 |
Nota: in giro ci sono versioni di sysctl che visualizzano "/" invece di "."
Per maggiori dettagli si dia un'occhiata alla pagina man di sysctl.
Suggerimento: per cercare velocemente nelle impostazioni, utilizzare l'opzione "-a" (mostra tutte le voci) assieme a "grep".
Esistono vari formati (tipi di dati) dei valori nel filesystem /proc:
BOOLEANO: semplicemente uno "0" (falso) o un "1" (vero)
INTERO: un valore intero che può anche essere senza segno (unsigned)
righe più sofisticate, con diversi valori: a volte viene anche visualizzata una riga di intestazione, in caso contrario si dia uno sguardo ai sorgenti del kernel per avere informazioni sul significato di ogni valore...