0

我是linux新手。我正在尝试使用 nemo-script 挂载和卸载 .iso。我把脚本/home/user/.gnome2/nemo-scripts/。我的问题是,使用 gksudo 我只运行 1 个命令,例如 su。谁我可以像 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

谢谢!!

4

1 回答 1

0

有几种方法可以做到这一点。在上面的脚本中,如果您使用或root调用脚本本身,则可以在获得许可的情况下执行整个脚本。在执行此操作之前,请编辑您的脚本并删除对和的调用。然后在脚本的顶部添加一个测试,以确保脚本使用有效的根 UID 运行。例如:su -c scriptsudo scriptgksudosudo

#!/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 scriptnameor su -c scriptname。此外,请确保您拥有脚本文件权限的执行位集。您可以简单地使用chmod 0775 scriptnamewhich will giveownergroupread-write-execute 权限并给予worldread-execute 权限。如果您不希望它在世界上可执行,那么只需chmod 0774.

如果你没有在你的脚本上设置执行权限,你会得到一个Permission deniedcommand not found错误。您可以通过在sudoorsu调用中指定 shell 来执行脚本,例如sudo bash scriptnameor su -c "bash scriptname",但最好使脚本可执行。

于 2014-07-26T22:49:26.283 回答