Algunos programas tienen fijadas en su código rutas a programas que aún no existen. Para satisfacer a estos programas creamos unos cuantos enlaces simbólicos que serán sustituidos por ficheros reales durante el transcurso de este capítulo a medida que vayamos instalando todos los programas:
ln -sv /tools/bin/{bash,cat,echo,grep,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 ln -sv bash /bin/sh
Un sistema Linux correcto mantiene una lista de los sistemas de
ficheros montados en /etc/mtab
.
Normalmente, este fichero se crearía al montar un nuevo sistema de
ficheros. Puesto que no montaremos ningún sistema de ficheros dentro
del entorno chroot, crea un fichero vacío para las utilidades que
esperan que /etc/mtab
esté presente:
touch /etc/mtab
Para que root
pueda entrar al sistema
y para que el nombre “root”
sea reconocido, es necesario tener las entradas apropiadas en los
ficheros /etc/passwd
y /etc/group
.
Crea el fichero /etc/passwd
ejecutando
el siguiente comando:
cat > /etc/passwd << "EOF"
root:x:0:0:root:/root:/bin/bash
nobody:x:99:99:Unprivileged User:/dev/null:/bin/false
EOF
La contraseña real para root
(la
“x” es sólo un sustituto) se
establecerá más adelante.
Crea el fichero /etc/group
ejecutando
el siguiente 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:
mail:x:34:
nogroup:x:99:
EOF
Los grupos creados no son parte de ningún estándar, son grupos
escogidos en parte por los requisitos de la configuración de Udev en
este capítulo, y en parte por la práctica común empleada por una
serie de distribuciones Linux existentes. El LSB (Linux Standard
Base, disponible en http://www.linuxbase.org/) sólo
recomienda que, aparte del grupo root
con GID 0, esté presente un grupo bin
con GID 1. Todos los demás nombres de grupos y sus GID pueden ser
elegidos libremente por el usuario, pues los programas correctamente
escritos no dependen del número GID, sino que utilizan el nombre del
grupo.
Para eliminar el “I have no
name!” del símbolo del sistema, iniciaremos un nuevo
intérprete de comandos. Puesto que instalamos una Glibc completa en
el Capítulo 5 y acabamos
de crear los ficheros /etc/passwd
y
/etc/group
, la resolución de nombres de
usuarios y grupos funcionará ahora:
exec /tools/bin/bash --login +h
Advierte el uso de la directiva +h
. Esto le indica a bash que no utilice su tabla
interna de rutas. Sin esta directiva, bash recordaría la ruta a los
binarios que ha ejecutado. Para poder usar los binarios recién
compilados tan pronto como sean instalados, se usará la directiva
+h
durante el resto de este
capítulo.
Los programas login, getty e init (entre otros) mantienen una serie de ficheros de registro con información sobre quienes están y estaban dentro del sistema. Sin embargo, estos programas no crean dichos ficheros si no existen. Crea los ficheros de registro con sus permisos correctos:
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
El fichero /var/run/utmp
lista los
usuarios que están actualmente dentro del sistema, /var/log/wtmp
registra todos los ingresos y
salidas. El fichero /var/log/lastlog
muestra, para cada usuario, cuando fue la última vez que ingresó, y
el fichero /var/log/btmp
lista los
intentos de ingreso fallidos.