mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-30 15:43:32 +01:00
81429fdc34
svn:r14933
122 lines
4.4 KiB
Bash
122 lines
4.4 KiB
Bash
#!/bin/sh -e
|
|
|
|
# checking debian-tor account
|
|
|
|
uid=`getent passwd debian-tor | cut -d ":" -f 3`
|
|
home=`getent passwd debian-tor | cut -d ":" -f 6`
|
|
|
|
# if there is the uid the account is there and we can do
|
|
# the sanit(ar)y checks otherwise we can safely create it.
|
|
|
|
if [ "$uid" ]; then
|
|
if [ "$home" = "/var/lib/tor" ]; then
|
|
:
|
|
#echo "debian-tor homedir check: ok"
|
|
else
|
|
echo "ERROR: debian-tor account has an unexpected home directory!"
|
|
echo "It should be '/var/lib/tor', but it is '$home'."
|
|
echo "Removing the debian-tor user might fix this, but the question"
|
|
echo "remains how you got into this mess to begin with."
|
|
exit 1
|
|
fi
|
|
else
|
|
adduser --quiet \
|
|
--system \
|
|
--disabled-password \
|
|
--home /var/lib/tor \
|
|
--no-create-home \
|
|
--shell /bin/bash \
|
|
--group \
|
|
debian-tor
|
|
fi
|
|
|
|
|
|
for i in lib run log; do
|
|
if ! [ -d "/var/$i/tor" ]; then
|
|
echo "Something or somebody made /var/$i/tor disappear."
|
|
echo "Creating one for you again."
|
|
mkdir "/var/$i/tor"
|
|
fi
|
|
done
|
|
|
|
find /var/lib/tor \( \( ! -user debian-tor \) -o \( ! -group debian-tor \) \) -print0 | xargs -0 --no-run-if-empty chown debian-tor:debian-tor
|
|
find /var/lib/tor -type d -print0 | xargs -0 --no-run-if-empty chmod 02700
|
|
find /var/lib/tor -type f -print0 | xargs -0 --no-run-if-empty chmod 00600
|
|
|
|
find /var/run/tor \( \( ! -user debian-tor \) -o \( ! -group debian-tor \) \) -print0 | xargs -0 --no-run-if-empty chown debian-tor:debian-tor
|
|
find /var/run/tor -type d -print0 | xargs -0 --no-run-if-empty chmod 02750
|
|
find /var/run/tor -type f -print0 | xargs -0 --no-run-if-empty chmod 00600
|
|
|
|
find /var/log/tor \( \( ! -user debian-tor \) -o \( ! -group adm \) \) -print0 | xargs -0 --no-run-if-empty chown debian-tor:adm
|
|
find /var/log/tor -type d -print0 | xargs -0 --no-run-if-empty chmod 02750
|
|
find /var/log/tor -type f -print0 | xargs -0 --no-run-if-empty chmod 00640
|
|
|
|
|
|
move_away_keys=0
|
|
|
|
if [ "$1" = "configure" ] &&
|
|
[ -e /var/lib/tor/keys ] &&
|
|
[ ! -z "$2" ]; then
|
|
if dpkg --compare-versions "$2" lt 0.1.2.19-2; then
|
|
move_away_keys=1
|
|
elif dpkg --compare-versions "$2" gt 0.2.0 &&
|
|
dpkg --compare-versions "$2" lt 0.2.0.26-rc; then
|
|
move_away_keys=1
|
|
fi
|
|
fi
|
|
if [ "$move_away_keys" = "1" ]; then
|
|
echo "Retiring possibly compromised keys. See /usr/share/doc/tor/NEWS.Debian.gz"
|
|
echo "and /var/lib/tor/keys/moved-away-by-tor-package/README.REALLY for"
|
|
echo "further information."
|
|
if ! [ -d /var/lib/tor/keys/moved-away-by-tor-package ]; then
|
|
mkdir /var/lib/tor/keys/moved-away-by-tor-package
|
|
cat > /var/lib/tor/keys/moved-away-by-tor-package/README.REALLY << EOF
|
|
It has been discovered that the random number generator in Debian's
|
|
openssl package is predictable. This is caused by an incorrect
|
|
Debian-specific change to the openssl package (CVE-2008-0166). As a
|
|
result, cryptographic key material may be guessable.
|
|
|
|
See Debian Security Advisory number 1571 (DSA-1571) for more information:
|
|
http://lists.debian.org/debian-security-announce/2008/msg00152.html
|
|
|
|
The Debian package for Tor has moved away the onion keys upon package
|
|
upgrade, and it will have moved away your identity key if it was created
|
|
in the affected timeframe. There is no sure way to automatically tell
|
|
if your key was created with an affected openssl library, so this move
|
|
is done unconditionally.
|
|
|
|
If you have restarted Tor since this change (and the package probably
|
|
did that for you already unless you configured your system differently)
|
|
then the Tor daemon already created new keys for itself and in all
|
|
likelyhood is already working just fine with new keys.
|
|
|
|
If you are absolutely certain that your identity key was created with
|
|
a non-affected version of openssl and for some reason you have to retain
|
|
the old identity, then you can move back the copy of secret_id_key to
|
|
/var/lib/tor/keys. Do not move back the onion keys, they were created
|
|
only recently since they are temporary keys with a lifetime of only a few
|
|
days anyway.
|
|
|
|
Sincerely,
|
|
Peter Palfrader, Tue, 13 May 2008 13:32:23 +0200
|
|
EOF
|
|
fi
|
|
for f in secret_onion_key secret_onion_key.old; do
|
|
if [ -e /var/lib/tor/keys/"$f" ]; then
|
|
mv -v /var/lib/tor/keys/"$f" /var/lib/tor/keys/moved-away-by-tor-package/"$f"
|
|
fi
|
|
done
|
|
if [ -e /var/lib/tor/keys/secret_id_key ]; then
|
|
id_mtime=`/usr/bin/stat -c %Y /var/lib/tor/keys/secret_id_key`
|
|
sept=`date -d '2006-09-10' +%s`
|
|
if [ "$id_mtime" -gt "$sept" ] ; then
|
|
mv -v /var/lib/tor/keys/secret_id_key /var/lib/tor/keys/moved-away-by-tor-package/secret_id_key
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
|
|
#DEBHELPER#
|
|
|
|
exit 0
|