README
上传用户:xu_441
上传日期:2007-01-04
资源大小:1640k
文件大小:5k
源码类别:

Email客户端

开发平台:

Unix_Linux

  1. README  smrsh - sendmail restricted shell.
  2. This README file is provided as a courtesy of the CERT Coordination Center,
  3. Software Engineering Institute, Carnegie Mellon University.  This file is
  4. intended as a supplement to the CERT advisory CA-93:16.sendmail.vulnerability,
  5. and to the software, smrsh.c, written by Eric Allman.
  6. The smrsh(8) program is intended as a replacement for /bin/sh in the
  7. program mailer definition of sendmail(8).  This README file describes
  8. the steps needed to compile and install smrsh.
  9. smrsh is a restricted shell utility that provides the ability to
  10. specify, through a configuration, an explicit list of executable
  11. programs.  When used in conjunction with sendmail, smrsh effectively
  12. limits sendmail's scope of program execution to only those programs
  13. specified in smrsh's configuration.
  14. smrsh has been written with portability in mind, and uses traditional
  15. Unix library utilities.  As such, smrsh should compile on most
  16. Unix C compilers.
  17. smrsh should build on most systems with the enclosed Build script:
  18. host.domain% sh Build
  19. To compile smrsh.c by hand, use the following command:
  20. host.domain% cc -o smrsh smrsh.c
  21. For machines that provide dynamic linking, it is advisable to compile
  22. smrsh without dynamic linking.  As an example with the Sun Microsystems
  23. compiler, you should compile with the -Bstatic option.
  24. host.domain% cc -Bstatic -o smrsh smrsh.c
  25. or
  26. host.domain% sh Build LDOPTS=-Bstatic
  27. With gcc, the GNU C compiler, use the -static option.
  28. host.domain% cc -static -o smrsh smrsh.c
  29. or
  30. host.domain% sh Build LDOPTS=-static
  31. As root, install smrsh in /usr/libexec.  Using the Build script:
  32. host.domain# sh Build install
  33. For manual installation: install smrsh in the /usr/libexec
  34. directory, with mode 511.
  35. host.domain# mv smrsh /usr/libexec
  36. host.domain# chmod 511 /usr/libexec/smrsh
  37. Next, determine the list of commands that smrsh should allow sendmail
  38. to run.  This list of allowable commands can be determined by:
  39.    1.  examining your /etc/mail/aliases file, to indicate what commands
  40.        are being used by the system.
  41.    2.  surveying your host's .forward files, to determine what
  42.        commands users have specified.
  43. See the man page for aliases(5) if you are unfamiliar with the format of
  44. these specifications. Additionally, you should include in the list,
  45. popular commands such as /usr/ucb/vacation.
  46. You should NOT include interpreter programs such as sh(1), csh(1),
  47. perl(1), uudecode(1) or the stream editor sed(1) in your list of
  48. acceptable commands.
  49. You will next need to create the directory /usr/adm/sm.bin and populate
  50. it with the programs that your site feels are allowable for sendmail
  51. to execute.   This directory is explicitly specified in the source
  52. code for smrsh, so changing this directory must be accompanied with
  53. a change in smrsh.c.
  54. You will have to be root to make these modifications.
  55. After creating the /usr/adm/sm.bin directory, either copy the programs
  56. to the directory, or establish links to the allowable programs from
  57. /usr/adm/sm.bin.  Change the file permissions, so that these programs
  58. can not be modified by non-root users.  If you use links, you should
  59. ensure that the target programs are not modifiable.
  60. To allow the popular vacation(1) program by creating a link in the
  61. /usr/adm/sm.bin directory, you should:
  62. host.domain# cd /usr/adm/sm.bin
  63. host.domain# ln -s /usr/ucb/vacation vacation
  64. After populating the /usr/adm/sm.bin directory, you can now configure
  65. sendmail to use the restricted shell.  Save the current sendmail.cf
  66. file prior to modifying it, as a prudent precaution.
  67. Typically, the program mailer is defined by a single line in the
  68. sendmail configuration file, sendmail.cf.  This file is traditionally
  69. found in the /etc, /usr/lib or /etc/mail directories, depending on
  70. the UNIX vendor.
  71. If you are unsure of the location of the actual sendmail configuration
  72. file, a search of the strings(1) output of the sendmail binary, will
  73. help to locate it.
  74. In order to configure sendmail to use smrsh, you must modify the Mprog
  75. definition in the sendmail.cf file, by replacing the /bin/sh specification
  76. with /usr/libexec/smrsh.
  77. As an example:
  78. In most Sun Microsystems' sendmail.cf files, the line is:
  79. Mprog, P=/bin/sh,   F=lsDFMeuP,  S=10, R=20, A=sh -c $u
  80. which should be changed to:
  81. Mprog, P=/usr/libexec/smrsh,   F=lsDFMeuP,  S=10, R=20, A=sh -c $u
  82.           ^^^^^^^^^^^^^^^^^^
  83. A more generic line may be:
  84. Mprog, P=/bin/sh, F=lsDFM, A=sh -c $u
  85. and should be changed to;
  86. Mprog, P=/usr/libexec/smrsh, F=lsDFM, A=sh -c $u
  87. After modifying the Mprog definition in the sendmail.cf file, if a frozen
  88. configuration file is being used, it is essential to create a new one.
  89. You can determine if you need a frozen configuration by discovering
  90. if a sendmail.fc file currently exists in either the /etc/, /usr/lib,
  91. or /etc/mail directories.  The specific location can be determined using
  92. a search of the strings(1) output of the sendmail binary.
  93. In order to create a new frozen configuration, if it is required:
  94. host.domain# /usr/lib/sendmail -bz
  95. Now re-start the sendmail process.  An example of how to do this on
  96. a typical system follows:
  97. host.domain# cat /var/run/sendmail.pid
  98. 130
  99. /usr/sbin/sendmail -bd -q30m
  100. host.domain# /bin/kill -15 130
  101. host.domain# /usr/sbin/sendmail -bd -q30m
  102. $Revision: 8.6 $, Last updated $Date: 1999/04/28 01:09:51 $