source: postlfs/security/shadow.xml@ bc7e5a7

11.1 11.2 11.3 12.0 12.1 kea ken/TL2024 ken/inkscape-core-mods ken/tuningfonts lazarus lxqt plabs/newcss plabs/python-mods python3.11 qt5new rahul/power-profiles-daemon renodr/vulkan-addition trunk xry111/intltool xry111/llvm18 xry111/soup3 xry111/test-20220226 xry111/xf86-video-removal
Last change on this file since bc7e5a7 was bc7e5a7, checked in by Pierre Labastie <pierre.labastie@…>, 2 years ago

Fix PAM config files of shadow apps

shadow applications chpasswd and newusers use the "password" type,
and expect to be able to pass the password to the PAM module. But
we use pam_permit.so, which does nothing except return PAM_SUCCESS.
So the applications themselves do nothing without returning an
error. Change the config files to include system-password.
Also clean up the config files so that only the types used by the
applications appear.
Fixes #15950

  • Property mode set to 100644
File size: 20.9 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/v&shadow-version;/shadow-&shadow-version;.tar.xz">
8 <!ENTITY shadow-download-ftp " ">
9 <!ENTITY shadow-md5sum "3a7936a9d0834243816fe0977c3b956e">
10 <!ENTITY shadow-size "1.6 MB">
11 <!ENTITY shadow-buildsize "38 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 <sect1info>
19 <date>$Date$</date>
20 </sect1info>
21
22 <title>Shadow-&shadow-version;</title>
23
24 <indexterm zone="shadow">
25 <primary sortas="a-Shadow">Shadow</primary>
26 </indexterm>
27
28 <sect2 role="package">
29 <title>Introduction to Shadow</title>
30
31 <para>
32 <application>Shadow</application> was indeed installed in LFS and there is
33 no reason to reinstall it unless you installed
34 <application>CrackLib</application> or
35 <application>Linux-PAM</application> after your LFS system was completed.
36 If you have installed <application>CrackLib</application> after LFS, then
37 reinstalling <application>Shadow</application> will enable strong password
38 support. If you have installed <application>Linux-PAM</application>,
39 reinstalling <application>Shadow</application> will allow programs such as
40 <command>login</command> and <command>su</command> to utilize PAM.
41 </para>
42
43 &lfs110a_checked;
44
45 <bridgehead renderas="sect3">Package Information</bridgehead>
46 <itemizedlist spacing="compact">
47 <listitem>
48 <para>
49 Download (HTTP): <ulink url="&shadow-download-http;"/>
50 </para>
51 </listitem>
52 <listitem>
53 <para>
54 Download (FTP): <ulink url="&shadow-download-ftp;"/>
55 </para>
56 </listitem>
57 <listitem>
58 <para>
59 Download MD5 sum: &shadow-md5sum;
60 </para>
61 </listitem>
62 <listitem>
63 <para>
64 Download size: &shadow-size;
65 </para>
66 </listitem>
67 <listitem>
68 <para>
69 Estimated disk space required: &shadow-buildsize;
70 </para>
71 </listitem>
72 <listitem>
73 <para>
74 Estimated build time: &shadow-time;
75 </para>
76 </listitem>
77 </itemizedlist>
78
79 <bridgehead renderas="sect3">Additional Downloads</bridgehead>
80 <itemizedlist spacing="compact">
81 <listitem>
82 <para>
83 Required patch:
84 <ulink url="&patch-root;/shadow-&shadow-version;-useradd_segfault-1.patch"/>
85 </para>
86 </listitem>
87 </itemizedlist>
88
89 <bridgehead renderas="sect3">Shadow Dependencies</bridgehead>
90
91 <bridgehead renderas="sect4">Required</bridgehead>
92 <para role="required">
93 <xref linkend="linux-pam"/> or
94 <xref role="nodep" linkend="cracklib"/>
95 </para>
96
97 <para condition="html" role="usernotes">
98 User Notes: <ulink url="&blfs-wiki;/shadow"/>
99 </para>
100 </sect2>
101
102 <sect2 role="installation">
103 <title>Installation of Shadow</title>
104
105 <important>
106 <para>
107 The installation commands shown below are for installations where
108 <application>Linux-PAM</application> has been installed and
109 <application>Shadow</application> is being reinstalled to support the
110 <application>Linux-PAM</application> installation.
111 </para>
112
113 <para>
114 If you are reinstalling <application>Shadow</application> to provide
115 strong password support using the <application>CrackLib</application>
116 library without using <application>Linux-PAM</application>, ensure you
117 add the <parameter>--with-libcrack</parameter> parameter to the
118 <command>configure</command> script below and also issue the following
119 command:
120 </para>
121
122<screen role="nodump"><userinput>sed -i 's@DICTPATH.*@DICTPATH\t/lib/cracklib/pw_dict@' etc/login.defs</userinput></screen>
123 </important>
124
125 <para>
126 Reinstall <application>Shadow</application> by running the following
127 commands:
128 </para>
129
130<screen><userinput>patch -Np1 -i ../shadow-4.10-useradd_segfault-1.patch &amp;&amp;
131
132sed -i "224s/rounds/min_rounds/" libmisc/salt.c &amp;&amp;
133sed -i 's/groups$(EXEEXT) //' src/Makefile.in &amp;&amp;
134
135find man -name Makefile.in -exec sed -i 's/groups\.1 / /' {} \; &amp;&amp;
136find man -name Makefile.in -exec sed -i 's/getspnam\.3 / /' {} \; &amp;&amp;
137find man -name Makefile.in -exec sed -i 's/passwd\.5 / /' {} \; &amp;&amp;
138
139sed -e 's@#ENCRYPT_METHOD DES@ENCRYPT_METHOD SHA512@' \
140 -e 's@/var/spool/mail@/var/mail@' \
141 -e '/PATH=/{s@/sbin:@@;s@/bin:@@}' \
142 -i etc/login.defs &amp;&amp;
143
144./configure --sysconfdir=/etc \
145 --with-group-name-max-length=32 &amp;&amp;
146make</userinput></screen>
147
148 <para>
149 This package does not come with a test suite.
150 </para>
151
152 <para>
153 Now, as the <systemitem class="username">root</systemitem> user:
154 </para>
155
156<screen role="root"><userinput>make exec_prefix=/usr install</userinput></screen>
157
158 <para>
159 The man pages were installed in LFS, but if reinstallation is
160 desired, run (as the <systemitem class="username">root</systemitem> user):
161 </para>
162
163<screen role="root"><userinput>make -C man install-man</userinput></screen>
164
165 </sect2>
166
167 <sect2 role="commands">
168 <title>Command Explanations</title>
169
170 <para>
171 <command>sed -i 's/groups$(EXEEXT) //' src/Makefile.in</command>: This sed
172 is used to suppress the installation of the <command>groups</command>
173 program as the version from the <application>Coreutils</application>
174 package installed during LFS is preferred.
175 </para>
176
177 <para>
178 <command>find man -name Makefile.in -exec ... {} \;</command>: This
179 command is used to suppress the installation of the
180 <command>groups</command> man pages so the existing ones installed from
181 the <application>Coreutils</application> package are not replaced.
182 </para>
183
184 <para>
185 <command>sed -e 's@#ENCRYPT_METHOD DES@ENCRYPT_METHOD SHA512@' -e
186 's@/var/spool/mail@/var/mail@' -e '/PATH=/{s@/sbin:@@;s@/bin:@@}'
187 -i etc/login.defs</command>: Instead of using
188 the default 'DES' method, this command modifies the installation to use
189 the more secure 'SHA512' method of hashing passwords, which also allows
190 passwords longer than eight characters. It also changes the obsolete
191 <filename class="directory">/var/spool/mail</filename> location for user
192 mailboxes that <application>Shadow</application> uses by default to the
193 <filename class="directory">/var/mail</filename> location. It also
194 changes the default path to be consistent with that 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 <!-- New URL for the below link, according to it's author. -->
298 <para>
299 <ulink url="http://www.deer-run.com/~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
448auth required pam_wheel.so use_uid
449
450# include system account settings
451account include system-account
452
453# Set default environment variables for the service user
454session required pam_env.so
455
456# include system session settings
457session include system-session
458
459# End /etc/pam.d/su</literal>
460EOF</userinput></screen>
461 </sect4>
462
463 <sect4>
464 <title>'chpasswd' and 'newusers'</title>
465
466<screen role="root"><userinput>cat &gt; /etc/pam.d/chpasswd &lt;&lt; "EOF"
467<literal># Begin /etc/pam.d/chpasswd
468
469# always allow root
470auth sufficient pam_rootok.so
471
472# include system auth and account settings
473auth include system-auth
474account include system-account
475password include system-password
476
477# End /etc/pam.d/chpasswd</literal>
478EOF
479
480sed -e /chpasswd/newusers/ /etc/pam.d/chpasswd >/etc/pam.d/newusers</userinput></screen>
481 </sect4>
482
483 <sect4>
484 <title>'chage'</title>
485
486<screen role="root"><userinput>cat &gt; /etc/pam.d/chage &lt;&lt; "EOF"
487<literal># Begin /etc/pam.d/chage
488
489# always allow root
490auth sufficient pam_rootok.so
491
492# include system auth and account settings
493auth include system-auth
494account include system-account
495
496# End /etc/pam.d/chage</literal>
497EOF</userinput></screen>
498 </sect4>
499
500 <sect4>
501 <title>Other shadow utilities</title>
502
503<screen role="root"><userinput>for PROGRAM in chfn chgpasswd chsh groupadd groupdel \
504 groupmems groupmod useradd userdel usermod
505do
506 install -v -m644 /etc/pam.d/chage /etc/pam.d/${PROGRAM}
507 sed -i "s/chage/$PROGRAM/" /etc/pam.d/${PROGRAM}
508done</userinput></screen>
509
510 <warning>
511 <para>
512 At this point, you should do a simple test to see if
513 <application>Shadow</application> is working as expected. Open
514 another terminal and log in as
515 <systemitem class="username">root</systemitem>, and then run
516 <command>login</command> and login as another user. If you do
517 not see any errors, then all is well and you should proceed with
518 the rest of the configuration. If you did receive errors, stop
519 now and double check the above configuration files manually.
520 Any error is the sign of an error in the above procedure.
521 You can also run the
522 test suite from the <application>Linux-PAM</application> package
523 to assist you in determining the problem. If you cannot find and
524 fix the error, you should recompile
525 <application>Shadow</application> adding the
526 <option>--without-libpam</option> switch to the
527 <command>configure</command> command in the above instructions
528 (also move the <filename>/etc/login.defs.orig</filename> backup
529 file to <filename>/etc/login.defs</filename>). If you fail to do
530 this and the errors remain, you will be unable to log into your
531 system.
532 </para>
533 </warning>
534 </sect4>
535
536 <sect4 id="pam-access">
537 <title>Configuring Login Access</title>
538
539 <para>
540 Instead of using the <filename>/etc/login.access</filename> file for
541 controlling access to the system, <application>Linux-PAM</application>
542 uses the <filename class='libraryfile'>pam_access.so</filename> module
543 along with the <filename>/etc/security/access.conf</filename> file.
544 Rename the <filename>/etc/login.access</filename> file using the
545 following command:
546 </para>
547
548 <indexterm zone="shadow pam-access">
549 <primary sortas="e-etc-security-access.conf">/etc/security/access.conf</primary>
550 </indexterm>
551
552<screen role="root"><userinput>[ -f /etc/login.access ] &amp;&amp; mv -v /etc/login.access{,.NOUSE}</userinput></screen>
553 </sect4>
554
555 <sect4 id="pam-limits">
556 <title>Configuring Resource Limits</title>
557
558 <para>
559 Instead of using the <filename>/etc/limits</filename> file for
560 limiting usage of system resources,
561 <application>Linux-PAM</application> uses the
562 <filename class='libraryfile'>pam_limits.so</filename> module along
563 with the <filename>/etc/security/limits.conf</filename> file. Rename
564 the <filename>/etc/limits</filename> file using the following command:
565 </para>
566
567 <indexterm zone="shadow pam-limits">
568 <primary sortas="e-etc-security-limits.conf">/etc/security/limits.conf</primary>
569 </indexterm>
570
571<screen role="root"><userinput>[ -f /etc/limits ] &amp;&amp; mv -v /etc/limits{,.NOUSE}</userinput></screen>
572
573 <caution>
574 <para>
575 Be sure to test the login capabilities of the system before logging
576 out. Errors in the configuration can cause a permanent
577 lockout requiring a boot from an external source to correct the
578 problem.
579 </para>
580 </caution>
581
582 </sect4>
583 </sect3>
584
585 </sect2>
586
587 <sect2 role="content">
588 <title>Contents</title>
589
590 <para>
591 A list of the installed files, along with their short descriptions can be
592 found at
593 <ulink url="&lfs-root;/chapter08/shadow.html#contents-shadow"/>.
594 </para>
595
596 </sect2>
597
598</sect1>
Note: See TracBrowser for help on using the repository browser.