Creazione dei file passwd, group e log

Perché root possa accedere al sistema e perché il nome “root” possa essere riconosciuto, devono esserci registrazioni corrispondenti nei file /etc/passwd e /etc/group.

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

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

La password per root (la “x” qui è solo un sostituto) sarà impostata più avanti.

Create 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:
EOF

I gruppi creati non sono parte di nessuno standard -- sono alcuni dei gruppi che lo script make_devices usa nella prossima sezione. La LSB (Linux Standard Base) raccomanda solo che, accanto al gruppo “root” con un GID di 0, sia presente un gruppo “ bin” con un GID di 1. Tutti gli altri nomi di gruppo e GID possono essere scelti liberamente dall'amministratore del sistema, poiché pacchetti ben scritti non dipendono da numeri GID ma usano il nome del gruppo.

Per liberarsi del prompt “I have no name!”, avvieremo una nuova shell. Poiché abbiamo installato tutte le Glibc nel Capitolo 5 e abbiamo appena creato i file /etc/passwd e /etc/group, la risoluzione dei nomi dei gruppi e dei nomi utenti ora funzionerà.

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

Notate l'uso della direttiva +h. Questa dice a bash di non usare il suo path interno di hashing. Senza questa direttiva, bash ricorderebbe i percorsi dei binari che ha eseguito. Poiché vogliamo utilizzare i nostri nuovi binari compilati non appena sono installati, disabilitiamo questa funzione per la durata di questo capitolo.

I programmi login, agetty e init (e alcuni altri) usano alcuni file di log per registrare informazioni come chi ha acceduto al sistema e quando. Questi programmi, tuttavia, non scriveranno nei file log se questi non esistono già. Inizializzate i file log e dategli i permessi appropriati:

touch /var/run/utmp /var/log/{btmp,lastlog,wtmp}
chmod 644 /var/run/utmp /var/log/{btmp,lastlog,wtmp}

Il file /var/run/utmp registra gli utenti che sono attualmente loggati. Il file /var/log/wtmp registra tutti i login e logout. Il file /var/log/lastlog registra per ciascun utente quando lui o lei ha acceduto l'ultima volta. Il file /var/log/btmp registra i tentativi di login errati.