Creazione Files e Link
ATTENZIONE: I comandi e gli script seguenti devono essere eseguiti sempre in ambiente chroot !
Certi programmi hanno cablati dentro dei collegamenti a programmi che non esistono ancora. Per soddisfare questi programmi, occorre creare un certo numero di link simbolici che verranno rimpiazzati da file veri durante il corso di questa sezione, man mano che il software verrà installato.
ln -sv /tools/bin/{bash,cat,echo,pwd,stty} /bin ln -sv /tools/bin/perl /usr/bin ln -sv /tools/lib/libgcc_s.so{,.1} /usr/lib ln -sv /tools/lib/libstdc++.so{,.6} /usr/lib sed 's/tools/usr/' /tools/lib/libstdc++.la > /usr/lib/libstdc++.la ln -sv bash /bin/sh
Storicamente Linux mantiene un elenco dei file system montati nel file /etc/mtab
. I kernel moderni mantengono questa lista internamente e la espongono all'utente tramite il file-system /proc
. Occorre, allora, creare un link simbolico per quelle utility che si aspettano la presenza di /etc/mtab
:
ln -sv /proc/self/mounts /etc/mtab
Affinché l'utente root sia in grado di effettuare il login ed il nome root sia riconosciuto, devono esserci le voci appropriate nei file /etc/passwd
e /etc/group
.
Si crea il file /etc/passwd
con il seguente comando:
cat > /etc/passwd << "EOF" root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/dev/null:/bin/false nobody:x:99:99:Unprivileged User:/dev/null:/bin/false EOF
La vera password per root sarà impostata successivamente (la x usata qui serve solo da segnaposto).
Si crea il file /etc/group
con il seguente comando:
cat > /etc/group << "EOF" root:x:0: bin:x:1: sys:x:2: kmem:x:3: tape:x:4: tty: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: mail:x:34: nogroup:x:99: EOF
I gruppi creati non fanno parte di nessuno standard, sono stati decisi in parte dalle esigenze di configurazione di Udev in questa sezione ed in parte dalla convenzione comune adottata da un certo numero di distribuzioni Linux che ne fanno uso. Lo Standard Linux di Base LSB raccomanda solo che, oltre al gruppo root con Group ID (GID) 0, sia presente anche un gruppo bin con GID 1. Tutti gli altri nomi di gruppo e relativi GID possono essere scelti liberamente dall'amministratore di sistema, poiché i programmi ben scritti non dipendono dal numero GID, ma usano piuttosto il nome del gruppo.
Per rimuovere il prompt I have no name!, avviare una nuova shell, e poiché nella sezione precedente è stato già installato Glibc e sono stati anche creati i file /etc/passwd
ed /etc/group
, adesso funzionerà la risoluzione del nome utente e del nome di gruppo:
exec /tools/bin/bash --login +h
Notare l'uso della direttiva +h che dice a bash di non usare il suo percorso interno di hash. Senza questa direttiva bash ricorderebbe i percorsi dei binari che ha eseguito. La direttiva +h verrà usata in tutta questa sezione per assicurare l'uso dei binari appena compilati ed installati.
I programmi login, agetty, init
ed altri usano un certo numero di file di log per memorizzare informazioni, come, ad esempio, chi è entrato nel sistema e quando. Tuttavia questi programmi non scriveranno mai nei file di log se questi non esistono ancora, e quindi occorre inizializzare i file di log ed assegnare loro i permessi appropriati:
touch /var/log/{btmp,lastlog,wtmp} chgrp -v utmp /var/log/lastlog chmod -v 664 /var/log/lastlog chmod -v 600 /var/log/btmp
Il file /var/log/wtmp registra tutti i login e tutti i logout.
Il file /var/log/lastlog registra quando ciascun utente è entrato l'ultima volta.
Il file /var/log/btmp registra i tentativi di login andati a vuoto.
Il file /run/utmp, creato dinamicamente negli script di boot, registra gli utenti che hanno effettuato il login e stanno lavorando.
Il Caso è lo pseudonimo scelto da Dio quando non vuole firmarsi di persona.
Anatole France