【问题标题】:Run scipt like sudo with Gksudo使用 Gksudo 运行类似 sudo 的脚本
【发布时间】:2014-07-26 21:33:06
【问题描述】:

我是 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

谢谢!!

【问题讨论】:

    标签: linux bash shell gksudo


    【解决方案1】:

    有几种方法可以做到这一点。在上面的脚本中,如果您使用su -c scriptsudo script 调用脚本本身,则可以使用root 权限执行整个脚本。在此之前,编辑您的脚本并删除对gksudosudo 的调用。然后在脚本的顶部添加一个测试,以确保脚本使用有效的根 UID 运行。例如:

    #!/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 scriptnamesu -c scriptname 运行脚本。此外,确保您拥有脚本文件权限的执行位集。您可以简单地使用chmod 0775 scriptname 执行此操作,这将授予ownergroup 读写执行权限并授予world 读取执行权限。如果您不希望它在世界范围内可执行,那么只需chmod 0774

    如果您没有对脚本设置执行权限,您将收到Permission deniedcommand not found 错误。您可以通过在 sudosu 调用中指定 shell 来执行脚本,例如sudo bash scriptnamesu -c "bash scriptname",但最好使脚本可执行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-23
      • 1970-01-01
      • 2011-06-05
      • 2017-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多