Bash Script не устанавливает мое устройство, когда вы вызываете UdevLinux

Ответить
Anonymous
 Bash Script не устанавливает мое устройство, когда вы вызываете Udev

Сообщение Anonymous »

code < /h1>
Я пытаюсь создать правило udev, которое связывает мое устройство на его UUID, поэтому я могу после чтения в его содержимое. < /p>
Мой файл udev локализован в

Код: Выделить всё

/etc/udev/rules.d/99-local.rules
, [/b] и это содержимое:

Код: Выделить всё

ACTION=="add", ENV{ID_FS_UUID}=="12CB-F616", SYMLINK+="masterkey", RUN+="/usr/bin/mountkey.sh"

Сценарий, управляемый правилом UDEV, состоит из этого:

Код: Выделить всё

LOG_FILE="/tmp/key-mount.log"

sudo mount /dev/masterkey /mnt/masterkey > /tmp/key-mount.log

MOUNT_POINT="$(findmnt -n -o TARGET --source '/dev/masterkey')"

echo "$MOUNT_POINT" >> "$LOG_FILE"

if [ -n $MOUNT_POINT ]; then
echo "Device with UUID: $UUID mounted at $MOUNT_POINT" >> "$LOG_FILE"
else
echo "Error: Device with UUID: $UUID not mounted" >> "$LOG_FILE"
fi

Чтобы запустить Mount командный пролив вперед в качестве корня, не ожидая пароля, я отредактировал

Код: Выделить всё

/etc/sudoers
[/b] файл с visudo и добавил обе строки с полем nopasswd для mount для vagrant и root Пользователь. нравится это: < /p>

Код: Выделить всё

root ALL=(ALL:ALL) ALL
root ALL=NOPASSWD:/usr/bin/mount
vagrant ALL= NOPASSWD: /usr/bin/mount
< /code>

 probelm < /h1>
Проблема в том, что, когда udev вызывает команду [b] mount < /strong>, по -видимому, это не работает. И ни команда не производит какую -либо вывод, а также переменную  mount_point [/b] env в файле журнала. Этот файл выглядит так: < /p>

Device with UUID:  mounted at
< /code>
Я отредактировал скрипт, и вместо этого я запустил его без sudo, но получил такой же вывод выше. это по -разному: < /p>
ACTION=="add", ENV{ID_FS_UUID}=="12CB-F616", SYMLINK+="masterkey", RUN+="/bin/bash -c '/usr/bin/mountkey.sh'"

ACTION=="add", ENV{ID_FS_UUID}=="12CB-F616", SYMLINK+="masterkey", RUN+="/bin/bash -c 'sudo /usr/bin/mount /dev/masterkey /mnt/masterkey'"

ACTION=="add", ENV{ID_FS_UUID}=="12CB-F616", SYMLINK+="masterkey", RUN+="/bin/bash -c '/usr/bin/mount /dev/masterkey /mnt/masterkey'"

тоже я сделал все это с sh (из Corse, я сделал #!/bin/sh) и ни в одном из этих способов это не сработало.
Так кажется, что у него нет проблем, связанной с сценарием, но запускается бинарным шариком любым способом, в котором он был представлен. двоичный, потому что когда я запускаю: < /p>

Код: Выделить всё

sudo mount /dev/sdnX /mnt/masterkey

он выполняет работу. Я много раз пробовал сценарий с теми же представленными методами, но получил одинаковые результаты выше. Vagrant (Archlinux/Archlinux)
ядра 6.10.10-Arch1-1

Подробнее здесь: https://stackoverflow.com/questions/794 ... ed-by-udev
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»