mirror of
git://slackware.nl/current.git
synced 2024-12-28 09:59:53 +01:00
a59816a829
a/cryptsetup-2.6.1-x86_64-3.txz: Rebuilt. rc.luks: support start/stop/status. Add a manpage for crypttab. Thanks to PiterPunk. a/sysvinit-scripts-15.1-noarch-6.txz: Rebuilt. rc.M: call "rc.luks start" to unlock any volumes that are still locked. rc.6: call "rc.luks stop" to close volumes at shutdown. Thanks to PiterPunk. kde/attica-5.108.0-x86_64-1.txz: Upgraded. kde/baloo-5.108.0-x86_64-1.txz: Upgraded. kde/bluez-qt-5.108.0-x86_64-1.txz: Upgraded. kde/breeze-icons-5.108.0-noarch-1.txz: Upgraded. kde/extra-cmake-modules-5.108.0-x86_64-1.txz: Upgraded. kde/frameworkintegration-5.108.0-x86_64-1.txz: Upgraded. kde/kactivities-5.108.0-x86_64-1.txz: Upgraded. kde/kactivities-stats-5.108.0-x86_64-1.txz: Upgraded. kde/kapidox-5.108.0-x86_64-1.txz: Upgraded. kde/karchive-5.108.0-x86_64-1.txz: Upgraded. kde/kauth-5.108.0-x86_64-1.txz: Upgraded. kde/kbookmarks-5.108.0-x86_64-1.txz: Upgraded. kde/kcalendarcore-5.108.0-x86_64-1.txz: Upgraded. kde/kcmutils-5.108.0-x86_64-1.txz: Upgraded. kde/kcodecs-5.108.0-x86_64-1.txz: Upgraded. kde/kcompletion-5.108.0-x86_64-1.txz: Upgraded. kde/kconfig-5.108.0-x86_64-1.txz: Upgraded. kde/kconfigwidgets-5.108.0-x86_64-1.txz: Upgraded. kde/kcontacts-5.108.0-x86_64-1.txz: Upgraded. kde/kcoreaddons-5.108.0-x86_64-1.txz: Upgraded. kde/kcrash-5.108.0-x86_64-1.txz: Upgraded. kde/kdav-5.108.0-x86_64-1.txz: Upgraded. kde/kdbusaddons-5.108.0-x86_64-1.txz: Upgraded. kde/kdeclarative-5.108.0-x86_64-1.txz: Upgraded. kde/kded-5.108.0-x86_64-1.txz: Upgraded. kde/kdelibs4support-5.108.0-x86_64-1.txz: Upgraded. kde/kdesignerplugin-5.108.0-x86_64-1.txz: Upgraded. kde/kdesu-5.108.0-x86_64-1.txz: Upgraded. kde/kdewebkit-5.108.0-x86_64-1.txz: Upgraded. kde/kdnssd-5.108.0-x86_64-1.txz: Upgraded. kde/kdoctools-5.108.0-x86_64-1.txz: Upgraded. kde/kemoticons-5.108.0-x86_64-1.txz: Upgraded. kde/kfilemetadata-5.108.0-x86_64-1.txz: Upgraded. kde/kglobalaccel-5.108.0-x86_64-1.txz: Upgraded. kde/kguiaddons-5.108.0-x86_64-1.txz: Upgraded. kde/kholidays-5.108.0-x86_64-1.txz: Upgraded. kde/khtml-5.108.0-x86_64-1.txz: Upgraded. kde/ki18n-5.108.0-x86_64-1.txz: Upgraded. kde/kiconthemes-5.108.0-x86_64-1.txz: Upgraded. kde/kidletime-5.108.0-x86_64-1.txz: Upgraded. kde/kimageformats-5.108.0-x86_64-1.txz: Upgraded. kde/kinit-5.108.0-x86_64-1.txz: Upgraded. kde/kio-5.108.0-x86_64-1.txz: Upgraded. kde/kirigami2-5.108.0-x86_64-1.txz: Upgraded. kde/kitemmodels-5.108.0-x86_64-1.txz: Upgraded. kde/kitemviews-5.108.0-x86_64-1.txz: Upgraded. kde/kjobwidgets-5.108.0-x86_64-1.txz: Upgraded. kde/kjs-5.108.0-x86_64-1.txz: Upgraded. kde/kjsembed-5.108.0-x86_64-1.txz: Upgraded. kde/kmediaplayer-5.108.0-x86_64-1.txz: Upgraded. kde/knewstuff-5.108.0-x86_64-1.txz: Upgraded. kde/knotifications-5.108.0-x86_64-1.txz: Upgraded. kde/knotifyconfig-5.108.0-x86_64-1.txz: Upgraded. kde/kpackage-5.108.0-x86_64-1.txz: Upgraded. kde/kparts-5.108.0-x86_64-1.txz: Upgraded. kde/kpeople-5.108.0-x86_64-1.txz: Upgraded. kde/kplotting-5.108.0-x86_64-1.txz: Upgraded. kde/kpty-5.108.0-x86_64-1.txz: Upgraded. kde/kquickcharts-5.108.0-x86_64-1.txz: Upgraded. kde/kross-5.108.0-x86_64-1.txz: Upgraded. kde/krunner-5.108.0-x86_64-1.txz: Upgraded. kde/kservice-5.108.0-x86_64-1.txz: Upgraded. kde/ktexteditor-5.108.0-x86_64-1.txz: Upgraded. kde/ktextwidgets-5.108.0-x86_64-1.txz: Upgraded. kde/kunitconversion-5.108.0-x86_64-1.txz: Upgraded. kde/kwallet-5.108.0-x86_64-1.txz: Upgraded. kde/kwayland-5.108.0-x86_64-1.txz: Upgraded. kde/kwidgetsaddons-5.108.0-x86_64-1.txz: Upgraded. kde/kwindowsystem-5.108.0-x86_64-1.txz: Upgraded. kde/kxmlgui-5.108.0-x86_64-1.txz: Upgraded. kde/kxmlrpcclient-5.108.0-x86_64-1.txz: Upgraded. kde/modemmanager-qt-5.108.0-x86_64-1.txz: Upgraded. kde/networkmanager-qt-5.108.0-x86_64-1.txz: Upgraded. kde/oxygen-icons5-5.108.0-noarch-1.txz: Upgraded. kde/plasma-framework-5.108.0-x86_64-1.txz: Upgraded. kde/prison-5.108.0-x86_64-1.txz: Upgraded. kde/purpose-5.108.0-x86_64-1.txz: Upgraded. kde/qqc2-desktop-style-5.108.0-x86_64-1.txz: Upgraded. kde/solid-5.108.0-x86_64-1.txz: Upgraded. kde/sonnet-5.108.0-x86_64-1.txz: Upgraded. kde/syndication-5.108.0-x86_64-1.txz: Upgraded. kde/syntax-highlighting-5.108.0-x86_64-1.txz: Upgraded. kde/threadweaver-5.108.0-x86_64-1.txz: Upgraded. xap/rxvt-unicode-9.26-x86_64-7.txz: Rebuilt. Applied upstream patch to fix special character rendering when rxvt-unicode is built against perl-5.38.0. Thanks to pghvlaans.
146 lines
5.5 KiB
Bash
146 lines
5.5 KiB
Bash
#!/bin/bash
|
|
# Open any volumes created by cryptsetup.
|
|
#
|
|
# Some notes on /etc/crypttab in Slackware:
|
|
# Only LUKS formatted volumes are supported (except for swap)
|
|
# crypttab follows the following format:
|
|
# <luks_name> <device> <password> <options>
|
|
#
|
|
# <luks_name>: This is the name of your LUKS volume.
|
|
# For example: crypt-home
|
|
#
|
|
# <device>: This is the device containing your LUKS volume.
|
|
# For example: /dev/sda2
|
|
#
|
|
# <password>: This is either the volume password in plain text, or the name of
|
|
# a key file. Use 'none' to interactively enter password on boot.
|
|
#
|
|
# <options>: Comma-separated list of options. Note that there must be a
|
|
# password field for any options to be picked up (use a password of 'none' to
|
|
# get a password prompt at boot). The following options are supported:
|
|
#
|
|
# discard -- this will cause --allow-discards to be passed to the cryptsetup
|
|
# program while opening the LUKS volume.
|
|
#
|
|
# ro -- this will cause --readonly to be passed to the cryptsetup program while
|
|
# opening the LUKS volume.
|
|
#
|
|
# swap -- this option cannot be used with other options. The device given will
|
|
# be formatted as a new encrypted volume with a random key on boot, and used as
|
|
# swap.
|
|
#
|
|
# keyscript=<path/to/script> -- get the password from the named script's stdout.
|
|
# The only parameter sent to script is the <password> field, but the script can
|
|
# ignore it.
|
|
#
|
|
|
|
luks_start() {
|
|
if [ -f /etc/crypttab -a -x /sbin/cryptsetup ]; then
|
|
# First, check for device-mapper support.
|
|
if ! grep -wq device-mapper /proc/devices ; then
|
|
# If device-mapper exists as a module, try to load it.
|
|
# Try to load a device-mapper kernel module:
|
|
/sbin/modprobe -q dm-mod
|
|
fi
|
|
# NOTE: we only support LUKS formatted volumes (except for swap)!
|
|
# The input for this loop comes from after the "done" below, so that we can
|
|
# use fd3 and keep stdin functional for password entry or in case a keyscript
|
|
# requires it:
|
|
while read line <&3; do
|
|
eval LUKSARRAY=( $line )
|
|
LUKS="${LUKSARRAY[0]}"
|
|
DEV="${LUKSARRAY[1]}"
|
|
PASS="${LUKSARRAY[2]}"
|
|
OPTS="${LUKSARRAY[3]}"
|
|
KEYSCRIPT="$(echo $OPTS | sed -n 's/.*keyscript=\([^,]*\).*/\1/p')"
|
|
LUKSOPTS=""
|
|
if echo $OPTS | grep -wq ro ; then LUKSOPTS="${LUKSOPTS} --readonly" ; fi
|
|
if echo $OPTS | grep -wq discard ; then LUKSOPTS="${LUKSOPTS} --allow-discards" ; fi
|
|
# Skip LUKS volumes that were already unlocked (in the initrd):
|
|
/sbin/cryptsetup status $LUKS 2>/dev/null | head -n 1 | grep -q "is active" && continue
|
|
if /sbin/cryptsetup isLuks $DEV 2>/dev/null ; then
|
|
if [ -z "${LUKSOPTS}" ]; then
|
|
echo "Unlocking LUKS encrypted volume '${LUKS}' on device '$DEV':"
|
|
else
|
|
echo "Unlocking LUKS encrypted volume '${LUKS}' on device '$DEV' with options '${LUKSOPTS}':"
|
|
fi
|
|
if [ -x "${KEYSCRIPT}" ]; then
|
|
# A password was outputted by a script
|
|
${KEYSCRIPT} "${PASS}" | /sbin/cryptsetup ${LUKSOPTS} luksOpen $DEV $LUKS
|
|
echo
|
|
elif [ -n "${PASS}" -a "${PASS}" != "none" ]; then
|
|
if [ -f "${PASS}" ]; then
|
|
# A password was given a key-file filename
|
|
/sbin/cryptsetup ${LUKSOPTS} --key-file=${PASS} luksOpen $DEV $LUKS
|
|
else
|
|
# A password was provided in plain text
|
|
echo "${PASS}" | /sbin/cryptsetup ${LUKSOPTS} luksOpen $DEV $LUKS
|
|
fi
|
|
else
|
|
# No password was given, or a password of 'none' was given
|
|
/sbin/cryptsetup ${LUKSOPTS} luksOpen $DEV $LUKS
|
|
fi
|
|
elif echo $OPTS | grep -wq swap ; then
|
|
# If any of the volumes is to be used as encrypted swap,
|
|
# then encrypt it using a random key and run mkswap:
|
|
echo "Creating encrypted swap volume '${LUKS}' on device '$DEV':"
|
|
/sbin/cryptsetup --batch-mode --cipher=aes --key-file=/dev/urandom --key-size=256 create $LUKS $DEV
|
|
mkswap /dev/mapper/$LUKS
|
|
fi
|
|
done 3< <(grep -vE '^(#|$)' /etc/crypttab)
|
|
fi
|
|
}
|
|
|
|
luks_stop() {
|
|
# Close any volumes opened by cryptsetup:
|
|
if [ -f /etc/crypttab -a -x /sbin/cryptsetup ]; then
|
|
cat /etc/crypttab | grep -v "^#" | grep -v "^$" | while read line; do
|
|
# NOTE: we only support LUKS formatted volumes (except for swap)!
|
|
LUKS=$(echo $line | tr '\t' ' ' | tr -s ' ' | cut -f1 -d' ')
|
|
DEV=$(echo $line | tr '\t' ' ' | tr -s ' ' | cut -f2 -d' ')
|
|
OPTS=$(echo $line | tr '\t' ' ' | tr -s ' ' | cut -f4 -d' ')
|
|
if /sbin/cryptsetup isLuks $DEV 2>/dev/null ; then
|
|
echo "Locking LUKS crypt volume '${LUKS}':"
|
|
/sbin/cryptsetup luksClose ${LUKS}
|
|
elif echo $OPTS | grep -wq swap ; then
|
|
# If any of the volumes was used as encrypted swap,
|
|
# then run mkswap on the underlying device -
|
|
# in case other Linux installations on this computer should use it:
|
|
echo "Erasing encrypted swap '${LUKS}' and restoring normal swap on ${DEV}:"
|
|
/sbin/cryptsetup remove ${LUKS}
|
|
mkswap $DEV
|
|
fi
|
|
done
|
|
fi
|
|
}
|
|
|
|
luks_status() {
|
|
if [ -f /etc/crypttab -a -x /sbin/cryptsetup ]; then
|
|
RET=0
|
|
while read line; do
|
|
# NOTE: we only support LUKS formatted volumes (except for swap)!
|
|
LUKS=$(echo $line | tr '\t' ' ' | tr -s ' ' | cut -f1 -d' ')
|
|
cryptsetup status $LUKS | grep 'active'
|
|
STATUS="${PIPESTATUS[0]}"
|
|
if [ "$STATUS" != "0" ]; then
|
|
RET=1
|
|
fi
|
|
done < <(grep -vE '^(#|$)' /etc/crypttab)
|
|
return $RET
|
|
fi
|
|
}
|
|
|
|
case $1 in
|
|
'start')
|
|
luks_start
|
|
;;
|
|
'stop')
|
|
luks_stop
|
|
;;
|
|
'status')
|
|
luks_status
|
|
;;
|
|
*)
|
|
echo "Usage $0 start|stop|status"
|
|
;;
|
|
esac
|