source: postlfs/security/shadow.xml@ e807ae1d

10.0 10.1 11.0 11.1 11.2 11.3 12.0 12.1 6.3 6.3-rc1 6.3-rc2 6.3-rc3 7.10 7.4 7.5 7.6 7.6-blfs 7.6-systemd 7.7 7.8 7.9 8.0 8.1 8.2 8.3 8.4 9.0 9.1 basic bdubbs/svn elogind gnome kde5-13430 kde5-14269 kde5-14686 kea ken/TL2024 ken/inkscape-core-mods ken/tuningfonts krejzi/svn lazarus lxqt nosym perl-modules plabs/newcss plabs/python-mods python3.11 qt5new rahul/power-profiles-daemon renodr/vulkan-addition systemd-11177 systemd-13485 trunk upgradedb xry111/intltool xry111/llvm18 xry111/soup3 xry111/test-20220226 xry111/xf86-video-removal
Last change on this file since e807ae1d was e807ae1d, checked in by Randy McMurchy <randy@…>, 17 years ago

Updated to Shadow-4.0.18.1, which is the version used in LFS. Also modified the /etc/pam.d/login files as suggested by Jonathan Oksman to strengthen the login security

git-svn-id: svn://svn.linuxfromscratch.org/BLFS/trunk/BOOK@6829 af4574ff-66df-0310-9fd7-8a98e5e911e0

  • Property mode set to 100644
File size: 23.1 KB
Line 
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
3 "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
4 <!ENTITY % general-entities SYSTEM "../../general.ent">
5 %general-entities;
6
7 <!-- <!ENTITY shadow-download-http "http://ftp.pld.org.pl/software/shadow/old/shadow-&shadow-version;.tar.bz2"> -->
8 <!ENTITY shadow-download-http "http://cross-lfs.org/files/packages/svn/shadow-&shadow-version;.tar.bz2">
9 <!ENTITY shadow-download-ftp "ftp://ftp.pld.org.pl/software/shadow/shadow-&shadow-version;.tar.bz2">
10 <!ENTITY shadow-md5sum "e7751d46ecf219c07ae0b028ab3335c6">
11 <!ENTITY shadow-size "1.5 MB">
12 <!ENTITY shadow-buildsize "18 MB">
13 <!ENTITY shadow-time "0.3 SBU">
14]>
15
16<sect1 id="shadow" xreflabel="Shadow-&shadow-version;">
17 <?dbhtml filename="shadow.html"?>
18
19 <sect1info>
20 <othername>$LastChangedBy$</othername>
21 <date>$Date$</date>
22 </sect1info>
23
24 <title>Shadow-&shadow-version;</title>
25
26 <indexterm zone="shadow">
27 <primary sortas="a-Shadow">Shadow</primary>
28 </indexterm>
29
30 <sect2 role="package">
31 <title>Introduction to Shadow</title>
32
33 <para><application>Shadow</application> was indeed installed in LFS and
34 there is no reason to reinstall it unless you installed
35 <application>CrackLib</application> or
36 <application>Linux-PAM</application> after your LFS system was completed.
37 If you have installed <application>CrackLib</application> after LFS, then
38 reinstalling <application>Shadow</application> will enable strong password
39 support. If you have installed <application>Linux-PAM</application>,
40 reinstalling <application>Shadow</application> will allow programs such as
41 <command>login</command> and <command>su</command> to utilize PAM.</para>
42
43 <bridgehead renderas="sect3">Package Information</bridgehead>
44 <itemizedlist spacing="compact">
45 <listitem>
46 <para>Download (HTTP): <ulink url="&shadow-download-http;"/></para>
47 </listitem>
48 <listitem>
49 <para>Download (FTP): <ulink url="&shadow-download-ftp;"/></para>
50 </listitem>
51 <listitem>
52 <para>Download MD5 sum: &shadow-md5sum;</para>
53 </listitem>
54 <listitem>
55 <para>Download size: &shadow-size;</para>
56 </listitem>
57 <listitem>
58 <para>Estimated disk space required: &shadow-buildsize;</para>
59 </listitem>
60 <listitem>
61 <para>Estimated build time: &shadow-time;</para>
62 </listitem>
63 </itemizedlist>
64
65 <bridgehead renderas="sect3">Additional Downloads</bridgehead>
66 <itemizedlist spacing='compact'>
67 <listitem>
68 <para>Required patch: <ulink
69 url="&patch-root;/shadow-&shadow-version;-useradd_fix-2.patch"/></para>
70 </listitem>
71 </itemizedlist>
72
73 <bridgehead renderas="sect3">Shadow Dependencies</bridgehead>
74
75 <bridgehead renderas="sect4">Required</bridgehead>
76 <para role="required"><xref linkend="linux-pam"/> and/or
77 <xref linkend="cracklib"/></para>
78
79 <para condition="html" role="usernotes">User Notes:
80 <ulink url="&blfs-wiki;/shadow"/></para>
81
82 </sect2>
83
84 <sect2 role="installation">
85 <title>Installation of Shadow</title>
86
87 <important>
88 <para>The installation shown below is for a situation where
89 <application>Linux-PAM</application> has been installed (with or
90 without a <application>CrackLib</application> installation) and
91 <application>Shadow</application> is being reinstalled to support the
92 <application>Linux-PAM</application> installation. If you are
93 reinstalling <application>Shadow</application> to provide strong
94 password support via the <application>CrackLib</application> library
95 and you have not installed <application>Linux-PAM</application>, ensure
96 you add the <parameter>--with-libcrack</parameter> parameter to the
97 <command>configure</command> script below.</para>
98 </important>
99
100 <para>Reinstall <application>Shadow</application> by running the following
101 commands:</para>
102
103<screen><userinput>patch -Np1 -i ../shadow-&shadow-version;-useradd_fix-2.patch &amp;&amp;
104
105./configure --libdir=/lib \
106 --sysconfdir=/etc \
107 --enable-shared \
108 --without-selinux &amp;&amp;
109
110sed -i 's/groups$(EXEEXT) //' src/Makefile &amp;&amp;
111find man -name Makefile -exec sed -i 's/groups\.1 / /' {} \; &amp;&amp;
112sed -i -e 's/ ko//' -e 's/ zh_CN zh_TW//' man/Makefile &amp;&amp;
113
114for i in de es fi fr id it pt_BR; do
115 convert-mans UTF-8 ISO-8859-1 man/${i}/*.?
116done &amp;&amp;
117
118for i in cs hu pl; do
119 convert-mans UTF-8 ISO-8859-2 man/${i}/*.?
120done &amp;&amp;
121
122convert-mans UTF-8 EUC-JP man/ja/*.? &amp;&amp;
123convert-mans UTF-8 KOI8-R man/ru/*.? &amp;&amp;
124convert-mans UTF-8 ISO-8859-9 man/tr/*.? &amp;&amp;
125
126make</userinput></screen>
127
128 <para>This package does not come with a test suite.</para>
129
130 <para>Now, as the <systemitem class="username">root</systemitem> user:</para>
131
132<screen role="root"><userinput>make install &amp;&amp;
133mv -v /usr/bin/passwd /bin &amp;&amp;
134mv -v /lib/libshadow.*a /usr/lib &amp;&amp;
135rm -v /lib/libshadow.so &amp;&amp;
136ln -v -sf ../../lib/libshadow.so.0 /usr/lib/libshadow.so</userinput></screen>
137
138 </sect2>
139
140 <sect2 role="commands">
141 <title>Command Explanations</title>
142
143 <!-- Removed the -with-libpam and -without-libcrack options from the
144 default as these are the defaults. Pam will automatically be picked
145 up if it is installed, and CrackLib won't be used unless specifically
146 requested via -with-libcrack
147 <para><parameter>-without-libcrack</parameter>: This switch tells
148 <application>Shadow</application> not to use
149 <filename class='libraryfile'>libcrack</filename>. This is desired as
150 <application>Linux-PAM</application> will provide
151 <filename class='libraryfile'>libcrack</filename> functionality.</para>
152 -->
153
154 <para><parameter>--without-selinux</parameter>: Support for selinux is
155 enabled by default, but selinux is not built in a base LFS system. The
156 <command>configure</command> script will fail if this option is not
157 used.</para>
158
159 <para><command>sed -i 's/groups$(EXEEXT) //' src/Makefile</command>: This
160 command is used to suppress the installation of the
161 <command>groups</command> program as the version from the
162 <application>Coreutils</application> package installed during LFS is
163 preferred.</para>
164
165 <para><command>find man -name Makefile -exec ... {} \;</command>: This
166 command is used to suppress the installation of the
167 <command>groups</command> man pages so the existing ones installed from
168 the <application>Coreutils</application> package are not replaced.</para>
169
170 <para><command>sed -i -e '...' -e '...' man/Makefile</command>: This
171 command disables the installation of Chinese and Korean manual pages, since
172 <application>Man-DB</application> cannot format them properly.</para>
173
174 <para><command>convert-mans ...</command>: These commands are used to
175 convert some of the man pages so that <application>Man-DB</application>
176 will display them in the expected encodings.</para>
177
178 <para><command>mv -v /usr/bin/passwd /bin</command>: The
179 <command>passwd</command> program may be needed during times when the
180 <filename class='directory'>/usr</filename> filesystem is not mounted so
181 it is moved into the root partition.</para>
182
183 <para><command>mv -v ...; rm -v ...; ln -v ...</command>: These commands
184 are used to move the <filename class='libraryfile'>libshadow</filename>
185 library to the root partition to support the moving of the
186 <command>passwd</command> program earlier.</para>
187
188 </sect2>
189
190 <sect2 role="configuration">
191 <title>Configuring Shadow</title>
192
193 <para><application>Shadow</application>'s stock configuration for the
194 <command>useradd</command> utility is not suitable for LFS systems. Use the
195 following commands as the <systemitem class="username">root</systemitem>
196 user to change the default home directory for new users and prevent the
197 creation of mail spool files:</para>
198
199<screen role="root"><userinput>useradd -D -b /home &amp;&amp;
200sed -i 's/yes/no/' /etc/default/useradd</userinput></screen>
201
202 </sect2>
203
204 <sect2 role="configuration">
205 <title>Configuring Linux-PAM to Work with Shadow</title>
206
207 <note>
208 <para>The rest of this page is devoted to configuring
209 <application>Shadow</application> to work properly with
210 <application>Linux-PAM</application>. If you do not have
211 <application>Linux-PAM</application> installed, and you reinstalled
212 <application>Shadow</application> to support strong passwords via
213 the <application>CrackLib</application> library, no further configuration
214 is required.</para>
215 </note>
216
217 <sect3 id="pam.d">
218 <title>Config Files</title>
219
220 <para><filename>/etc/pam.d/*</filename> or alternatively
221 <filename>/etc/pam.conf, /etc/login.defs and
222 /etc/security/*</filename></para>
223
224 <indexterm zone="shadow pam.d">
225 <primary sortas="e-etc-pam.d">/etc/pam.d/*</primary>
226 </indexterm>
227
228 <indexterm zone="shadow pam.d">
229 <primary sortas="e-etc-pam.conf">/etc/pam.conf</primary>
230 </indexterm>
231
232 <indexterm zone="shadow pam.d">
233 <primary sortas="e-etc-login.defs">/etc/login.defs</primary>
234 </indexterm>
235
236 <indexterm zone="shadow pam.d">
237 <primary sortas="e-etc-security">/etc/security/*</primary>
238 </indexterm>
239
240 </sect3>
241
242 <sect3>
243 <title>Configuration Information</title>
244
245 <para>Configuring your system to use <application>Linux-PAM</application>
246 can be a complex task. The information below will provide a basic setup
247 so that <application>Shadow</application>'s login and password
248 functionality will work effectively with
249 <application>Linux-PAM</application>. Review the information and links on
250 the <xref linkend="linux-pam"/> page for further configuration
251 information. For information specific to integrating
252 <application>Shadow</application>, <application>Linux-PAM</application>
253 and <application>CrackLib</application>, you can visit the following
254 links:</para>
255
256 <itemizedlist spacing="compact">
257 <listitem>
258 <para><ulink
259 url="http://www.kernel.org/pub/linux/libs/pam/Linux-PAM-html/pam-6.html#ss6.3"/></para>
260 </listitem>
261 <listitem>
262 <para><ulink
263 url="http://www.deer-run.com/~hal/sysadmin/pam_cracklib.html"/></para>
264 </listitem>
265 </itemizedlist>
266
267 <sect4 id="pam-login-defs">
268 <title>Configuring /etc/login.defs</title>
269
270 <para>The <command>login</command> program currently performs many
271 functions which <application>Linux-PAM</application> modules should
272 now handle. The following <command>sed</command> command will comment
273 out the appropriate lines in <filename>/etc/login.defs</filename>, and
274 stop <command>login</command> from performing these functions (a backup
275 file named <filename>/etc/login.defs.orig</filename> is also created
276 to preserve the original file's contents). Issue the following commands
277 as the <systemitem class="username">root</systemitem> user:</para>
278
279 <indexterm zone="shadow pam-login-defs">
280 <primary sortas="e-etc-login.defs">/etc/login.defs</primary>
281 </indexterm>
282
283<screen role="root"><userinput>install -v -m644 /etc/login.defs /etc/login.defs.orig &amp;&amp;
284for FUNCTION in LASTLOG_ENAB MAIL_CHECK_ENAB \
285 PORTTIME_CHECKS_ENAB CONSOLE \
286 MOTD_FILE NOLOGINS_FILE PASS_MIN_LEN \
287 SU_WHEEL_ONLY MD5_CRYPT_ENAB \
288 CONSOLE_GROUPS ENVIRON_FILE \
289 ULIMIT ENV_TZ ENV_HZ ENV_SUPATH \
290 ENV_PATH QMAIL_DIR MAIL_DIR MAIL_FILE \
291 CHFN_AUTH FAILLOG_ENAB QUOTAS_ENAB FTMP_FILE \
292 OBSCURE_CHECKS_ENAB CRACKLIB_DICTPATH \
293 PASS_CHANGE_TRIES PASS_ALWAYS_WARN ISSUE_FILE
294do
295 sed -i "s/^$FUNCTION/# &amp;/" /etc/login.defs
296done</userinput></screen>
297
298 <!-- Moved the commenting of these four parameters into the section
299 above. If PAM is installed, it complains if these are not commented
300 regardless if CrackLib is installed.
301
302 <para>If you have <application>CrackLib</application> installed,
303 also comment out four more lines using the following command as the
304 <systemitem class="username">root</systemitem> user:</para>
305
306<screen role="root"><userinput>for FUNCTION in OBSCURE_CHECKS_ENAB CRACKLIB_DICTPATH \
307 PASS_CHANGE_TRIES PASS_ALWAYS_WARN
308do
309 sed -i "s/^$FUNCTION/# &amp;/" /etc/login.defs
310done</userinput></screen>
311
312 -->
313
314 </sect4>
315
316 <sect4>
317 <title>Configuring the /etc/pam.d/ Files</title>
318
319 <para>As mentioned previously in the
320 <application>Linux-PAM</application> instructions,
321 <application>Linux-PAM</application> has two supported methods for
322 configuration. The commands below assume that you've chosen to use
323 a directory based configuration, where each program has its own
324 configuration file. You can optionally use a single
325 <filename>/etc/pam.conf</filename> configuration file by using the
326 text from the files below, and supplying the program name as an
327 additional first field for each line.</para>
328
329 <para>As the <systemitem class="username">root</systemitem> user,
330 create the <filename class="directory">/etc/pam.d</filename>
331 directory with the following command:</para>
332
333 <screen role="root"><userinput>install -v -d -m755 /etc/pam.d</userinput></screen>
334
335 <para>While still the <systemitem class="username">root</systemitem>
336 user, add the following <application>Linux-PAM</application>
337 configuration files to the
338 <filename class="directory">/etc/pam.d/</filename> directory (or
339 add the contents to the <filename>/etc/pam.conf</filename> file) with
340 the following commands:</para>
341
342 </sect4>
343
344 <sect4>
345 <title>'login' (with CrackLib)</title>
346
347<screen role="root"><userinput>cat &gt; /etc/pam.d/login &lt;&lt; "EOF"
348<literal># Begin /etc/pam.d/login
349
350auth requisite pam_nologin.so
351auth required pam_securetty.so
352auth required pam_unix.so
353account required pam_access.so
354account required pam_unix.so
355session required pam_env.so
356session required pam_motd.so
357session required pam_limits.so
358session optional pam_mail.so dir=/var/mail standard
359session optional pam_lastlog.so
360session required pam_unix.so
361password required pam_cracklib.so retry=3 difok=8 minlen=5 \
362 dcredit=3 ocredit=3 \
363 ucredit=2 lcredit=2
364password required pam_unix.so md5 shadow use_authtok
365
366# End /etc/pam.d/login</literal>
367EOF</userinput></screen>
368
369 </sect4>
370
371 <sect4>
372 <title>'login' (without CrackLib)</title>
373
374<screen role="root"><userinput>cat &gt; /etc/pam.d/login &lt;&lt; "EOF"
375<literal># Begin /etc/pam.d/login
376
377auth requisite pam_nologin.so
378auth required pam_securetty.so
379auth required pam_env.so
380auth required pam_unix.so
381account required pam_access.so
382account required pam_unix.so
383session required pam_motd.so
384session required pam_limits.so
385session optional pam_mail.so dir=/var/mail standard
386session optional pam_lastlog.so
387session required pam_unix.so
388password required pam_unix.so md5 shadow
389
390# End /etc/pam.d/login</literal>
391EOF</userinput></screen>
392
393 </sect4>
394
395 <sect4>
396 <title>'passwd' (with CrackLib)</title>
397
398<screen role="root"><userinput>cat &gt; /etc/pam.d/passwd &lt;&lt; "EOF"
399<literal># Begin /etc/pam.d/passwd
400
401password required pam_cracklib.so retry=3 difok=8 minlen=5 \
402 dcredit=3 ocredit=3 \
403 ucredit=2 lcredit=2
404password required pam_unix.so md5 shadow use_authtok
405
406# End /etc/pam.d/passwd</literal>
407EOF</userinput></screen>
408
409 </sect4>
410
411 <sect4>
412 <title>'passwd' (without CrackLib)</title>
413
414<screen role="root"><userinput>cat &gt; /etc/pam.d/passwd &lt;&lt; "EOF"
415<literal># Begin /etc/pam.d/passwd
416
417password required pam_unix.so md5 shadow
418
419# End /etc/pam.d/passwd</literal>
420EOF</userinput></screen>
421
422 </sect4>
423
424 <sect4>
425 <title>'su'</title>
426
427<screen role="root"><userinput>cat &gt; /etc/pam.d/su &lt;&lt; "EOF"
428<literal># Begin /etc/pam.d/su
429
430auth sufficient pam_rootok.so
431auth required pam_unix.so
432account required pam_unix.so
433session optional pam_mail.so dir=/var/mail standard
434session required pam_env.so
435session required pam_unix.so
436
437# End /etc/pam.d/su</literal>
438EOF</userinput></screen>
439
440 </sect4>
441
442 <sect4>
443 <title>'chage'</title>
444
445<screen role="root"><userinput>cat &gt; /etc/pam.d/chage &lt;&lt; "EOF"
446<literal># Begin /etc/pam.d/chage
447
448auth sufficient pam_rootok.so
449auth required pam_unix.so
450account required pam_unix.so
451session required pam_unix.so
452password required pam_permit.so
453
454# End /etc/pam.d/chage</literal>
455EOF</userinput></screen>
456
457 </sect4>
458
459 <sect4>
460 <title>'chpasswd', 'chgpasswd', 'groupadd', 'groupdel', 'groupmems',
461 'groupmod', 'newusers', 'useradd', 'userdel', and 'usermod'</title>
462
463<screen role="root"><userinput>for PROGRAM in chpasswd chgpasswd groupadd groupdel groupmems \
464 groupmod newusers useradd userdel usermod
465do
466 install -v -m644 /etc/pam.d/chage /etc/pam.d/$PROGRAM
467 sed -i "s/chage/$PROGRAM/" /etc/pam.d/$PROGRAM
468done</userinput></screen>
469
470 <warning>
471 <para>At this point, you should do a simple test to see if
472 <application>Shadow</application> is working as expected. Open
473 another terminal and log in as a user, then <command>su</command> to
474 <systemitem class="username">root</systemitem>. If you do not see any
475 errors, then all is well and you should proceed with the rest of the
476 configuration. If you did receive errors, stop now and double check
477 the above configuration files manually. You can also run the test
478 suite from the <application>Linux-PAM</application> package to assist
479 you in determining the problem. If you cannot find and
480 fix the error, you should recompile <application>Shadow</application>
481 replacing <option>--with-libpam</option> with
482 <option>--without-libpam</option> in the above instructions (also move
483 the <filename>/etc/login.defs.orig</filename> backup file to
484 <filename>/etc/login.defs</filename>). If you
485 fail to do this and the errors remain, you will be unable to log into
486 your system.</para>
487 </warning>
488
489 </sect4>
490
491 <sect4>
492 <title>Other</title>
493
494 <para>Currently, <filename>/etc/pam.d/other</filename> is configured
495 to allow anyone with an account on the machine to use PAM-aware
496 programs without a configuration file for that program. After testing
497 <application>Linux-PAM</application> for proper configuration, install
498 a more restrictive <filename>other</filename> file so that
499 program-specific configuration files are required:</para>
500
501<screen role="root"><userinput>cat &gt; /etc/pam.d/other &lt;&lt; "EOF"
502<literal># Begin /etc/pam.d/other
503
504auth required pam_deny.so
505auth required pam_warn.so
506account required pam_deny.so
507session required pam_deny.so
508password required pam_deny.so
509password required pam_warn.so
510
511# End /etc/pam.d/other</literal>
512EOF</userinput></screen>
513
514 <para>If you preserved the source tree from the
515 <application>Linux-PAM</application> package (or you feel like unpacking
516 that tarball, then running <command>configure</command> and
517 <command>make</command>), now would be a good time to run the test
518 suite from this package. This test suite will use the configuration you
519 just finished during the tests. All the tests should pass.</para>
520
521 </sect4>
522
523 <sect4 id="pam-access">
524 <title>Configuring Login Access</title>
525
526 <para>Instead of using the <filename>/etc/login.access</filename>
527 file for controlling access to the system,
528 <application>Linux-PAM</application> uses the
529 <filename class='libraryfile'>pam_access.so</filename> module along
530 with the <filename>/etc/security/access.conf</filename> file. Rename
531 the <filename>/etc/login.access</filename> file using the following
532 command:</para>
533
534 <indexterm zone="shadow pam-access">
535 <primary sortas="e-etc-security-access.conf">/etc/security/access.conf</primary>
536 </indexterm>
537
538<screen role="root"><userinput>if [ -f /etc/login.access ]; then
539 mv -v /etc/login.access /etc/login.access.NOUSE
540fi</userinput></screen>
541
542 </sect4>
543
544 <sect4 id="pam-limits">
545 <title>Configuring Resource Limits</title>
546
547 <para>Instead of using the <filename>/etc/limits</filename> file
548 for limiting usage of system resources,
549 <application>Linux-PAM</application> uses the
550 <filename class='libraryfile'>pam_limits.so</filename> module along
551 with the <filename>/etc/security/limits.conf</filename> file. Rename
552 the <filename>/etc/limits</filename> file using the following
553 command:</para>
554
555 <indexterm zone="shadow pam-limits">
556 <primary sortas="e-etc-security-limits.conf">/etc/security/limits.conf</primary>
557 </indexterm>
558
559<screen role="root"><userinput>if [ -f /etc/limits ]; then
560 mv -v /etc/limits /etc/limits.NOUSE
561fi</userinput></screen>
562
563 </sect4>
564
565 <sect4 id="pam-env">
566 <title>Configuring Default Environment</title>
567
568 <para>During previous configuration, several items were removed from
569 <filename>/etc/login.defs</filename>. Some of these items are now
570 controlled by the <filename class='libraryfile'>pam_env.so</filename>
571 module and the <filename>/etc/security/pam_env.conf</filename>
572 configuration file. In particular, the default path has been
573 changed. To recover your default path, execute the following
574 commands:</para>
575
576<screen role="root"><userinput>ENV_PATH=`grep '^ENV_PATH' /etc/login.defs.orig | \
577 awk '{ print $2 }' | sed 's/PATH=//'` &amp;&amp;
578echo 'PATH DEFAULT='`echo "${ENV_PATH}"`\
579' OVERRIDE=${PATH}' \
580 >> /etc/security/pam_env.conf &amp;&amp;
581unset ENV_PATH</userinput></screen>
582
583 <note>
584 <para>ENV_SUPATH is no longer supported. You must create
585 a valid <filename>/root/.bashrc</filename> file to provide a
586 modified path for the super-user.</para>
587 </note>
588
589 </sect4>
590
591 </sect3>
592
593 </sect2>
594
595 <sect2 role="content">
596 <title>Contents</title>
597
598 <para>A list of the installed files, along with their short descriptions
599 can be found at
600 <ulink url="&lfs-root;/chapter06/shadow.html#contents-shadow"/>.</para>
601
602 </sect2>
603
604</sect1>
Note: See TracBrowser for help on using the repository browser.