source: postlfs/security/shadow.xml@ 9a3142c

10.0 10.1 11.0 11.1 11.2 11.3 12.0 12.1 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 9a3142c was 9a3142c, checked in by Andrew Benton <andy@…>, 12 years ago

fix compiling shadow with acl installed

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

  • Property mode set to 100644
File size: 23.4 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
8 "http://pkg-shadow.alioth.debian.org/releases/shadow-&shadow-version;.tar.bz2 ">
9 <!ENTITY shadow-download-ftp " ">
10 <!ENTITY shadow-md5sum "d5f7a588fadb79faeb4b08b1eee82e9a">
11 <!ENTITY shadow-size "2.1 MB">
12 <!ENTITY shadow-buildsize "35 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>
34 <application>Shadow</application> was indeed installed in LFS and there is
35 no reason to reinstall it unless you installed
36 <application>CrackLib</application> or
37 <application>Linux-PAM</application> after your LFS system was completed.
38 If you have installed <application>CrackLib</application> after LFS, then
39 reinstalling <application>Shadow</application> will enable strong password
40 support. If you have installed <application>Linux-PAM</application>,
41 reinstalling <application>Shadow</application> will allow programs such as
42 <command>login</command> and <command>su</command> to utilize PAM.
43 </para>
44
45 &lfs71_checked;
46
47 <bridgehead renderas="sect3">Package Information</bridgehead>
48 <itemizedlist spacing="compact">
49 <listitem>
50 <para>
51 Download (HTTP): <ulink url="&shadow-download-http;"/>
52 </para>
53 </listitem>
54 <listitem>
55 <para>
56 Download (FTP): <ulink url="&shadow-download-ftp;"/>
57 </para>
58 </listitem>
59 <listitem>
60 <para>
61 Download MD5 sum: &shadow-md5sum;
62 </para>
63 </listitem>
64 <listitem>
65 <para>
66 Download size: &shadow-size;
67 </para>
68 </listitem>
69 <listitem>
70 <para>
71 Estimated disk space required: &shadow-buildsize;
72 </para>
73 </listitem>
74 <listitem>
75 <para>
76 Estimated build time: &shadow-time;
77 </para>
78 </listitem>
79 </itemizedlist>
80
81 <bridgehead renderas="sect3">Additional Downloads</bridgehead>
82 <itemizedlist spacing='compact'>
83 <listitem>
84 <para>
85 Required patch: <ulink
86 url="http://www.&lfs-domainname;/patches/lfs/development/shadow-&shadow-version;-nscd-1.patch"/>
87 </para>
88 </listitem>
89 </itemizedlist>
90
91 <bridgehead renderas="sect3">Shadow Dependencies</bridgehead>
92
93 <bridgehead renderas="sect4">Required</bridgehead>
94 <para role="required">
95 <xref linkend="linux-pam"/> or
96 <xref linkend="cracklib"/>
97 </para>
98
99 <para condition="html" role="usernotes">
100 User Notes: <ulink url="&blfs-wiki;/shadow"/>
101 </para>
102 </sect2>
103
104 <sect2 role="installation">
105 <title>Installation of Shadow</title>
106
107 <important>
108 <para>
109 The installation commands shown below are for installations where
110 <application>Linux-PAM</application> has been installed (with or
111 without a <application>CrackLib</application> installation) and
112 <application>Shadow</application> is being reinstalled to support the
113 <application>Linux-PAM</application> installation.
114 </para>
115
116 <para>
117 If you are reinstalling <application>Shadow</application> to provide
118 strong password support using the <application>CrackLib</application>
119 library without using <application>Linux-PAM</application>, ensure you
120 add the <parameter>--with-libcrack</parameter> parameter to the
121 <command>configure</command> script below and also issue the following
122 command:
123 </para>
124
125<screen><userinput>sed -i 's@DICTPATH.*@DICTPATH\t/lib/cracklib/pw_dict@' etc/login.defs</userinput></screen>
126 </important>
127
128 <para>
129 Reinstall <application>Shadow</application> by running the following
130 commands:
131 </para>
132
133<screen><userinput>sed -i 's/groups$(EXEEXT) //' src/Makefile.in &amp;&amp;
134find man -name Makefile.in -exec sed -i 's/groups\.1 / /' {} \; &amp;&amp;
135sed -i -e 's/ ko//' -e 's/ zh_CN zh_TW//' man/Makefile.in &amp;&amp;
136sed -i '/&lt;stdio.h&gt;/a#include &lt;stdarg.h&gt;' libmisc/copydir.c &amp;&amp;
137
138sed -i -e 's@#ENCRYPT_METHOD DES@ENCRYPT_METHOD SHA512@' \
139 -e 's@/var/spool/mail@/var/mail@' etc/login.defs &amp;&amp;
140
141sed -i -e 's@PATH=/sbin:/bin:/usr/sbin:/usr/bin@&amp;:/usr/local/sbin:/usr/local/bin@' \
142 -e 's@PATH=/bin:/usr/bin@&amp;:/usr/local/bin@' etc/login.defs &amp;&amp;
143
144patch -Np1 -i ../shadow-&shadow-version;-nscd-1.patch &amp;&amp;
145
146./configure --prefix=/usr --sysconfdir=/etc &amp;&amp;
147make</userinput></screen>
148
149 <para>
150 This package does not come with a test suite.
151 </para>
152
153 <para>
154 Now, as the <systemitem class="username">root</systemitem> user:
155 </para>
156
157<screen role="root"><userinput>make install &amp;&amp;
158mv -v /usr/bin/passwd /bin</userinput></screen>
159 </sect2>
160
161 <sect2 role="commands">
162 <title>Command Explanations</title>
163
164 <para>
165 <command>sed -i 's/groups$(EXEEXT) //' src/Makefile.in</command>: This sed
166 is used to suppress the installation of the <command>groups</command>
167 program as the version from the <application>Coreutils</application>
168 package installed during LFS is preferred.
169 </para>
170
171 <para>
172 <command>find man -name Makefile.in -exec ... {} \;</command>: This
173 command is used to suppress the installation of the
174 <command>groups</command> man pages so the existing ones installed from
175 the <application>Coreutils</application> package are not replaced.
176 </para>
177
178 <para>
179 <command>sed -i -e '...' -e '...' man/Makefile.in</command>: This command
180 disables the installation of Chinese and Korean manual pages, since
181 <application>Man-DB</application> cannot format them properly.
182 </para>
183
184 <para>
185 <command>sed -i -e 's@#ENCRYPT_METHOD DES@ENCRYPT_METHOD SHA512@' -e
186 's@/var/spool/mail@/var/mail@' etc/login.defs</command>: Instead of using
187 the default 'DES' method, this command modifies the installation to use
188 the more secure 'SHA512' method of hashing passwords, which also allows
189 passwords longer than eight characters. It also changes the obsolete
190 <filename class="directory">/var/spool/mail</filename> location for user
191 mailboxes that <application>Shadow</application> uses by default to the
192 <filename class="directory">/var/mail</filename> location.
193 </para>
194
195 <para>
196 <command>sed -i -e
197 's@PATH=/sbin:/bin:/usr/sbin:/usr/bin@&amp;:/usr/local/sbin:/usr/local/bin@'
198 -e 's@PATH=/bin:/usr/bin@&amp;:/usr/local/bin@' etc/login.defs</command>:
199 This sed expands PATH to
200 <filename class="directory">/usr/local/bin</filename> for normal and
201 <systemitem class="username">root</systemitem> user and to
202 <filename class="directory">/usr/local/sbin</filename> for
203 <systemitem class="username">root</systemitem> user only.
204 </para>
205
206 <para>
207 <command>sed -i '/&lt;stdio.h&gt;/a#include &lt;stdarg.h&gt;'
208 libmisc/copydir.c</command>: This sed fixes a bug which would make the
209 build fail if <xref linkend="acl"/> is installed.
210 </para>
211
212 <para>
213 <command>mv -v /usr/bin/passwd /bin</command>: The
214 <command>passwd</command> program may be needed during times when the
215 <filename class='directory'>/usr</filename> filesystem is not mounted so
216 it is moved into the root partition.
217 </para>
218 </sect2>
219
220 <sect2 role="configuration">
221 <title>Configuring Shadow</title>
222
223 <para>
224 <application>Shadow</application>'s stock configuration for the
225 <command>useradd</command> utility may not be desirable for your
226 installation. One default parameter causes <command>useradd</command> to
227 create a mailbox file for any newly created user.
228 <command>useradd</command> will make the group ownership of this file to
229 the <systemitem class="groupname">mail</systemitem> group with 0660
230 permissions. If you would prefer that these mailbox files are not created
231 by <command>useradd</command>, issue the following command as the
232 <systemitem class="username">root</systemitem> user:
233 </para>
234
235<screen role="root"><userinput>sed -i 's/yes/no/' /etc/default/useradd</userinput></screen>
236 </sect2>
237
238 <sect2 role="configuration">
239 <title>Configuring Linux-PAM to Work with Shadow</title>
240
241 <note>
242 <para>
243 The rest of this page is devoted to configuring
244 <application>Shadow</application> to work properly with
245 <application>Linux-PAM</application>. If you do not have
246 <application>Linux-PAM</application> installed, and you reinstalled
247 <application>Shadow</application> to support strong passwords via the
248 <application>CrackLib</application> library, no further configuration is
249 required.
250 </para>
251 </note>
252
253 <sect3 id="pam.d">
254 <title>Config Files</title>
255
256 <para>
257 <filename>/etc/pam.d/*</filename> or alternatively
258 <filename>/etc/pam.conf</filename>,
259 <filename>/etc/login.defs</filename> and
260 <filename>/etc/security/*</filename>
261 </para>
262
263 <indexterm zone="shadow pam.d">
264 <primary sortas="e-etc-pam.d">/etc/pam.d/*</primary>
265 </indexterm>
266
267 <indexterm zone="shadow pam.d">
268 <primary sortas="e-etc-pam.conf">/etc/pam.conf</primary>
269 </indexterm>
270
271 <indexterm zone="shadow pam.d">
272 <primary sortas="e-etc-login.defs">/etc/login.defs</primary>
273 </indexterm>
274
275 <indexterm zone="shadow pam.d">
276 <primary sortas="e-etc-security">/etc/security/*</primary>
277 </indexterm>
278 </sect3>
279
280 <sect3>
281 <title>Configuration Information</title>
282
283 <para>
284 Configuring your system to use <application>Linux-PAM</application> can
285 be a complex task. The information below will provide a basic setup so
286 that <application>Shadow</application>'s login and password
287 functionality will work effectively with
288 <application>Linux-PAM</application>. Review the information and links
289 on the <xref linkend="linux-pam"/> page for further configuration
290 information. For information specific to integrating
291 <application>Shadow</application>, <application>Linux-PAM</application>
292 and <application>CrackLib</application>, you can visit the following
293 link:
294 </para>
295
296 <itemizedlist spacing="compact">
297 <listitem>
298 <para>
299 <ulink url="http://www.deer-run.com/~hal/sysadmin/pam_cracklib.html"/>
300 </para>
301 </listitem>
302 </itemizedlist>
303
304 <sect4 id="pam-login-defs">
305 <title>Configuring /etc/login.defs</title>
306
307 <para>
308 The <command>login</command> program currently performs many functions
309 which <application>Linux-PAM</application> modules should now handle.
310 The following <command>sed</command> command will comment out the
311 appropriate lines in <filename>/etc/login.defs</filename>, and stop
312 <command>login</command> from performing these functions (a backup
313 file named <filename>/etc/login.defs.orig</filename> is also created
314 to preserve the original file's contents). Issue the following
315 commands as the <systemitem class="username">root</systemitem> user:
316 </para>
317
318 <indexterm zone="shadow pam-login-defs">
319 <primary sortas="e-etc-login.defs">/etc/login.defs</primary>
320 </indexterm>
321
322<screen role="root"><userinput>install -v -m644 /etc/login.defs /etc/login.defs.orig &amp;&amp;
323for FUNCTION in FAIL_DELAY LASTLOG_ENAB \
324 MAIL_CHECK_ENAB \
325 OBSCURE_CHECKS_ENAB \
326 PORTTIME_CHECKS_ENAB \
327 CONSOLE MOTD_FILE \
328 NOLOGINS_FILE ENV_HZ \
329 SU_WHEEL_ONLY \
330 CRACKLIB_DICTPATH \
331 SYS_UID_MIN SYS_UID_MAX \
332 SYS_GID_MIN SYS_GID_MAX \
333 PASS_CHANGE_TRIES \
334 PASS_ALWAYS_WARN \
335 CHFN_AUTH ENVIRON_FILE
336do
337 sed -i "s/^${FUNCTION}/# &amp;/" /etc/login.defs
338done</userinput></screen>
339 </sect4>
340
341 <sect4>
342 <title>Configuring the /etc/pam.d/ Files</title>
343
344 <para>
345 As mentioned previously in the <application>Linux-PAM</application>
346 instructions, <application>Linux-PAM</application> has two supported
347 methods for configuration. The commands below assume that you've
348 chosen to use a directory based configuration, where each program has
349 its own configuration file. You can optionally use a single
350 <filename>/etc/pam.conf</filename> configuration file by using the
351 text from the files below, and supplying the program name as an
352 additional first field for each line.
353 </para>
354
355 <para>
356 As the <systemitem class="username">root</systemitem> user, replace
357 the following <application>Linux-PAM</application> configuration files
358 in the <filename class="directory">/etc/pam.d/</filename> directory
359 (or add the contents to the <filename>/etc/pam.conf</filename> file)
360 using the following commands:
361 </para>
362 </sect4>
363
364 <sect4>
365 <title>'system-account'</title>
366
367<screen role="root"><userinput>cat &gt; /etc/pam.d/system-account &lt;&lt; "EOF"
368<literal># Begin /etc/pam.d/system-account
369
370account required pam_unix.so
371
372# End /etc/pam.d/system-account</literal>
373EOF</userinput></screen>
374 </sect4>
375
376 <sect4>
377 <title>'system-auth'</title>
378
379<screen role="root"><userinput>cat &gt; /etc/pam.d/system-auth &lt;&lt; "EOF"
380<literal># Begin /etc/pam.d/system-auth
381
382auth required pam_unix.so
383
384# End /etc/pam.d/system-auth</literal>
385EOF</userinput></screen>
386 </sect4>
387
388 <sect4>
389 <title>'system-passwd' (with cracklib)</title>
390
391<screen role="root"><userinput>cat &gt; /etc/pam.d/system-password &lt;&lt; "EOF"
392<literal># Begin /etc/pam.d/system-password
393
394# check new passwords for strength (man pam_cracklib)
395password required pam_cracklib.so type=Linux retry=3 difok=5 \
396 difignore=23 minlen=9 dcredit=1 \
397 ucredit=1 lcredit=1 ocredit=1 \
398 dictpath=/lib/cracklib/pw_dict
399# use sha512 hash for encryption, use shadow, and use the
400# authentication token (chosen password) set by pam_cracklib
401# above (or any previous modules)
402password required pam_unix.so sha512 shadow use_authtok
403
404# End /etc/pam.d/system-password</literal>
405EOF</userinput></screen>
406
407 <note>
408 <para>
409 In its default configuration, owing to credits, pam_cracklib will
410 allow multiple case passwords as short as 6 characters, even with
411 the <parameter>minlen</parameter> value set to 11. You should review
412 the pam_cracklib(8) man page and determine if these default values
413 are acceptable for the security of your system.
414 </para>
415 </note>
416 </sect4>
417
418 <sect4>
419 <title>'system-passwd' (without cracklib)</title>
420
421<screen role="root"><userinput>cat &gt; /etc/pam.d/system-password &lt;&lt; "EOF"
422<literal># Begin /etc/pam.d/system-password
423
424# use sha512 hash for encryption, use shadow, and try to use any previously
425# defined authentication token (chosen password) set by any prior module
426password required pam_unix.so sha512 shadow try_first_pass
427
428# End /etc/pam.d/system-password</literal>
429EOF</userinput></screen>
430 </sect4>
431
432 <sect4>
433 <title>'system-session'</title>
434
435<screen role="root"><userinput>cat &gt; /etc/pam.d/system-session &lt;&lt; "EOF"
436<literal># Begin /etc/pam.d/system-session
437
438session required pam_unix.so
439
440# End /etc/pam.d/system-session</literal>
441EOF</userinput></screen>
442 </sect4>
443
444 <sect4>
445 <title>'login'</title>
446
447<screen role="root"><userinput>cat &gt; /etc/pam.d/login &lt;&lt; "EOF"
448<literal># Begin /etc/pam.d/login
449
450# Set failure delay before next prompt to 3 seconds
451auth optional pam_faildelay.so delay=3000000
452
453# Check to make sure that the user is allowed to login
454auth requisite pam_nologin.so
455
456# Check to make sure that root is allowed to login
457# Disabled by default. You will need to create /etc/securetty
458# file for this module to function. See man 5 securetty.
459#auth required pam_securetty.so
460
461# Additional group memberships - disabled by default
462#auth optional pam_group.so
463
464# include the default auth settings
465auth include system-auth
466
467# check access for the user
468account required pam_access.so
469
470# include the default account settings
471account include system-account
472
473# Set default environment variables for the user
474session required pam_env.so
475
476# Set resource limits for the user
477session required pam_limits.so
478
479# Display date of last login - Disabled by default
480#session optional pam_lastlog.so
481
482# Display the message of the day - Disabled by default
483#session optional pam_motd.so
484
485# Check user's mail - Disabled by default
486#session optional pam_mail.so standard quiet
487
488# include the default session and password settings
489session include system-session
490password include system-password
491
492# End /etc/pam.d/login</literal>
493EOF</userinput></screen>
494 </sect4>
495
496 <sect4>
497 <title>'passwd'</title>
498
499<screen role="root"><userinput>cat &gt; /etc/pam.d/passwd &lt;&lt; "EOF"
500<literal># Begin /etc/pam.d/passwd
501
502password include system-password
503
504# End /etc/pam.d/passwd</literal>
505EOF</userinput></screen>
506 </sect4>
507
508 <sect4>
509 <title>'su'</title>
510
511<screen role="root"><userinput>cat &gt; /etc/pam.d/su &lt;&lt; "EOF"
512<literal># Begin /etc/pam.d/su
513
514# always allow root
515auth sufficient pam_rootok.so
516auth include system-auth
517
518# include the default account settings
519account include system-account
520
521# Set default environment variables for the service user
522session required pam_env.so
523
524# include system session defaults
525session include system-session
526
527# End /etc/pam.d/su</literal>
528EOF</userinput></screen>
529 </sect4>
530
531 <sect4>
532 <title>'chage'</title>
533
534<screen role="root"><userinput>cat &gt; /etc/pam.d/chage &lt;&lt; "EOF"
535<literal>#Begin /etc/pam.d/chage
536
537# always allow root
538auth sufficient pam_rootok.so
539
540# include system defaults for auth account and session
541auth include system-auth
542account include system-account
543session include system-session
544
545# Always permit for authentication updates
546password required pam_permit.so
547
548# End /etc/pam.d/chage</literal>
549EOF</userinput></screen>
550 </sect4>
551
552 <sect4>
553 <title>'chfn', 'chgpasswd', 'chgpasswd', 'chsh', 'groupadd', 'groupdel',
554 'groupmems', 'groupmod', 'newusers', 'useradd', 'userdel' and
555 'usermod'</title>
556
557<screen role="root"><userinput>for PROGRAM in chfn chgpasswd chpasswd chsh groupadd groupdel \
558 groupmems groupmod newusers useradd userdel usermod
559do
560 install -v -m644 /etc/pam.d/chage /etc/pam.d/${PROGRAM}
561 sed -i "s/chage/$PROGRAM/" /etc/pam.d/${PROGRAM}
562done</userinput></screen>
563
564 <warning>
565 <para>
566 At this point, you should do a simple test to see if
567 <application>Shadow</application> is working as expected. Open
568 another terminal and log in as a user, then <command>su</command> to
569 <systemitem class="username">root</systemitem>. If you do not see
570 any errors, then all is well and you should proceed with the rest of
571 the configuration. If you did receive errors, stop now and double
572 check the above configuration files manually. You can also run the
573 test suite from the <application>Linux-PAM</application> package to
574 assist you in determining the problem. If you cannot find and fix
575 the error, you should recompile <application>Shadow</application>
576 adding the <option>--without-libpam</option> switch to the
577 <command>configure</command> command in the above instructions (also
578 move the <filename>/etc/login.defs.orig</filename> backup file to
579 <filename>/etc/login.defs</filename>). If you fail to do this and
580 the errors remain, you will be unable to log into your system.
581 </para>
582 </warning>
583 </sect4>
584
585 <sect4>
586 <title>Other</title>
587
588 <para>
589 Currently, <filename>/etc/pam.d/other</filename> is configured to
590 allow anyone with an account on the machine to use PAM-aware programs
591 without a configuration file for that program. After testing
592 <application>Linux-PAM</application> for proper configuration, install
593 a more restrictive <filename>other</filename> file so that
594 program-specific configuration files are required:
595 </para>
596
597<screen role="root"><userinput>cat &gt; /etc/pam.d/other &lt;&lt; "EOF"
598<literal># Begin /etc/pam.d/other
599
600auth required pam_warn.so
601auth required pam_deny.so
602account required pam_warn.so
603account required pam_deny.so
604password required pam_warn.so
605password required pam_deny.so
606session required pam_warn.so
607session required pam_deny.so
608
609# End /etc/pam.d/other</literal>
610EOF</userinput></screen>
611 </sect4>
612
613 <sect4 id="pam-access">
614 <title>Configuring Login Access</title>
615
616 <para>
617 Instead of using the <filename>/etc/login.access</filename> file for
618 controlling access to the system, <application>Linux-PAM</application>
619 uses the <filename class='libraryfile'>pam_access.so</filename> module
620 along with the <filename>/etc/security/access.conf</filename> file.
621 Rename the <filename>/etc/login.access</filename> file using the
622 following command:
623 </para>
624
625 <indexterm zone="shadow pam-access">
626 <primary sortas="e-etc-security-access.conf">/etc/security/access.conf</primary>
627 </indexterm>
628
629<screen role="root"><userinput>[ -f /etc/login.access ] &amp;&amp; mv -v /etc/login.access{,.NOUSE}</userinput></screen>
630 </sect4>
631
632 <sect4 id="pam-limits">
633 <title>Configuring Resource Limits</title>
634
635 <para>
636 Instead of using the <filename>/etc/limits</filename> file for
637 limiting usage of system resources,
638 <application>Linux-PAM</application> uses the
639 <filename class='libraryfile'>pam_limits.so</filename> module along
640 with the <filename>/etc/security/limits.conf</filename> file. Rename
641 the <filename>/etc/limits</filename> file using the following command:
642 </para>
643
644 <indexterm zone="shadow pam-limits">
645 <primary sortas="e-etc-security-limits.conf">/etc/security/limits.conf</primary>
646 </indexterm>
647
648<screen role="root"><userinput>[ -f /etc/limits ] &amp;&amp; mv -v /etc/limits{,.NOUSE}</userinput></screen>
649 </sect4>
650 </sect3>
651 </sect2>
652
653 <sect2 role="content">
654 <title>Contents</title>
655
656 <para>
657 A list of the installed files, along with their short descriptions can be
658 found at <ulink url="&lfs-root;/chapter06/shadow.html#contents-shadow"/>.
659 </para>
660 </sect2>
661</sect1>
Note: See TracBrowser for help on using the repository browser.