6.6. Creazione dei file e dei link simbolici essenziali

Certi programmi hanno cablati dentro dei collegamenti a programmi che non esistono ancora. Per soddisfare questi programmi, creare un certo numero di link simbolici che verranno rimpiazzati da file veri durante il corso di questo capitolo, dopo che il software è stato installato.

ln -sv /tools/bin/{bash,cat,grep,pwd,stty} /bin
ln -sv /tools/bin/perl /usr/bin
ln -sv /tools/lib/libgcc_s.so{,.1} /usr/lib
ln -sv bash /bin/sh

Un sistema Linux corretto conserva un elenco dei file system montati nel file /etc/mtab. Normalmente questo file dovrebbe essere creato quando si monta un nuovo file system. Poiché non monteremo nessun file system nel nostro ambiente chroot, creare un file vuoto per quelle utility che si aspettano la presenza di /etc/mtab:

touch /etc/mtab

Affinché l'utente root sia in grado di effettuare il login e il nome «root» sia riconosciuto, devono esserci voci appropriate nei file /etc/passwd e /etc/group.

Creare il file /etc/passwd eseguendo il seguente comando:

cat > /etc/passwd << "EOF"
root:x:0:0:root:/root:/bin/bash
EOF

La vera password per root sarà impostata successivamente (la «x» urata quì è solo un segnaposto).

Creare il file /etc/group eseguendo il seguente comando:

cat > /etc/group << "EOF"
root:x:0:
bin:x:1:
sys:x:2:
kmem:x:3:
tty:x:4:
tape:x:5:
daemon:x:6:
floppy:x:7:
disk:x:8:
lp:x:9:
dialout:x:10:
audio:x:11:
video:x:12:
utmp:x:13:
usb:x:14:
cdrom:x:15:
EOF

I gruppi creati non fanno parte di nessuno standard—sono gruppi dettati in parte dalle necessità della configurazione Udev in questo capitolo e in parte dalla convenzione comune adottata da un certo numero di distribuzioni Linux esistenti. Lo standard Linux di base (Linux Standard Base, LSB, reperibile in http://www.linuxbase.org) raccomanda solo che, oltre al gruppo root con Group ID (GID) 0, sia presente un gruppo bin con GID 1. Tutti gli altri nomi e GID di gruppo possono essere scelti liberamente dall'amministratore di sistema, pioché i programmi ben scritti non dipendono dal numero GID, ma piuttosto usano il nome del gruppo.

Per rimuovere il prompt «I have no name!», iniziare una nuova shell. Poiché un completo Glibc è stato installato in Capitolo 5 e i file /etc/passwd e /etc/group sono stati creati, la risoluzione del nome utente e del nome di gruppo adesso funzionerà.

exec /tools/bin/bash --login +h

Notare l'uso della direttiva +h. Essa dice a bash di non usare il suo percorso interno di hash. Senza questa direttiva bash ricorderebbe i percorsi dei binari che ha eseguito. Per assucurare l'uso dei binari compilati di recente non appena vengono installati, la direttiva +h sarà usata per tutta la durata di questo capitolo.

I programmi login, agetty e init (e altri) usano un certo numero di file di log per memorizzare informazioni, come chi è entrato nel sistema e quando. Tuttavia questi programmi non scriveranno nei file di log se questi non esistono già. Inizializzare i file di log e assegnare loro i permessi appropriati:

touch /var/run/utmp /var/log/{btmp,lastlog,wtmp}
chgrp -v utmp /var/run/utmp /var/log/lastlog
chmod -v 664 /var/run/utmp /var/log/lastlog

Il file /var/run/utmp registra gli utenti che al momento hanno effettuato il log in. Il file /var/log/wtmp registra tutti gli accessi e le uscite. Il file /var/log/lastlog registra quando ogni utente ha effettuato l'ultimo log in. Il file /var/log/btmp registra i tentativi non riusciti di log in.