Что означает удаление моей символической ссылки на мой USB-раздел luks после cryptsetup luksOpen?

Попробуйте sudo. Например:

sudo chown mtest1:dba /mpart/setup/test.log

Для получения дополнительных сведений об использовании и настройке sudoвыполните команду man sudo.

0
26.03.2021, 01:44
1 ответ

Я удовлетворил эту проблему, используя более сложный вспомогательный скрипт. Вспомогательный скрипт

По непонятным мне причинам я подтвердил, что второе событие "изменения" udev, происходящее после ввода

cryptsetup luksOpen /dev/asymlinkname cr_diskbackup
Команда

приводит к исчезновению символической ссылки.
Я переключил логику правила на «добавить|изменить», а также добавил вспомогательный скрипт. Вспомогательный скрипт является модификацией найденного здесь:правила udev для назначения известных символических ссылок для идентичных последовательных USB-устройств . Модификация представляет собой добавление логики для поиска любых существующих символических ссылок (s )в каталоге /dev, которые указывают на раздел luks (, обычно /dev/sdc1, но не гарантируется ). Если он найден, выведите номер суффикса символической ссылки на стандартный вывод. Udev считывает число и использует его в качестве суффикса для (re )создания символической ссылки с этим именем. Cryptsetup luksOpen продолжает работать, как и раньше, таинственным образом удаляя символическую ссылку на блочное устройство, хотя блочное устройство остается. Но с помощью вспомогательного сценария теперь символическая ссылка присутствует после luksOpen, потому что она снова создается действием правила udev для события «изменить».

Обновленное правило udev:

SUBSYSTEM!="block", GOTO="my_usb_luks_rules_end"
ENV{DEVTYPE}!="partition",  GOTO="my_usb_luks_rules_end"
ACTION=="add|change", ENV{ID_FS_TYPE}=="crypto_LUKS", PROGRAM="/usr/local/sbin/my-unique-usb-luks-num /dev myusbluks $env{DEVNAME}", SYMLINK+="myusbluks%c"
LABEL="my_usb_luks_rules_end"

/usr/local/sbin/my -уникальный -usb -luks -числовой скрипт:

#!/bin/bash

if [ $# -ne 3 ]; then
    printf "Usage: $0 location prefix devicename\n" >&2
    exit 1
fi

location="$1"
prefix="$2"
devname="$3"

# Find any symlinks in the location that may already
# exist to our device. Save only the first one.
old_symlink=$( find $location -maxdepth 1 \
                    -lname "$(basename ${devname})" \
                    -name "$prefix*" |
                    sort -n | head -n 1 )

# If we found any symlinks with our prefix to the specified device, then print
# its numeric suffix to stdout for it to be "$result" (%c) in the caller udev
# rule.
if [ "${old_symlink}" != "" ]; then
   devbase=$(basename ${old_symlink})
   printf "${devbase##$prefix}\n"
   exit
fi

# No symlink was already in existence, so find a unique new suffix number.
for ((index=0; index<256; index++)); do
  if [ ! -e "$location/$prefix$index" ]; then
     # Merely print this to our stdout for it to be $result (%c) in caller udev
     # rule. Then exit.
     printf "$index\n"
     exit
  fi
done
# If we did not exit above, we printed (returned) nothing.
exit 1

Подключение USB-накопителя с разделом luks приводит к:

/dev/myusbluks0

будет создан. Если одновременно подключен второй USB-накопитель с разделом luks, этот раздел luks получит символическую ссылку

.
/dev/myusbluks1

Если бы я

cryptsetup luksOpen /dev/myusbluks0  cr_diskbackup

Символическая ссылка по-прежнему будет присутствовать и указывать на устройство, как и до запуска cryptsetup luksOpen. И достаточно уникального номера, чтобы сделать его немного более пуленепробиваемым.

0
28.04.2021, 22:56

Теги

Похожие вопросы