Попробуйте sudo
. Например:
sudo chown mtest1:dba /mpart/setup/test.log
Для получения дополнительных сведений об использовании и настройке sudo
выполните команду man sudo
.
Я удовлетворил эту проблему, используя более сложный вспомогательный скрипт. Вспомогательный скрипт
По непонятным мне причинам я подтвердил, что второе событие "изменения" 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. И достаточно уникального номера, чтобы сделать его немного более пуленепробиваемым.