source: chapter06/shadowpwd.xml@ aba5bfb

10.0 10.0-rc1 10.1 10.1-rc1 11.0 11.0-rc1 11.0-rc2 11.0-rc3 11.1 11.1-rc1 11.2 11.2-rc1 11.3 11.3-rc1 12.0 12.0-rc1 12.1 12.1-rc1 12.2 12.2-rc1 6.0 6.1 6.1.1 6.3 6.4 6.5 6.6 6.7 6.8 7.0 7.1 7.2 7.3 7.4 7.5 7.5-systemd 7.6 7.6-systemd 7.7 7.7-systemd 7.8 7.8-systemd 7.9 7.9-systemd 8.0 8.1 8.2 8.3 8.4 9.0 9.1 arm bdubbs/gcc13 ml-11.0 multilib renodr/libudev-from-systemd s6-init trunk v5_1 v5_1_1 xry111/arm64 xry111/arm64-12.0 xry111/clfs-ng xry111/lfs-next xry111/loongarch xry111/loongarch-12.0 xry111/loongarch-12.1 xry111/loongarch-12.2 xry111/mips64el xry111/multilib xry111/pip3 xry111/rust-wip-20221008 xry111/update-glibc
Last change on this file since aba5bfb was 5888299, checked in by Alex Gronenwoud <alex@…>, 21 years ago

Moving stuff from appendix A to chapter 6.

git-svn-id: http://svn.linuxfromscratch.org/LFS/trunk/BOOK@3161 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689

  • Property mode set to 100644
File size: 5.2 KB
Line 
1<sect1 id="ch06-shadow" xreflabel="Shadow">
2<title>Installing Shadow-&shadow-version;</title>
3<?dbhtml filename="shadow.html" dir="chapter06"?>
4
5<para>The Shadow package contains programs for handling passwords in a secure
6way.</para>
7
8<screen>Estimated build time: &shadow-time;
9Estimated required disk space: &shadow-compsize;</screen>
10
11&aa-shadowpwd-down;
12&aa-shadowpwd-dep;
13
14<sect2><title>&nbsp;</title><para>&nbsp;</para></sect2>
15
16<sect2>
17<title>Installation of Shadow</title>
18
19<para>The <userinput>login</userinput>, <userinput>getty</userinput> and
20<userinput>init</userinput> programs (and some others) maintain a number
21of logfiles to record who are and who were logged in to the system. These
22programs, however, don't create these logfiles when they don't exist, so if
23you want this logging to occur you will have to create the files yourself.
24The Shadow package needs to detect these files in their proper place, so we
25create them now, with their proper permissions:</para>
26
27<screen><userinput>touch /var/run/utmp /var/log/{btmp,lastlog,wtmp}
28chmod 644 /var/run/utmp /var/log/{btmp,lastlog,wtmp}</userinput></screen>
29
30<para>The <filename>/var/run/utmp</filename> file lists the users that are
31currently logged in, the <filename>/var/log/wtmp</filename> file who
32<emphasis>were</emphasis> logged in and when.
33The <filename>/var/log/lastlog</filename> file shows for each user when he
34or she last logged in, and the <filename>/var/log/btmp</filename> lists the
35bad login attempts.</para>
36
37<para>Shadow hard-wires the path to the <userinput>passwd</userinput> binary
38within the binary itself, but does this the wrong way. If a
39<userinput>passwd</userinput> binary is not present before installing Shadow,
40the package incorrectly assumes it is going to be located at
41<filename>/bin/passwd</filename>, but then installs it in
42<filename>/usr/bin/passwd</filename>. This will lead to errors about not finding
43<filename>/bin/passwd</filename>. To work around this bug, create a dummy
44<filename>passwd</filename> file, so that it gets hard-wired properly:</para>
45
46<screen><userinput>touch /usr/bin/passwd</userinput></screen>
47
48<para>The current Shadow suite has a problem that causes the
49<userinput>newgrp</userinput> command to fail. The following patch (also
50appearing in Shadow's CVS code) fixes this problem:</para>
51
52<screen><userinput>patch -Np1 -i ../&shadow-patch;</userinput></screen>
53
54<para>Now prepare Shadow for compilation:</para>
55
56<screen><userinput>./configure --prefix=/usr --libdir=/usr/lib --enable-shared</userinput></screen>
57
58<para>Compile the package:</para>
59
60<screen><userinput>make</userinput></screen>
61
62<para>And install it:</para>
63
64<screen><userinput>make install</userinput></screen>
65
66<para>Shadow uses two files to configure authentication settings for the
67system. Install these two config files:</para>
68
69<screen><userinput>cp etc/{limits,login.access} /etc</userinput></screen>
70
71<para>We want to change the password method to enable MD5 passwords which are
72theoretically more secure than the default "crypt" method and also allow
73password lengths greater than 8 characters. We also need to change the old
74<filename class="directory">/var/spool/mail</filename> location for user
75mailboxes to the current location at
76<filename class="directory">/var/mail</filename>. We do this by changing the
77relevant configuration file while copying it to its destination:</para>
78
79<screen><userinput>sed -e 's%/var/spool/mail%/var/mail%' \
80&nbsp;&nbsp;&nbsp;&nbsp;-e 's%#MD5_CRYPT_ENAB.no%MD5_CRYPT_ENAB yes%' \
81&nbsp;&nbsp;&nbsp;&nbsp;etc/login.defs.linux &gt; /etc/login.defs</userinput></screen>
82
83<note><para>Be extra careful when typing all of the above. It is probably safer
84to cut-and-paste it rather than try and type it all in.</para></note>
85
86<para>According to the man page of <userinput>vipw</userinput>, a
87<userinput>vigr</userinput> program should exist too. Since the installation
88procedure doesn't create this program, create a symlink manually:</para>
89
90<screen><userinput>ln -s vipw /usr/sbin/vigr</userinput></screen>
91
92<para>As the <filename>/bin/vipw</filename> symlink is redundant (and even
93pointing to a non-existent file), remove it:</para>
94
95<screen><userinput>rm /bin/vipw</userinput></screen>
96
97<para>Now move the <userinput>sg</userinput> program to its proper place:</para>
98
99<screen><userinput>mv /bin/sg /usr/bin</userinput></screen>
100
101<para>And move Shadow's dynamic libraries to a more appropriate location:</para>
102
103<screen><userinput>mv /usr/lib/lib{shadow,misc}.so.0* /lib</userinput></screen>
104
105<para>As some packages expect to find the just-moved libraries in
106<filename>/usr/lib</filename>, create the following symlinks:</para>
107
108<screen><userinput>ln -sf ../../lib/libshadow.so.0 /usr/lib/libshadow.so
109ln -sf ../../lib/libmisc.so.0 /usr/lib/libmisc.so</userinput></screen>
110
111<para>The -D option of the <filename>useradd</filename> program requires this
112directory for it to work properly:</para>
113
114<screen><userinput>mkdir /etc/default</userinput></screen>
115
116<para>Coreutils has already installed a <userinput>groups</userinput> program
117in <filename>/usr/bin</filename>. If you wish, you can remove the one
118installed by Shadow:</para>
119
120<screen><userinput>rm /bin/groups</userinput></screen>
121
122</sect2>
123
124&c6-cf-shadowpwd;
125&c6-cf-password;
126
127&aa-shadowpwd-shortdesc;
128&aa-shadowpwd-desc;
129
130</sect1>
131
Note: See TracBrowser for help on using the repository browser.