In order for root to be able to login and for the name "root" to be recognized, there need to be relevant entries in the /etc/passwd and /etc/group files. Also, to support one of the coreutils tests, we will also create the user and group nobody, which is almost universally present on Linux computers.
Create the /etc/passwd file by running the following command:
cat > /etc/passwd << "EOF" root:x:0:0:root:/root:/bin/bash nobody:x:1000:1000:nobody:/:/bin/bash EOF |
The actual password for root (the "x" here is just a placeholder) will be set later.
Create the /etc/group file by running the following command:
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: nobody:x:1000: EOF |
The created groups aren't part of any standard -- they are the groups that the MAKEDEV script in the next section uses. Besides the group "root", the LSB (http://www.linuxbase.org) recommends only a group "bin", with a GID of 1, be present. All other group names and GIDs can be chosen freely by the user, as well-written packages don't depend on GID numbers but use the group's name.
Lastly, we re-login to the chroot environment. User name and group name resolution will start working immediately after the /etc/passwd and /etc/group files are created, because we installed a full glibc in Chapter 5. This will get rid of the "I have no name!" prompt.
exec /tools/bin/bash +h --login |