Package: samba
Severity: normal
Tags: patch
On a fresh install of Samba, I answer "No" to the following question:
Create samba password database, /var/lib/samba/passdb.tdb?
However, it goes ahead and creates it anyway. The problem is that the
debconf config file is not idempotent--it overwrites my answer with
its calculated default value on its second run (since apt runs it
twice as described in the debconf-devel man page).
How to reproduce the problem:
# DO NOT DO THIS EXCEPT ON A TEST SYSTEM!
# (be sure you have debconf configured to ask medium-priority questions)
rm -rf /var/lib/samba /etc/samba
apt-get remove --purge samba samba-common
apt-get install samba
A workaround is to create an empty /var/lib/samba/passdb.tdb before
installing samba:
mkdir /var/lib/samba
touch /var/lib/samba/passdb.tdb
apt-get install samba
rm /var/lib/samba/passdb.tdb
Better yet, attached is a patch for Samba to set the calculated
default value only if the user is going to be asked the question.
Note well that this patch introduces a different behavior if the user
has configured debconf to only ask high priority questions. In this
case Samba would generate the passdb.tdb file by default. But with
this patch, Samba will not generate the passdb.tdb file by default
because the user does not get asked the question to confirm it. I
think this behavior is ok, though, because I don't think that Samba
should be generating this password file in any case without first
confirming it with the user.
-- System Information:
Debian Release: 3.1
Architecture: i386 (i686)
Kernel: Linux 2.6.8-2-686
Locale: LANG=C, LC_CTYPE=C (charmap=ANSI_X3.4-1968)
--- config.orig 2006-02-01 18:16:03.080719972 +0000
+++ config 2006-02-01 18:13:25.927964124 +0000
@@ -64,6 +64,8 @@
db_input "$TDBPRIORITY" samba/tdbsam || true
fi
+db_get samba/generate_smbpasswd || true
+DEFAULT_GENERATE_SMBPASSWD="${RET}"
# We vary the priority of the next question depending on whether
# the password database already exists...
if [ -e /etc/samba/smbpasswd -o -e /var/lib/samba/passdb.tdb ]; then
@@ -82,11 +84,14 @@
if [ "$ENCRYPT" = "no" ]; then
ENCRYPT=false
fi
+ DEFAULT_GENERATE_SMBPASSWD="$ENCRYPT"
fi
- db_set samba/generate_smbpasswd "$ENCRYPT"
fi
PRIORITY="medium"
fi
-db_input $PRIORITY samba/generate_smbpasswd || true
+if db_input $PRIORITY samba/generate_smbpasswd; then
+ # Question will be asked, so set default value.
+ db_set samba/generate_smbpasswd "$DEFAULT_GENERATE_SMBPASSWD"
+fi
db_go