diff options
Diffstat (limited to 'packaging/Debian/debian/samba.postinst')
-rw-r--r-- | packaging/Debian/debian/samba.postinst | 218 |
1 files changed, 218 insertions, 0 deletions
diff --git a/packaging/Debian/debian/samba.postinst b/packaging/Debian/debian/samba.postinst new file mode 100644 index 0000000000..5f42cf4b36 --- /dev/null +++ b/packaging/Debian/debian/samba.postinst @@ -0,0 +1,218 @@ +#!/bin/sh +# +# Post-installation script for the Samba package for Debian GNU/Linux +# +# Written by Eloy A. Paris <peloy@debian.org> for the Debian project. +# +# The prerm script (run before the postinst) disables Samba in /etc/inetd.conf +# and stops both nmbd and smbd. So, when this script is run we +# know that neither nmbd nor smbd can start. +# + +case "$1" in + configure) + # continue below + ;; + + abort-upgrade|abort-remove|abort-deconfigure) + exit 0 + ;; + + *) + echo "postinst called with unknown argument \`$1'" >&2 + exit 0 + ;; +esac + +# Take care of the /usr/doc/ to /usr/shar/doc/ migration. +if [ -d /usr/doc -a ! -e /usr/doc/samba -a -d /usr/share/doc/samba ]; then + ln -sf ../share/doc/samba /usr/doc/samba +fi + +# Starting with Samba 2.0.7-4 the location of the WINS database, the browse +# database and other important run-time files are stored in +# /var/state/samba/ rather than in /var/samba/. The following +# code takes care of moving the files in the old directory to +# the new directory. +if [ -d /var/samba/ ]; then + mv /var/samba/* /var/state/samba/ + rmdir /var/samba/ +fi + +# Define some constants... +DEBIAN_CONFIG=/etc/samba/debian_config +CONFIG_VERSION=1 + +# Now some variables... +samba_configured=no + + +if [ -f $DEBIAN_CONFIG ]; then + . $DEBIAN_CONFIG + if [ "$config_version" -ge "$CONFIG_VERSION" ]; then + samba_configured=yes + fi +fi + +# If Samba is configured we don't want to pester the user with +# configuration questions, just tell him that he can reconfigure +# Samba at any time by running /usr/sbin/sambaconfig. +if [ "$samba_configured" = "no" ]; then + # Samba is not configured, go and ask the user the information needed + # to configure it, and configure it! + + # Create Debian specific configuration file + echo "config_version=$CONFIG_VERSION" > $DEBIAN_CONFIG + + # We always run /etc/init.d/samba, even if we run Samba from inetd. + # This script file takes care of handling the conflict of running + # from inetd or as daemons. + update-rc.d samba defaults >/dev/null + + # We want to add these entries to inetd.conf commented out. Otherwise + # UDP traffic could make inetd to start nmbd or smbd right during + # the configuration stage. + update-inetd --add "#<off># netbios-ssn stream tcp nowait root /usr/sbin/tcpd /usr/sbin/smbd" + update-inetd --add "#<off># netbios-ns dgram udp wait root /usr/sbin/tcpd /usr/sbin/nmbd -a" + + echo "" + echo Samba Configuration + echo ------------------- + echo "The Samba server may be run either as a daemon at startup, or it may be" + echo "run from the inetd meta-daemon upon request. If run as a daemon, the" + echo "server will always be ready, so starting sessions will be faster. If run" + echo "from the inetd meta-daemon some memory will be saved and utilities such" + echo "as the tcpd TCP-wrapper may be used for extra security. If you don't" + echo "know what to do, running from inetd is a safe choice." + echo "" + echo "Run Samba as daemons or from inetd?" + echo -n "Press 'D' to run as daemons or 'I' to run from inetd: [I] " + + read mode + test -n "$mode" || mode="I" + + case "$mode" in + [Dd]*) + echo "Samba will run as daemons. Run sambaconfig to reconfigure" + update-inetd --disable netbios-ssn + update-inetd --disable netbios-ns + echo "run_mode=as_daemons" >> $DEBIAN_CONFIG + ;; + + *) + echo "Samba will run from inetd. Run sambaconfig to reconfigure" + update-inetd --enable netbios-ssn + update-inetd --enable netbios-ns + echo "run_mode=from_inetd" >> $DEBIAN_CONFIG + ;; + esac + + if [ ! -f /etc/samba/smbpasswd ]; then + echo "" + echo "If you are going to use encrypted passwords you need to have a" + echo "separate password file for this (the format is different from " + echo "/etc/passwd). Right now you don't have an /etc/samba/smbpasswd file." + echo "Do you want to generate this new file from your existing" + echo -n "/etc/passwd file? [y/N] " + + read yn + test -n "$yn" || yn="N" + + if [ $yn = y -o $yn = Y ]; then + cat /etc/passwd | /usr/sbin/mksmbpasswd > /etc/samba/smbpasswd + chmod 600 /etc/samba/smbpasswd + echo "" + echo "/etc/samba/smbpasswd now has the same user names as /etc/passwd. However," + echo "you need to run smbpasswd manually to set the password for each user." + echo "" + echo "smbpasswd_created=yes" >> $DEBIAN_CONFIG + else + echo "smbpasswd_created=no" >> $DEBIAN_CONFIG + fi + fi + + echo "" + + # Start Samba: nothing wrong will happen if Samba is running from inetd + # and /etc/init.d/samba is run. However, to simplify things, we + # do not run /etc/init.d/samba if we're running from inetd. + + if [ $mode = d -o $mode = D ]; then + echo -n "Samba will run as daemons - start Samba now? [Y/n] " + read yn + test -n "$yn" || yn="Y" + + case "$yn" in + [Nn]*) + echo "Not started; to start later, do: /etc/init.d/samba start" + echo -n "Press [ENTER] " + read line + ;; + + *) + /etc/init.d/samba start + ;; + esac + else + echo "Since you are running Samba from inetd, the daemons will start" + echo "automatically by inetd when there is traffic on the NetBIOS" + echo "ports." + echo -n "Press [ENTER] " + read line + fi +else # if (samba_configured) ... + # We are here because Samba was already configured... + + # At this point the NetBIOS daemons are disabled in /etc/inetd.conf. + # This is a consequence of what we did in the prerm. If Samba was + # configured to run from inetd we need to enable the entries in + # /etc/inetd.conf. + + # Read current Samba configuration + . $DEBIAN_CONFIG + + if [ "$run_mode" = "from_inetd" ]; then + update-inetd --enable netbios-ssn + update-inetd --enable netbios-ns + fi + + echo "" + echo "Samba was already installed and configured so I skipped the " + echo "configuration questions. You can run the script /usr/sbin/sambaconfig" + echo "at any time to reconfigure Samba. See sambaconfig(8) for more" + echo "details. I will not even ask you if you want to restart Samba," + echo "I will just do it!" + echo "" + + /etc/init.d/samba start +fi # if (samba_configured) ... + +if test "$1" = configure && dpkg --compare-versions "$2" lt 2.0.0final-2 && [ -f /etc/samba/smbpasswd ]; then + + cat << EOF + +*** IMPORTANT *** + +The format of the smbpasswd file (which is used only if you are using +encrypted passwords) is different in Samba 2.0.0 and above. I will +convert it to the new format. + +EOF + + mv /etc/samba/smbpasswd /etc/samba/smbpasswd.old + cat /etc/samba/smbpasswd.old | /usr/bin/convert_smbpasswd \ + > /etc/samba/smbpasswd 2> /dev/null +fi + +# This check is a safety net: the /etc/samba/smbpasswd file must have +# permissions 600. +if [ -f /etc/samba/smbpasswd ]; then + chmod 600 /etc/samba/smbpasswd +fi + +# Do the same check for /var/backup/smbpasswd.bak, just in case. +if [ -f /var/backups/smbpasswd.bak ]; then + chmod 600 /var/backups/smbpasswd.bak +fi + +exit 0 |