6.7. Creazione dei file passwd, group e log

Perché root possa accedere al sistema e perché il nome “root” possa essere riconosciuto, devono esserci registrazioni pertinenti 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 password per root (la “x” qui è solo un sostituto) sarà definita più avanti.

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

I gruppi creati non sono parte di nessuno standard, essi sono alcuni dei gruppi che la configurazione di Udev usa nella prossima sezione. La Linux Standard Base (LSB, disponibile su http://www.linuxbase.org) 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

Notare l'uso della direttiva +h. Questo 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 si è connesso al sistema e quando. Questi programmi, tuttavia, non scriveranno nei file log se questi non esistono già. Inizializzare i file log e dargli i permessi appropriati:

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

Il file /var/run/utmp registra gli utenti che sono attualmente connessi. 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.