X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=scripts%2Fforensic-mark-readonly;h=705034b245a732f047e52d5d03781946fb8f9797;hb=2a7b533e961b8d6ea735237a86927473b2dccb8f;hp=92971e4c93e1d894e64a0fbd13626b3d1dc46255;hpb=31e81f4ab51d9c47eb12a239b587c3b9dd204cf6;p=grml-udev-config.git diff --git a/scripts/forensic-mark-readonly b/scripts/forensic-mark-readonly index 92971e4..705034b 100755 --- a/scripts/forensic-mark-readonly +++ b/scripts/forensic-mark-readonly @@ -13,7 +13,7 @@ fi # see linux source -> Documentation/admin-guide/sysfs-rules.rst get_blockdev_dir() { - for dir in /sys/subsystem/block/ /sys/class/block/ /sys/block/ ; do + for dir in /sys/subsystem/block /sys/class/block /sys/block ; do [ -d "${dir}" ] && echo "${dir}" && return done } @@ -47,6 +47,17 @@ esac SYS_DIR="$(get_blockdev_dir)" +base_device=$(base "${BLOCK_DEVICE}") +if [ -n "${SYS_DIR}" ] && [ -n "${base_device}" ] ; then + tmp_parent="$(readlink -f "${SYS_DIR}"/*/"${base_device}")" + if [ -d "${tmp_parent}" ] ; then + parent_device=$(dir "${tmp_parent}") + parent_device=$(base "${parent_device}") + parent_device="/dev/${parent_device}" + fi + unset tmp_parent +fi + # support configuration file if [ -r /etc/grml/forensic.conf ] ; then READONLY_MODE="" @@ -60,26 +71,17 @@ if [ -r /etc/grml/forensic.conf ] ; then fi if [ -n "${READONLY_IGNORE:-}" ] ; then - case ${READONLY_IGNORE:-} in - "${BLOCK_DEVICE}") + if printf "%s\n" "${READONLY_IGNORE:-}" | grep -qw "${parent_device}" ; then + if [ -n "${parent_device:-}" ] ; then + logger -t forensic-mark-readonly "not setting '${BLOCK_DEVICE}' (parent device: '${parent_device}') to read-only as present in ignore list" + else logger -t forensic-mark-readonly "not setting '${BLOCK_DEVICE}' to read-only as present in ignore list" - exit 0 - ;; - esac + fi + exit 0 + fi fi fi -base_device=$(base "${BLOCK_DEVICE}") -if [ -n "${SYS_DIR}" ] && [ -n "${base_device}" ] ; then - tmp_parent="${SYS_DIR}/*/${base_device}" - if [ -d "${tmp_parent}" ] ; then - parent_device=$(dir "${tmp_parent}") - parent_device=$(base "${parent_device}") - parent_device="/dev/${parent_device}" - fi - unset tmp_parent -fi - if is_ro "${BLOCK_DEVICE}" ; then logger -t forensic-mark-readonly "device ${BLOCK_DEVICE} already set to read-only mode, nothing to do" elif [ -n "${parent_device}" ] && ! is_ro "${parent_device}" ; then