source: postlfs/security/shadow.xml@ 2314cd7

12.0 12.1 ken/TL2024 ken/tuningfonts lazarus plabs/newcss python3.11 rahul/power-profiles-daemon renodr/vulkan-addition trunk xry111/llvm18
Last change on this file since 2314cd7 was 2314cd7, checked in by Thomas Trepl <thomas@…>, 9 months ago

Some tags

  • Property mode set to 100644
File size: 21.5 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 "https://github.com/shadow-maint/shadow/releases/download/&shadow-version;/shadow-&shadow-version;.tar.xz">
8 <!ENTITY shadow-download-ftp " ">
9 <!ENTITY shadow-md5sum "b1ab01b5462ddcf43588374d57bec123">
10 <!ENTITY shadow-size "1.7 MB">
11 <!ENTITY shadow-buildsize "45 MB">
12 <!ENTITY shadow-time "0.2 SBU">
13]>
14
15<sect1 id="shadow" xreflabel="Shadow-&shadow-version;">
16 <?dbhtml filename="shadow.html"?>
17
18
19 <title>Shadow-&shadow-version;</title>
20
21 <indexterm zone="shadow">
22 <primary sortas="a-Shadow">Shadow</primary>
23 </indexterm>
24
25 <sect2 role="package">
26 <title>Introduction to Shadow</title>
27
28 <para>
29 <application>Shadow</application> was indeed installed in LFS and there is
30 no reason to reinstall it unless you installed
31 <application>CrackLib</application> or
32 <application>Linux-PAM</application> after your LFS system was completed.
33 If you have installed <application>CrackLib</application> after LFS, then
34 reinstalling <application>Shadow</application> will enable strong password
35 support. If you have installed <application>Linux-PAM</application>,
36 reinstalling <application>Shadow</application> will allow programs such as
37 <command>login</command> and <command>su</command> to utilize PAM.
38 </para>
39
40 &lfs120_checked;
41
42 <bridgehead renderas="sect3">Package Information</bridgehead>
43 <itemizedlist spacing="compact">
44 <listitem>
45 <para>
46 Download (HTTP): <ulink url="&shadow-download-http;"/>
47 </para>
48 </listitem>
49 <listitem>
50 <para>
51 Download (FTP): <ulink url="&shadow-download-ftp;"/>
52 </para>
53 </listitem>
54 <listitem>
55 <para>
56 Download MD5 sum: &shadow-md5sum;
57 </para>
58 </listitem>
59 <listitem>
60 <para>
61 Download size: &shadow-size;
62 </para>
63 </listitem>
64 <listitem>
65 <para>
66 Estimated disk space required: &shadow-buildsize;
67 </para>
68 </listitem>
69 <listitem>
70 <para>
71 Estimated build time: &shadow-time;
72 </para>
73 </listitem>
74 </itemizedlist>
75<!--
76 <bridgehead renderas="sect3">Additional Downloads</bridgehead>
77 <itemizedlist spacing="compact">
78 <listitem>
79 <para>
80 Required patch:
81 <ulink url="&patch-root;/shadow-&shadow-version;-useradd_segfault-1.patch"/>
82 </para>
83 </listitem>
84 </itemizedlist>
85-->
86 <bridgehead renderas="sect3">Shadow Dependencies</bridgehead>
87
88 <bridgehead renderas="sect4">Required</bridgehead>
89 <para role="required">
90 <xref linkend="linux-pam"/> or
91 <xref role="nodep" linkend="cracklib"/>
92 </para>
93
94 </sect2>
95
96 <sect2 role="installation">
97 <title>Installation of Shadow</title>
98
99 <important>
100 <para>
101 The installation commands shown below are for installations where
102 <application>Linux-PAM</application> has been installed and
103 <application>Shadow</application> is being reinstalled to support the
104 <application>Linux-PAM</application> installation.
105 </para>
106
107 <para>
108 If you are reinstalling <application>Shadow</application> to provide
109 strong password support using the <application>CrackLib</application>
110 library without using <application>Linux-PAM</application>, ensure you
111 add the <parameter>--with-libcrack</parameter> parameter to the
112 <command>configure</command> script below and also issue the following
113 command:
114 </para>
115
116<screen role="nodump"><userinput>sed -i 's@DICTPATH.*@DICTPATH\t/lib/cracklib/pw_dict@' etc/login.defs</userinput></screen>
117 </important>
118
119 <para>
120 Reinstall <application>Shadow</application> by running the following
121 commands:
122 </para>
123<!--
124<screen><userinput>patch -Np1 -i ../shadow-4.10-useradd_segfault-1.patch &amp;&amp;
125
126sed -i "224s/rounds/min_rounds/" libmisc/salt.c &amp;&amp;
127-->
128<screen><userinput>sed -i 's/groups$(EXEEXT) //' src/Makefile.in &amp;&amp;
129
130find man -name Makefile.in -exec sed -i 's/groups\.1 / /' {} \; &amp;&amp;
131find man -name Makefile.in -exec sed -i 's/getspnam\.3 / /' {} \; &amp;&amp;
132find man -name Makefile.in -exec sed -i 's/passwd\.5 / /' {} \; &amp;&amp;
133
134sed -e 's@#ENCRYPT_METHOD DES@ENCRYPT_METHOD YESCRYPT@' \
135 -e 's@/var/spool/mail@/var/mail@' \
136 -e '/PATH=/{s@/sbin:@@;s@/bin:@@}' \
137 -i etc/login.defs &amp;&amp;
138
139./configure --sysconfdir=/etc \
140 --disable-static \
141 --with-{b,yes}crypt \
142 --with-group-name-max-length=32 &amp;&amp;
143make</userinput></screen>
144
145 <para>
146 This package does not come with a test suite.
147 </para>
148
149 <para>
150 Now, as the <systemitem class="username">root</systemitem> user:
151 </para>
152
153<screen role="root"><userinput>make exec_prefix=/usr install</userinput></screen>
154
155 <para>
156 The man pages were installed in LFS, but if reinstallation is
157 desired, run (as the <systemitem class="username">root</systemitem> user):
158 </para>
159
160<screen role="root"><userinput>make -C man install-man</userinput></screen>
161
162 </sect2>
163
164 <sect2 role="commands">
165 <title>Command Explanations</title>
166
167 <para>
168 <command>sed -i 's/groups$(EXEEXT) //' src/Makefile.in</command>: This sed
169 is used to suppress the installation of the <command>groups</command>
170 program as the version from the <application>Coreutils</application>
171 package installed during LFS is preferred.
172 </para>
173
174 <para>
175 <command>find man -name Makefile.in -exec ... {} \;</command>: The
176 first command is used to suppress the installation of the
177 <command>groups</command> man pages so the existing ones installed from
178 the <application>Coreutils</application> package are not replaced.
179 The two other commands prevent installation of manual pages that
180 are already installed by <application>Man-pages</application> in LFS.
181 </para>
182
183 <para>
184 <command>sed -e 's@#ENCRYPT_METHOD DES@ENCRYPT_METHOD YESCRYPT@' -e
185 's@/var/spool/mail@/var/mail@' -e '/PATH=/{s@/sbin:@@;s@/bin:@@}'
186 -i etc/login.defs</command>: Instead of using the default 'DES'
187 method, this command modifies the installation to use the much more
188 secure 'YESCRYPT' method of hashing passwords, which also allows
189 passwords longer than eight characters. The command also changes the
190 obsolete <filename class="directory">/var/spool/mail</filename> location
191 for user mailboxes that <application>Shadow</application> uses by
192 default to the <filename class="directory">/var/mail</filename>
193 location. It also changes the default path to be consistent with that
194 set in LFS.
195 </para>
196<!--
197 <para>
198 <command>sed ... libmisc/salt.c</command> and
199 <command>sed ... libsubid/Makefile.am</command>: Fix a couple of errors
200 that were found after the package was released.
201 </para>
202-->
203 <para>
204 <parameter>--with-group-name-max-length=32</parameter>: The maximum
205 user name is 32 characters. Make the maximum group name the same.
206 </para>
207<!--
208 <para>
209 <parameter>-\-without-su</parameter>: Don't reinstall
210 <command>su</command> because upstream recommends using the
211 <command>su</command> command from <xref linkend='util-linux'/>
212 when <application>Linux-PAM</application> is available.
213 </para>
214-->
215 </sect2>
216
217<!-- Now, /etc/default/useradd is not reinstalled anymore, and this
218 configuration has been done in lfs
219 <sect2 role="configuration">
220 <title>Configuring Shadow</title>
221
222 <para>
223 <application>Shadow</application>'s stock configuration for the
224 <command>useradd</command> utility may not be desirable for your
225 installation. One default parameter causes <command>useradd</command> to
226 create a mailbox file for any newly created user.
227 <command>useradd</command> will make the group ownership of this file to
228 the <systemitem class="groupname">mail</systemitem> group with 0660
229 permissions. If you would prefer that these mailbox files are not created
230 by <command>useradd</command>, issue the following command as the
231 <systemitem class="username">root</systemitem> user:
232 </para>
233
234<screen role="root"><userinput>sed -i 's/yes/no/' /etc/default/useradd</userinput></screen>
235 </sect2>
236-->
237 <sect2 role="configuration">
238 <title>Configuring Linux-PAM to Work with Shadow</title>
239
240 <note>
241 <para>
242 The rest of this page is devoted to configuring
243 <application>Shadow</application> to work properly with
244 <application>Linux-PAM</application>. If you do not have
245 <application>Linux-PAM</application> installed, and you reinstalled
246 <application>Shadow</application> to support strong passwords via the
247 <application>CrackLib</application> library, no further configuration is
248 required.
249 </para>
250 </note>
251
252 <sect3 id="pam.d">
253 <title>Config Files</title>
254
255 <para>
256 <filename>/etc/pam.d/*</filename> or alternatively
257 <filename>/etc/pam.conf</filename>,
258 <filename>/etc/login.defs</filename> and
259 <filename>/etc/security/*</filename>
260 </para>
261
262 <indexterm zone="shadow pam.d">
263 <primary sortas="e-etc-pam.d">/etc/pam.d/*</primary>
264 </indexterm>
265
266 <indexterm zone="shadow pam.d">
267 <primary sortas="e-etc-pam.conf">/etc/pam.conf</primary>
268 </indexterm>
269
270 <indexterm zone="shadow pam.d">
271 <primary sortas="e-etc-login.defs">/etc/login.defs</primary>
272 </indexterm>
273
274 <indexterm zone="shadow pam.d">
275 <primary sortas="e-etc-security">/etc/security/*</primary>
276 </indexterm>
277 </sect3>
278
279 <sect3>
280 <title>Configuration Information</title>
281
282 <para>
283 Configuring your system to use <application>Linux-PAM</application> can
284 be a complex task. The information below will provide a basic setup so
285 that <application>Shadow</application>'s login and password
286 functionality will work effectively with
287 <application>Linux-PAM</application>. Review the information and links
288 on the <xref linkend="linux-pam"/> page for further configuration
289 information. For information specific to integrating
290 <application>Shadow</application>, <application>Linux-PAM</application>
291 and <application>libpwquality</application>, you can visit the
292 following link:
293 </para>
294
295 <itemizedlist spacing="compact">
296 <listitem>
297 <!-- Old URL redirects to here. -->
298 <para>
299 <ulink url="https://deer-run.com/users/hal/linux_passwords_pam.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 \
324 FAILLOG_ENAB \
325 LASTLOG_ENAB \
326 MAIL_CHECK_ENAB \
327 OBSCURE_CHECKS_ENAB \
328 PORTTIME_CHECKS_ENAB \
329 QUOTAS_ENAB \
330 CONSOLE MOTD_FILE \
331 FTMP_FILE NOLOGINS_FILE \
332 ENV_HZ PASS_MIN_LEN \
333 SU_WHEEL_ONLY \
334 CRACKLIB_DICTPATH \
335 PASS_CHANGE_TRIES \
336 PASS_ALWAYS_WARN \
337 CHFN_AUTH ENCRYPT_METHOD \
338 ENVIRON_FILE
339do
340 sed -i "s/^${FUNCTION}/# &amp;/" /etc/login.defs
341done</userinput></screen>
342 </sect4>
343
344 <sect4>
345 <title>Configuring the /etc/pam.d/ Files</title>
346
347 <para>
348 As mentioned previously in the <application>Linux-PAM</application>
349 instructions, <application>Linux-PAM</application> has two supported
350 methods for configuration. The commands below assume that you've
351 chosen to use a directory based configuration, where each program has
352 its own configuration file. You can optionally use a single
353 <filename>/etc/pam.conf</filename> configuration file by using the
354 text from the files below, and supplying the program name as an
355 additional first field for each line.
356 </para>
357
358 <para>
359 As the <systemitem class="username">root</systemitem> user, create
360 the following <application>Linux-PAM</application> configuration files
361 in the <filename class="directory">/etc/pam.d/</filename> directory
362 (or add the contents to the <filename>/etc/pam.conf</filename> file)
363 using the following commands:
364 </para>
365 </sect4>
366
367 <sect4>
368 <title>'login'</title>
369
370<screen role="root"><userinput>cat &gt; /etc/pam.d/login &lt;&lt; "EOF"
371<literal># Begin /etc/pam.d/login
372
373# Set failure delay before next prompt to 3 seconds
374auth optional pam_faildelay.so delay=3000000
375
376# Check to make sure that the user is allowed to login
377auth requisite pam_nologin.so
378
379# Check to make sure that root is allowed to login
380# Disabled by default. You will need to create /etc/securetty
381# file for this module to function. See man 5 securetty.
382#auth required pam_securetty.so
383
384# Additional group memberships - disabled by default
385#auth optional pam_group.so
386
387# include system auth settings
388auth include system-auth
389
390# check access for the user
391account required pam_access.so
392
393# include system account settings
394account include system-account
395
396# Set default environment variables for the user
397session required pam_env.so
398
399# Set resource limits for the user
400session required pam_limits.so
401
402# Display date of last login - Disabled by default
403#session optional pam_lastlog.so
404
405# Display the message of the day - Disabled by default
406#session optional pam_motd.so
407
408# Check user's mail - Disabled by default
409#session optional pam_mail.so standard quiet
410
411# include system session and password settings
412session include system-session
413password include system-password
414
415# End /etc/pam.d/login</literal>
416EOF</userinput></screen>
417 </sect4>
418
419 <sect4>
420 <title>'passwd'</title>
421
422<screen role="root"><userinput>cat &gt; /etc/pam.d/passwd &lt;&lt; "EOF"
423<literal># Begin /etc/pam.d/passwd
424
425password include system-password
426
427# End /etc/pam.d/passwd</literal>
428EOF</userinput></screen>
429 </sect4>
430
431 <sect4>
432 <title>'su'</title>
433
434<screen role="root"><userinput>cat &gt; /etc/pam.d/su &lt;&lt; "EOF"
435<literal># Begin /etc/pam.d/su
436
437# always allow root
438auth sufficient pam_rootok.so
439
440# Allow users in the wheel group to execute su without a password
441# disabled by default
442#auth sufficient pam_wheel.so trust use_uid
443
444# include system auth settings
445auth include system-auth
446
447# limit su to users in the wheel group
448# disabled by default
449#auth required pam_wheel.so use_uid
450
451# include system account settings
452account include system-account
453
454# Set default environment variables for the service user
455session required pam_env.so
456
457# include system session settings
458session include system-session
459
460# End /etc/pam.d/su</literal>
461EOF</userinput></screen>
462 </sect4>
463
464 <sect4>
465 <title>'chpasswd' and 'newusers'</title>
466
467<screen role="root"><userinput>cat &gt; /etc/pam.d/chpasswd &lt;&lt; "EOF"
468<literal># Begin /etc/pam.d/chpasswd
469
470# always allow root
471auth sufficient pam_rootok.so
472
473# include system auth and account settings
474auth include system-auth
475account include system-account
476password include system-password
477
478# End /etc/pam.d/chpasswd</literal>
479EOF
480
481sed -e s/chpasswd/newusers/ /etc/pam.d/chpasswd >/etc/pam.d/newusers</userinput></screen>
482 </sect4>
483
484 <sect4>
485 <title>'chage'</title>
486
487<screen role="root"><userinput>cat &gt; /etc/pam.d/chage &lt;&lt; "EOF"
488<literal># Begin /etc/pam.d/chage
489
490# always allow root
491auth sufficient pam_rootok.so
492
493# include system auth and account settings
494auth include system-auth
495account include system-account
496
497# End /etc/pam.d/chage</literal>
498EOF</userinput></screen>
499 </sect4>
500
501 <sect4>
502 <title>Other shadow utilities</title>
503
504<screen role="root"><userinput>for PROGRAM in chfn chgpasswd chsh groupadd groupdel \
505 groupmems groupmod useradd userdel usermod
506do
507 install -v -m644 /etc/pam.d/chage /etc/pam.d/${PROGRAM}
508 sed -i "s/chage/$PROGRAM/" /etc/pam.d/${PROGRAM}
509done</userinput></screen>
510
511 <warning>
512 <para>
513 At this point, you should do a simple test to see if
514 <application>Shadow</application> is working as expected. Open
515 another terminal and log in as
516 <systemitem class="username">root</systemitem>, and then run
517 <command>login</command> and login as another user. If you do
518 not see any errors, then all is well and you should proceed with
519 the rest of the configuration. If you did receive errors, stop
520 now and double check the above configuration files manually.
521 Any error is the sign of an error in the above procedure.
522 You can also run the
523 test suite from the <application>Linux-PAM</application> package
524 to assist you in determining the problem. If you cannot find and
525 fix the error, you should recompile
526 <application>Shadow</application> adding the
527 <option>--without-libpam</option> switch to the
528 <command>configure</command> command in the above instructions
529 (also move the <filename>/etc/login.defs.orig</filename> backup
530 file to <filename>/etc/login.defs</filename>). If you fail to do
531 this and the errors remain, you will be unable to log into your
532 system.
533 </para>
534 </warning>
535 </sect4>
536
537 <sect4 id="pam-access">
538 <title>Configuring Login Access</title>
539
540 <para>
541 Instead of using the <filename>/etc/login.access</filename> file for
542 controlling access to the system, <application>Linux-PAM</application>
543 uses the <filename class='libraryfile'>pam_access.so</filename> module
544 along with the <filename>/etc/security/access.conf</filename> file.
545 Rename the <filename>/etc/login.access</filename> file using the
546 following command:
547 </para>
548
549 <indexterm zone="shadow pam-access">
550 <primary sortas="e-etc-security-access.conf">/etc/security/access.conf</primary>
551 </indexterm>
552<!-- to editors: it is a common belief that:
553 if <condition>; then <command>; fi
554 is equivalent to:
555 <condition> && <command>
556 This is not true in bash; try:
557 ([ 0 = 1 ] && echo not reachable); echo $? # echoes 1
558 vs
559 (if [ 0 = 1 ]; then echo not reachable; fi); echo $? # echoes 0
560 So in scripts that may call subshells (for example through sudo) and
561 that need error reporting, the outcome _is_ different. In all
562 cases, for bash, the "if" form should be preferred.-->
563<screen role="root"><userinput>if [ -f /etc/login.access ]; then mv -v /etc/login.access{,.NOUSE}; fi</userinput></screen>
564 </sect4>
565
566 <sect4 id="pam-limits">
567 <title>Configuring Resource Limits</title>
568
569 <para>
570 Instead of using the <filename>/etc/limits</filename> file for
571 limiting usage of system resources,
572 <application>Linux-PAM</application> uses the
573 <filename class='libraryfile'>pam_limits.so</filename> module along
574 with the <filename>/etc/security/limits.conf</filename> file. Rename
575 the <filename>/etc/limits</filename> file using the following command:
576 </para>
577
578 <indexterm zone="shadow pam-limits">
579 <primary sortas="e-etc-security-limits.conf">/etc/security/limits.conf</primary>
580 </indexterm>
581
582<screen role="root"><userinput>if [ -f /etc/limits ]; then mv -v /etc/limits{,.NOUSE}; fi</userinput></screen>
583
584 <caution>
585 <para>
586 Be sure to test the login capabilities of the system before logging
587 out. Errors in the configuration can cause a permanent
588 lockout requiring a boot from an external source to correct the
589 problem.
590 </para>
591 </caution>
592
593 </sect4>
594 </sect3>
595
596 </sect2>
597
598 <sect2 role="content">
599 <title>Contents</title>
600
601 <para>
602 A list of the installed files, along with their short descriptions can be
603 found at
604 <ulink url="&lfs-root;/chapter08/shadow.html#contents-shadow"/>.
605 </para>
606
607 </sect2>
608
609</sect1>
Note: See TracBrowser for help on using the repository browser.