Запустите Скипта, как Судо, с Гксудо

Я новичок в Linux. Я пытаюсь монтировать и размонтировать.iso с помощью nemo-script. Я поставил скрипт /home/user/.gnome2/nemo-scripts/, Моя проблема в том, что с gksudo я запускаю только 1 команду, как su. Кто я могу запустить весь этот скрипт, как Су?

#!/bin/bash

gksudo -k /bin/echo "got r00t?"
BNAME=$(basename "$NEMO_SCRIPT_SELECTED_FILE_PATHS")

sudo mkdir "/media/$BNAME"

zenity --info --title "ISO Mounter" --text "$BNAME e $NEMO_SCRIPT_SELECTED_FILE_PATHS"

if sudo mount -o loop -t iso9660 $NEMO_SCRIPT_SELECTED_FILE_PATHS "/media/$BNAME"
then
    if zenity --question --title "ISO Mounter" --text "$BNAME Successfully Mounted. Open Volume?"
    then
        nemo /media/$BNAME --no-desktop
    fi
    exit 0
else
    sudo rmdir "/media/$BNAME"
    zenity --error --title "ISO Mounter" --text "Cannot mount $BNAME!"
    exit 1
fi

Спасибо!!

1 ответ

Есть несколько способов сделать это. В приведенном выше сценарии вы можете выполнить весь сценарий с помощью root разрешение, если вы вызываете сами сценарии с su -c script или же sudo script, Перед этим отредактируйте скрипт и удалите вызовы gksudo а также sudo, Затем в верхней части вашего скрипта добавьте тест, чтобы убедиться, что скрипт запускается с эффективным UID root. Например:

#!/bin/bash

if test "$UID" -eq 0 ; then
    printf "Running script as root\n"
else
    printf "error, this script can only be run by root\n"
    exit 1;
fi

Тогда просто убедитесь, что вы запускаете свой скрипт как sudo scriptname или же su -c scriptname, Кроме того, убедитесь, что у вас есть набор битов прав доступа к файлу сценария. Вы можете сделать это просто с chmod 0775 scriptname который даст owner а также group разрешения на чтение-запись-выполнение и предоставление world разрешения на чтение-выполнение. Если вы не хотите, чтобы он выполнялся в мире, просто chmod 0774,

Если вы не установите разрешение на выполнение в вашем скрипте, вы получите Permission denied или же command not found ошибка. Вы можете выполнить скрипт, указав оболочку в вашем sudo или же su позвоните, например, sudo bash scriptname или же su -c "bash scriptname", но желательно сделать скрипт исполняемым.

Другие вопросы по тегам