shadowpwd.xml 5.2 KB

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