Use the left/right arrow keys to navigate, 's' to enable/disable scrolling.

Amministrazione di sistema


Installazione e gestione di server basati su GNU/Linux

Indice


Architettura di un sistema GNU/Linux

Paradigmi progettuali POSIX

FHS

Bootstrap del sistema

Gestione del disco

Installazione con debootstrap

Chroot

Gestione dei servizi

Networking (base)

Screen

Architettura x86


Architettura x86

Architettura GNU/Linux


Architettura GNU/Linux

Architettura GNU/Linux


Architettura GNU/Linux

Paridigmi progettuali POSIX


Everything is a file

KISS (Keep it simple and stupid)

Everything is a file


Ordinary/plain files

documenti, dati binari, eseguibili


Directory

file speciali che memorizzano una lista del loro contenuto


Special/device file

rappresentano un’astrazione dell’hardware di sistema, possono essere a caratteri o a blocchi, a seconda del tipo di accesso che consentono

KISS (Keep it simple, stupid)


L’interfaccia in input e in output dei comandi di sistema utilizza per lo più stream di testo


Per ottenere funzionalità avanzate è possibile concatenare i comandi base


Le configurazioni sono basate su file di testo intellegibili


La potenza, versatilità e velocità dell’interfaccia CLI tipica di un sistema GNU/Linux è diretta conseguenza di questo paradigma

FHS (1/2)


L’organizzazione del file system su sistemi GNU/Linux segue uno standard denominato FHS (FS Hierarchy Standard)


Il filesystem è caratterizzazo da una struttura ad albero rovesciato, la cui origine prende il nome di root (radice) ed è rappresentato dal simbolo /


FHS definisce dei percorsi standard in cui devono essere posizionate le risorse del sistema

FHS (2/2)


Segue una lista di alcune delle principali directory di sistema:

  • /boot: contiene il kernel e tutti i file e gli eseguibili necessari nella fase di boot
  • /etc: continene tutte le configurazioni di sistema
  • /dev: directory adibita a contenere i device files (devfs)
  • /bin: eseguibili base di un sistema POSIX (ls, mv..)
  • /sbin: eseguibili base di un sistema POSIX per task di amministrazione (ifconfig, mkfs..)
  • /lib: librerie condivise di sistema
  • /usr -> /usr/bin /usr/sbin /usr/lib: replica parte della struttura di / e contiene applicazioni di alto livello (server grafico, programmi utente)

Nomenclatura dischi


Linux utilizza diversi sistemi per riconoscere i dischi installati e le partizioni.

Il primo, e più conosciuto, è quello che identfica i dischi con /dev/hdx (IDE/ATA) e /dev/sdx (SCSI/SATA), dove x è una lettera dell’alfabeto che indica l’ordine dei dischi. A questa sigla si aggiunge un numero cardinale che indica il numero della partizione.

Esiste un secondo sistema per identificare le partizioni in maniera univoca: gli UUID. Tali codici vengono generati in fase di formattazione e possono essere utilizzati per le operazioni comuni come boot e mount

Per ottenere la lista degli UUID:

$> sudo blkid

Partizionamento (schemi comuni)


In fase di progettazione di un server un aspetto estremamente delicato (e spesso sottovalutato) è la definizione dello schema di partizionamento da adottare.


Partizionamento/Schemi

Nota: Linux mette a disposizione del SysAdmin degli strumenti estremamente sofisticati per gestire i dischi in maniera più granulare, con funzionalità di labelling, grouping, shrinking e hot-snapshotting (LVM2)

Gestione delle partizioni


Il tool storico per la creazione e gestione della partizioni su sistemi UNIX è fdisk.


fdisk presenta una interfaccia interattiva a caratteri, ma permette lo scripting mediante semplice redirezione dei comandi mediante pipe


Esempi:

fdisk /dev/sda
echo -e “m\np\nq” | fdisk /dev/sda

Creazione dei filesystem


GNU/Linux supporta una vasta gamma di filesystem attraverso l’utilizzo di componenti kernel-space (driver per consentire al kernel di leggere/scrivere) ed user-space (programmi di supporto per la manipolazione dei filesystem).


Il tool principale per la gestione dei FS (in user-space) è mkfs: esso consente di inizializzare le partizioni e lavora da frontend verso i builder specifici (mkfs.ext3…), ad esempio:


mkfs -t ext3 -l badblocks /dev/hda1
mkfs -t vfat /dev/sdc1

Un caso particolare è l’area di swap, che deve essere inizializzata con un comando ad-hoc:


mkswap /dev/sda1

Check dei filesystem


A volte può capitare che, a causa di rimozioni di file e/o spostamenti, o di spegnimento forzato del sistema, le strutture dati interne al FS debbano essere riorganizzate per ottimizzare l’accesso o per sopperire ad eventuali errori (ad es. blocchi difettosi).


Per risolvere problemi di questo tipo, GNU/Linux fa uso del tool fsck che, in linea di principio, funziona in maniera molto simile a mkfs: data una partizione (un mount point o ancora un UUID), utilizza un tool user-space per manipolare il filesystem presente (attraverso la componente kernel-space).


# trova e corregge gli errori su un filesystem ext3
fsck -t ext3 -f -p /dev/hda1

Sequenza di boot


boot loader (grub)

kernel e initrd (Linux chainload)

mount dei filesystem

init/upstart e processi di sistema

Bootstrap x86


Durante la fase di bootstrap su architetture x86 vengono eseguite le seguenti operazioni:


  • caricamento iniziale di un particolare SW chiamato BIOS (Base I/O System), residente su una memoria EPROM e non modificabile (se non con procedure apposite). Il BIOS sovraintende alle operazioni minime di I/O del PC
  • esecuzione del POST (Power-ON Self Test)
  • caricamento del boot loader ed esecuzione del master boot code

MBR


L’MBR (Master Boot Record) è il primo settore del primo Hard Disk di un PC ed è caratterizzato da una dimensione fissa di 512Bytes. Esso, su architetture x86, svolge due funzioni estremamente importanti:


  • contiene la tabella delle partizioni (ultimi 64Bytes + firma 0xAA55)
  • contiene il boot loader, necessario all’avvio del SO (300Bytes + 80 di messaggi di errore)

Boot Loader


Per poter avviare un SO su PC x86, senza bisogno di mettere mano all’hardware, è indispensabile un boot loader


Un BL è un programma che si inserisce nella fase di bootstrap del sistema e permette di scegliere il SO da avviare. Su GNU/Linux l’attuale BL standard è GRUB (che ha soppiantato il vetusto LILO)


I boot loader espongono inoltre l’importante funzionalità del passaggio di parametri al SO, in modo da modificare il tipo di avvio.

GRUB (1/2)


Caratteristiche:

  • bl universale: può caricare la maggior parte dei SO esistenti
  • flessibilità: può essere installato su HD, CD-ROM, Memorie USB
  • configurazione attraverso un normale file di testo (in genere /boot/grub/menu.lst)
  • utility per la configurazione automatizzata (grub-install, update-grub, grub-floppy, …)
  • accesso nativo al contenuto dei filesystem. Attualmente sono supportati Ext2/Ext3, ReiserFS, XFS, JFS, UFS, VFAT

GRUB integra una console interattiva, grazie alla quale è possibile installarlo o configurarlo al volo

GRUB (2/2)


Proprio a causa della sua estrema flessibilità, GRUB è costituito da tre componenti, di cui due obbligatorie e una opzionale:


  • Stage 1: obbligatorio. Risiede nell’MBR ed effettua il solo caricamento degli stage successivi
  • Stage 1.5: opzionale. Risiede all’inizio della partizione di boot - sovraintende il caricamento dei driver di FS e dello stage 2
  • Stage 2: obbligatorio. Risiede anch’esso all’inizio della partizione di boot. Carica il menù di scelta del SO con la console integrata e inizia il processo di chainload.

Installazione interattiva di GRUB


Per installare in maniera interattiva GRUB sono necessari i seguenti step:


  • creazione nella partizione di boot (quella montata su /boot) della subdirectory grub
  • copia dei file di stage in /boot/grub
  • esecuzione interattiva di GRUB ($> sudo grub)
  • installazione mediante i seguenti comandi:
    
    root (hdX,Y)
    setup (hdX)
    quit 
    

Linux chainload


Con il passaggio dai kernel 2.4.x ai 2.6.x, la ‘chainload’ del sistema è stata modificata, passando dall’uso di initrd (un root fs temporaneo che contiene tutti i moduli necessari all’avvio del sistema), ad un meccanismo più flessibile: initramfs:

  • Il sistema carica il kernel base (vmlinuz)
  • Successivamente viene montato in ram un root filesystem temporaneo (initramfs), che contiene i moduli necessari ad inizializzare l’hardware (controller dei dischi, framebuffer..)
  • Dopo questa fase di configurazione, viene montato il root fs definitivo (passato mediante l’opzione root) e viene richiamato init

Initramfs introduce un passaggio intermedio tra il punto 2 e il punto 3, mediante il quale è possibile controllare il meccanismo di pivot del root file system ed eseguire degli script definiti dall’utente (ad esempio per la configurazione di tastiera e timezone nelle distro live).

SystemV init e avvio dei servizi


init è il primo processo eseguito su sistemi Unix-like, ed ha il compito lanciare ( spawn ) tutti gli altri processesi.


Generalmente init è lanciato in modalità demone ed è caratterizzato da PID 1.


È possibile modificare questo comportamento di default, istruendo la chainload su quale debba essere il processo 1 mediante il parametro del boot loader init=nomeprocesso


Nota: le ultime versioni di Debian (e derivate) hanno sostituito SysV init con il nuovo sistema upstart, che gestisce avvii concorrenti e gestione delle dipendenze tra processi

Mount dei filesystem


Il mount dei filesystem configurati sul sistema avviene nei primi step di init, mediante il task mount_all


La configurazione degli stessi viene effettuata mediante il file /etc/fstab, che definisce partizioni (o percorsi di rete) e mount point da gestire



Nota: fanno eccezione il rootfs e i fs speciali (devfs, sysfs, procfs), che vengono montati dagli script di initramfs

Sysadmin installation


Il System Administrator ha in genere delle esigenze molto diverse da quelle dell’utente di un sistema Desktop.


Sebbene molte delle tecnologie alla base sono le stesse le diverse esigenze spesso impongono un diverso workflow e l’uso di tool di amministrazione di sistema diversi da quelli grafici destinati agli utenti desktop.

Controllabilità


Il sysadmin deve poter controllare con precisione quali servizi devono essere attivi nel sistema.


Deve inoltre avere il pieno controllo dei file di configurazione e dei dati necessari alle applicazioni installate.

Flessibilità


Il sysadmin deve poter decidere cosa utilizzare, eliminando il superfluo (o potenzialmente dannoso) e aggiungendo ciò che si rende necessario per:


  • fornire i servizi richiesti
  • correggere un problema segnalato
  • supportare una nuova periferica…

Riproducibilità


Il syadmin deve poter riprodurre più volte i risultati ottenuti, possibilmente senza dover ripetere tutti i passi intermedi rivelatisi necessari la prima volta.


Spesso i server non sono del tutto eterogenei tra loro, ma hanno molte caratteristiche comuni.


Inoltre una volta messo online un servizio si deve essere in grado di sostituirlo in qualsiasi momento e il più velocemente possibile.

Debootstrap


Debootstrap è un tool Debian (quindi ereditato da tutte le distribuzioni Debian-based, in particolare Ubuntu) che consente di installare un sistema minimo totalmente via rete.


Debootstrap è basato esclusivamente su bash, wget, ar e tar e per questo motivo è in grado di funzionare da un qualsiasi sistema *nix-like


Utilizzo:

debootstrap [opzioni] SUITE TARGET_DIR
&> debootstrap –arch=amd64 karmic karmic

Chroot


L’operazione di chroot su sistemi *nix permette di cambiare al volo la root directory per tutti i processi lanciati dall’interno della stessa.


Dal momento in cui un programma viene spostato in una chroot, non potrà più accedere a dati all’esterno della stessa, che pertanto prende il nome di chroot jail.


La chroot è estremamente utile nelle seguenti situazioni:


  • postconfigurazione di un sistema installato in debootstrap
  • sandboxing di servizi di rete
  • primo livello di virtualizzazione (v.di OpenVZ)
  • sviluppo / testing

Postconfigurazione


Al termine di un’installazione con debootstrap si rendono necessari alcuni step di postconfigurazione:


  • installazione di un kernel
  • setting hostname
  • configurazione delle partizioni
  • configurazione di rete (interfaces e resolv.conf)
  • installazione e configurazione del bootloader
  • impostazione password di root
  • reboot!

Caso pratico


Installazione su VM (Qemu/KVM) con debootstrap e rsync

System V INIT


Tradizionalmente esistono due principali modalità di init: BSD e System V. Quest’ultimo è quello utilizzato da GNU/Linux e consiste di una serie di script shell organizzati in directory



nico@alcadds:/etc$ ls -ld rc?.d
drwxr-xr-x 2 root root 4096 2010-05-25 12:13 rc0.d
drwxr-xr-x 2 root root 4096 2010-05-25 12:13 rc1.d
drwxr-xr-x 2 root root 4096 2010-05-25 12:13 rc2.d
drwxr-xr-x 2 root root 4096 2010-05-25 12:13 rc3.d
drwxr-xr-x 2 root root 4096 2010-05-25 12:13 rc4.d
drwxr-xr-x 2 root root 4096 2010-05-25 12:13 rc5.d
drwxr-xr-x 2 root root 4096 2010-05-25 12:13 rc6.d
drwxr-xr-x 2 root root 4096 2009-11-19 12:38 rcS.d

Runlevels


Un runlevel è una abbreviazione numerica per definire una determinata modalità operativa del sistema


La modalità di boot scelta viene configurata all’interno del file /etc/inittab con la direttiva di configurazione initdefault. Esistono diversi runlevel, ognuno con un uso differente:

  • 0: Halt del sistema
  • 1: Single-User Mode, nessuna interfaccia di rete
  • 2: Multi-User Mode, nessuna interfaccia di rete
  • 3: Multi-User Mode, networking abilitato
  • 4: Non utilizzato, disponibile per l’utente
  • 5: Multi-User Mode come nel 3 ed interfaccia grafica
  • 6: Reboot
  • S: Single-User Mode, come nel 3, il terminale diventa console

Nota: su sistemi Debian (e derivati) non viene fatta distinzione tra i runlevel dal 2 al 5 (tutti multi-user in modalità grafica)

Networking


La configurazione base della rete su sistemi Linux è mantenuta in una manciata di file di configurazione:


  • /etc/hostname: nome host della macchina
  • /etc/hosts: lista degli host noti
  • /etc/resolv.conf: configurazione del DNS
  • /etc/network/interfaces: configurazione delle interfacce di rete

Gestione dei DNS


resolv.conf è il file in cui GNU/Linux mantiene le configurazioni per il sistema di risoluzione dei “nomi” di rete (DNS)


È indispensabile per una macchina che deve collegarsi ad Internet o ad una rete dotata di servizi avanzati. Le opzioni di configurazione sono state progettate per essere facilmente comprensibili, ad esempio:


# /etc/resolv.conf di esempio
nameserver 192.168.0.1
domain foobar.com #nome del dominio locale
search foobar.com #lista di ricerca per i nomi degli host

Configurazione delle interfacce


/etc/network/interfaces è il file per la configurazione delle interfacce di rete di sistema.

Anche in questo caso le opzioni di configurazione sono facilmente comprensibili. Il file è organizzato in stanze, ognuna delle quali consta di una o più righe.


auto lo eth0 eth1

iface lo inet loopback

iface eth0 inet dhcp

iface eth1 inet static
      address 192.168.0.100
      network 192.168.0.0
      netmask 255.255.255.0
      broadcast 192.168.0.255
      gateway 192.168.0.1     

Configurazione manuale: ifconfig


Il comando “ifconfig” permette di configurare le interfacce di rete presenti o di visualizzare informazioni sulle stesse.


Es. di configurazione:

  • ifconfig eth0 10.1.1.102 netmask 255.255.255.0 broadcast 10.1.1.255 up

Visualizzazione info:

  • ifconfig -a
  • ifconfig -s

Configurazione manuale: route


Il comando “route” serve a manipolare le tabelle di routing del kernel.


Es. configurazione rotta di default:

  • route add default gw 10.0.0.1

Aggiunta di una rotta verso una particolare rete:

  • route add -net 192.168.76.0 netmask 255.255.255.0 dev eth0

Visualizzazione tabelle di routing:

  • route -n

Configurazione manuale: ip


Il comando “ip” fornisce all’amministratore un unico tool per gestire tutte le configurazioni di rete del sistema.


Esso permette infatti di visualizzare e configurare routing, interfacce, policy di routing e tunnels.

Esempi:

  • sintassi standard: ip [opzioni] oggetto [comando [argomenti]]
  • ip addr list (ip a)/ ip route list (ip r)
  • ip addr add 10.1.1.1 dev tap0 && ip link set tap0 up
  • ip route add default via 10.1.1.1

Creazione di un bridge: brctl


Il comando “brctl” è usato per configurare, gestire e monitorare i bridge ethernet nel kernel linux.


Un bridge ethernet è un dispositivo usato per connettere interfacce e reti differenti in un unico dominio comune.


Esempi:

  • brctl addbr brname
  • brctl delbr brname
  • brctl show brname
  • brctl addif brname ifname
  • brctl delif brname ifname

Network filtering


Il codice di firewalling Linux ha una lunga storia:


Kernel 2.0 (1996): ipfwadm

Kernel 2.2 (1999): ipchains

Kernel 2.4 e 2.6 (2001): iptables

Network filtering


Il framework netfilter/iptables gestisce tutte le attività di firewalling su Linux. In particolare:


netfilter è l’insieme dei moduli in kernel space

iptables il comando con cui si gestisce netfilter

Feature principali



Packet filtering stateless e stateful

Supporto IPv4 e IPv6

Ogni tipo di natting (DNAT, SNAT..)

Infrastruttura estendibile

Architettura a plug-in

Architettura di netfilter (1/2)


La gestione dei pacchetti di rete è ottenuta attraverso tre componenti:


  • Tabelle ( tables ): sovrainsiemi di regole ordinate e adibite allo stesso scopo.
  • Catene ( chains ): elenchi di regole eseguiti in un particolare momento dell’elaborazione dei pacchetti. Ogni tabella espone una serie di catene di default (INPUT, OUTPUT, FORWARD..), alla quale possono aggiungersi catene custom
  • Regole ( rules ): ogni regola è caratterizzata da criteri (matching) e target (azione da intraprendere: -j ACCEPT, -j DROP ..)

Architettura di netfilter (2/2)


Iptables lavora su 3 tabelle (tables):


  • filter - regola il firewalling (policy di accettazione/drop dei pacchetti)
  • nat - regola le attività di natting
  • mangle - interviene sulla alterazione dei pacchetti.

Firewall


La tabella predefinita (implicita) su cui opera iptables è filter. Essa riguarda le attività di filtraggio del traffico.


filter presenta 3 catene di default:

  • INPUT - pacchetti destinati al sistema (in ingresso da ogni interfaccia)
  • OUTPUT - pacchetti originati dal sistema (in uscita)
  • FORWARD - pacchetti che attraversano il sistema, con IP sorgente e destinazione esterni.

Gestione delle catene


Inserimento regole:

iptables -A CATENA ... - Aggiunge una regola alla fine della catena indicata
iptables -I CATENA [#] ... - Inserisce alla riga # (default 1) una regola nella catena indicata
iptables -N CATENA - Crea una nuova catena custom
iptables -P CATENA TARGET - Imposta il target di default per la catena indicata


Rimozione regole e azzeramenti:

iptables -F [catena] - Ripulisce tutte le catene (o quella indicata)
iptables -X [catena] - Ripulisce tutte le catene custom (o quella indicata)
iptables -Z [catena] - Azzera i contatori sulle catene
iptables -D catena # - Cancella la regola numero # dalla catena indicata

Matching (1/2)


Esistono molteplici regole di matching dei pacchetti; esse possono essere combinate e utilizzate in una stessa regola.

Nota: Il carattere ! si usa come NOT logico):


Criteri di match standard:


-p [!] proto: protocollo IP (es: tcp, udp, gre, ah…)
-s [!] address[/mask]: indirizzo IP sorgente (o network con maschera di sottorete)
-d [!] address[/mask] indirizzo IP destinazione (o network)
-i [!] interface[+]: interfaccia di rete di entrata ([+] wildcard)
-o [!] interface[+]: interfaccia di rete di uscita ([+] wildcard)
-f: frammento di pacchetto

Matching (2/2)


Estensioni TCP (-p tcp):


–sport port[:port]: porta o range di porte TCP sorgenti
–dport port[:port]: porta o range di porte TCP di destinazione
–tcp-flags flag: flag TCP attivi (SYN, ACK, FIN, RST, URG, PSH)

–syn: pacchetti con solo SYN attivo (nuove connessioni)
–tcp-option option: match per specifiche opzioni della intestazione TCP

Samples


Drop delle connessioni HTTP in ingresso

iptables -I INPUT -p tcp --dport 80 -j DROP

Simple routing con masquerading

iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE

Packet sniffing


In caso di problemi è importante avere a disposizione tool per il debugging della rete.


Uno strumento insostituibile in questo tipo di task è il comando tcpdump, che permette di effettuare sniffing dei pacchetti in transito sulle interfacce del sistema.


Esempi:

  • sintassi base: tcpdump options [expression]
  • tcpdump -i wlan0
  • tcpdump -i wlan0 -s0 -X
  • tcpdump -I -i wlan0 -s0 -X
  • tcpdump -i wlan -s0 -X port 80

Network statistics: netstat


Il comando netstat fornisce statistiche su:

  • connessioni
  • rotte statiche
  • interfacce

Esempi:

  • netstat -atpn (socket TCP in ogni stato)
  • netstat -ltpn (socket TCP in listening)
  • netstat -upn (socket UDP)
  • netstat -x (socket UNIX)

  • netstat -i (interfacce)
  • netstat -rn (rotte statiche)

Network swiss-knife: nc


NetCat ( nc ) permette di leggere e scrivere dati attraverso la rete su protocolli TCP e UDP.


Fornisce due modalità d’uso:

  • connessione verso macchina remota
  • ascolto in locale (apertura socket)

Alcuni esempi:

  • Client di posta: nc mail.server.net 25
  • Web server: cat index.html | nc -l -p 8080 -q1
  • Port scanner: nc host 1-1024 -v -z
  • Backdoor: nc -l -p 5050 -e /bin/bash

Port scanner: nmap


Network mapper (nmap) è un tool che permette di effettuare il discovery di servizi e host su una rete.


Funzionalità:

  • Host discovery (ping scan, synscan..)
  • Port scanning
  • Service version detection
  • OS detection

Esempi:

  • nmap –sP 192.168.0.1-255 (Ping Scan)
  • nmap –sT 192.168.0.1 (TCP connect Scan)
  • nmap –sS 192.168.0.1 (TCP SYN Scan)
  • nmap –sU 192.168.0.1 (UDP Scan)
  • nmap –sV 192.168.0.1 (Version detection)
  • nmap –O [-sV -v] 192.168.0.1 (OS detection)

Screen - Terminal multiplexer (1/3)


Screen è un window manager full-screen, il cui funzionamento si basa sul multiplexing di un terminale fisico tra uno o più processi (tipicamente shell interattive)


Offre alcune funzionalità tipiche di un window manager, in un ambiente CLI:

  • apertura nuove finestre
  • tiling dello schermo
  • visualizzazione della lista delle finestre aperte
  • visualizzazione dei log dell’output
  • operazioni di copia e incolla tra finestre

Screen - Terminal multiplexer (2/3)


Per lanciare screen è sufficiente digitare il comando screen. Verrà avviato il windows manager, con una finestra, una shell al suo interno, ed una sessione “attached”.


All’avvio di screen sul sistema verranno dunque forkati due processi:

  • uno per il window manager (top lo visualizza come SCREEN)
  • uno per la sessione correntemente attached al window manager (in top screen)

È possibile in ogni momento effettuare il detach di una sessione mediante la combinazione di tasti C-a d (Ctrl+a e successivamente d)
Nota: pur effettuando il detach di una sessione, il comando in esecuzione resterè attivo all’interno di SCREEN, e sarà possibile riconnettere una sessione successivamente sullo stesso output

Screen - Terminal multiplexer (3/3)


Comandi per attaccare una sessione a screen:

  • screen -r pid.sessionname - Aggancia il terminale alla sessione specificata
  • screen -R - Aggancia il terminale all’ultima sessione utilizzata
  • screen -x - Aggancia il terminale ad una sessione (multiplexa l’output)
  • screen -ls - Visualizza le sessioni attive

Hotkey (dall’interno di una sessione screen):

  • C-a c - Crea una nuova finestra, con all’interno una shell interattiva
  • C-a 0-9 - Cambia la vista alla finestra #
  • C-a ” - Visualizza la lista delle finestre attive
  • C-a d - Effettua il detach della sessione
  • C-a i - Visualizza info sulla finestra attiva
  • C-a SPC/C-a n - Cambia la vista alla finestra successiva
  • C-a S - Split orizzontale della vista in due finestre
  • C-a TAB - Sposta l’input sulla finestra successiva in modalità split
  • C-a H - Effettua il logging della sessione

Copyright 2010 - Alca Soc. Coop.


http://learn.alcacoop.it - learn@alcacoop.it



released under CreativeCommons 2.5 by-nc-sa