Home | History | Annotate | Line # | Download | only in chroot-setup
      1 #!/bin/sh
      2 # From original Solaris 8 version by Matthew X. Economou
      3 # Solaris 10 version updated by JD Bronson. Caution: this copies
      4 # too many files. There is no need to copy libc.so and other files
      5 # that are already linked in before a Postfix daemon chroots itself.
      6 
      7 COMMAND_DIRECTORY="/usr/sbin"
      8 DAEMON_DIRECTORY="/usr/libexec/postfix"
      9 QUEUE_DIRECTORY="/var/spool/postfix"
     10 
     11 ## Copy any shared libraries, device entries, or configuration files
     12 ## needed by Postfix into the jail.
     13 binlist="
     14 $DAEMON_DIRECTORY/virtual
     15 $DAEMON_DIRECTORY/trivial-rewrite
     16 $DAEMON_DIRECTORY/spawn
     17 $DAEMON_DIRECTORY/smtpd
     18 $DAEMON_DIRECTORY/smtp
     19 $DAEMON_DIRECTORY/showq
     20 $DAEMON_DIRECTORY/qmqpd
     21 $DAEMON_DIRECTORY/qmgr
     22 $DAEMON_DIRECTORY/proxymap
     23 $DAEMON_DIRECTORY/pipe
     24 $DAEMON_DIRECTORY/pickup
     25 $DAEMON_DIRECTORY/nqmgr
     26 $DAEMON_DIRECTORY/master
     27 $DAEMON_DIRECTORY/local
     28 $DAEMON_DIRECTORY/lmtp
     29 $DAEMON_DIRECTORY/flush
     30 $DAEMON_DIRECTORY/error
     31 $DAEMON_DIRECTORY/cleanup
     32 $DAEMON_DIRECTORY/bounce
     33 /usr/lib/sendmail
     34 $COMMAND_DIRECTORY/postsuper
     35 $COMMAND_DIRECTORY/postqueue
     36 $COMMAND_DIRECTORY/postmap
     37 $COMMAND_DIRECTORY/postlog
     38 $COMMAND_DIRECTORY/postlock
     39 $COMMAND_DIRECTORY/postkick
     40 $COMMAND_DIRECTORY/postfix
     41 $COMMAND_DIRECTORY/postdrop
     42 $COMMAND_DIRECTORY/postconf
     43 $COMMAND_DIRECTORY/postcat
     44 $COMMAND_DIRECTORY/postalias
     45 "
     46 ldd $binlist | awk '/[=]>/ { print $3 }' | sort -u | while read i
     47 do
     48     mkdir -p $QUEUE_DIRECTORY`dirname $i`
     49     ## Sun's version of tar sucks.  We'll have to remove the leading
     50     ## slashes from file names ourself, otherwise the copy doesn't
     51     ## work.
     52     (cd / && tar cphf - `echo $i | sed -e 's/^\///'`) | (cd $QUEUE_DIRECTORY && tar xpf -)
     53 done
     54 
     55 ## More stuff for the jail, mostly discovered by inspection
     56 ## (e.g. strings, lsof).
     57 more="
     58 /dev/zero
     59 /dev/null
     60 /dev/udp6
     61 /dev/tcp6
     62 /dev/udp
     63 /dev/tcp
     64 /dev/poll
     65 /dev/rawip
     66 /dev/ticlts
     67 /dev/ticotsord
     68 /dev/ticots
     69 /devices/pseudo/mm@0:zero
     70 /devices/pseudo/mm@0:null
     71 /devices/pseudo/udp6@0:udp6
     72 /devices/pseudo/tcp6@0:tcp6
     73 /devices/pseudo/udp@0:udp
     74 /devices/pseudo/tcp@0:tcp
     75 /devices/pseudo/poll@0:poll
     76 /devices/pseudo/icmp@0:icmp
     77 /devices/pseudo/tl@0:ticlts
     78 /devices/pseudo/tl@0:ticotsord
     79 /devices/pseudo/tl@0:ticots
     80 /etc/hosts
     81 /etc/nsswitch.conf
     82 /etc/netconfig
     83 /etc/passwd
     84 /etc/resolv.conf
     85 /etc/default/init
     86 /etc/default/nss
     87 /etc/inet/services
     88 /etc/inet/hosts
     89 /etc/services
     90 /lib/ld.so
     91 /lib/ld.so.1
     92 /usr/lib/nss_dns.so.1
     93 /usr/lib/sparcv9/straddr.so
     94 /usr/lib/straddr.so
     95 /usr/lib/straddr.so.2
     96 /lib/libintl.so
     97 /lib/libintl.so.1
     98 /lib/libw.so
     99 /lib/libw.so.1
    100 /lib/nss_nis.so.1
    101 /lib/nss_nisplus.so.1
    102 /lib/nss_dns.so.1
    103 /lib/nss_files.so.1
    104 /usr/share/lib/zoneinfo
    105 /var/ld/ld.config
    106 "
    107 for i in $more; do
    108     mkdir -p $QUEUE_DIRECTORY`dirname $i`
    109     (cd / && tar cpf - `echo $i | sed -e 's/^\///'`) | (cd $QUEUE_DIRECTORY && tar xpf -)
    110 done
    111 
    112 exit 0
    113