Я хочу разрешить пользователям записывать ISO-образы на USB-накопитель из Thunar или Dolphin.
Для этого я создал bash-скрипт, который использует dd, pv и zenity.
В настоящее время я использую pkexec для запроса пароля перед выполнением команды dd, но окно pkexec и окно прогресса zenity открываются одновременно. Я хотел бы сначала открыть окно для пароля root, после чего должно быть открыто окно прогресса zenity.
Сначала я попытался запросить пароль с zenity, после чего я передаю пароль в sudo, но куда бы я ни поставил «echo $ PWD», пароль не передается в sudo.
#!/bin/bash
TITLE='Zenity Progress Test'
PASSWORD=$(zenity --password \
--width=300 \
--title="$TITLE")
if [ ! -z "$PASSWORD" ]; then
echo "Your password: $PASSWORD"
dd if=/dev/zero of="$PWD/testfile1" bs=1M count=100
pv -n testfile1 2> >(zenity --progress \
--width=300 \
--title="$TITLE" \
--percentage=0 \
--auto-close \
--auto-kill) | echo "$PASSWORD" | sudo -S dd of="$PWD/testfile2" bs=64k oflag=dsync
echo "$PASSWORD" | sudo -S rm "$PWD/testfile1" "$PWD/testfile2"
else
echo 'No password provided'
exit 1
fi
Окно прогресса zenity просто мигает, и ничего не передается, скорее всего, потому что пароль не передается в sudo.
Если вы замените «echo $ PASSWORD | sudo -S» на «pkexec», код будет функционировать, но при этом одновременно откроется окно pkexec и окно прогресса zenity.
Есть идеи, как решить эту загадку?