AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 832721
Accepted
David
David
Asked: 2016-10-04 12:56:59 +0800 CST2016-10-04 12:56:59 +0800 CST 2016-10-04 12:56:59 +0800 CST

以根用户身份运行脚本 + 桌面文件,无需提示

  • 772

我有两个文件,一个是桌面文件,另一个是 shell 脚本。桌面文件旨在打开 shell 脚本,并以 root 身份在 xTerm GUI 中执行它,而不需要“sudo 密码”。

我被告知sudo要从 shell 脚本中完全删除,留下这个. 由于该程序需要 root 访问权限,我将 /etc/sudoers 编辑为以下内容:

david ALL=(ALL) NOPASSWD:/home/david/upgrade.sh
david ALL=(ALL) NOPASSWD:/home/david/Desktop/Upgrade.desktop

按照我的指示,并从那里配置桌面文件。我从以下内容开始:

xterm -e sudo sh -p /home/david/upgrade.sh

但是当我运行桌面文件时,它仍然要求我输入密码。我认为sudo桌面文件中的 可能是问题,但删除它后,xTerm 窗口不再打开。如何在不输入密码的情况下从桌面文件执行此 shell 脚本?

permissions
  • 1 1 个回答
  • 1763 Views

1 个回答

  • Voted
  1. Best Answer
    Byte Commander
    2016-10-04T15:04:55+08:002016-10-04T15:04:55+08:00

    首先,从 中删除关于桌面文件的行/etc/sudoers,这不是必需的。

    其次,您配置了/home/david/upgrade.sh要运行的确切命令NOPASSWD,而不是sh -p /home/david/upgrade.sh您尝试在xterm窗口中运行的命令。您必须运行配置的命令才能从设置中受益NOPASSWD:

    xterm -e sudo /home/david/upgrade.sh
    

    顺便说一句,您的脚本文件的 shebang 指定/bin/bash为解释器,但您尝试使用/bin/sh. 只要你不使用 Bash 特定的功能,结果是一样的,但你应该避免这样的矛盾。sudo这与虽然无关NOPASSWD。


    作为额外的糖果,如果一个人可以直接调用你的脚本而不用它可能会很好,并且如果sudo它还没有以 root 身份运行,它会自动提升它的权限。我曾经为此编写了一个小 Bash 片段,它可以简单地添加到任何需要以 root 身份运行的 Bash 脚本的顶部:

    #!/bin/bash
    if test "$(id -u)" -ne 0 ; then
        sudo "$0" "$1"
        exit $?
    fi
    

    这将测试有效用户 id 是否为 0(root),如果不是,它会执行自己的脚本文件,sudo并在终止时传递其退出代码。NOPASSWD这与脚本文件的设置一起工作得很好。

    • 1

相关问题

  • 访问启用的虚拟主机时出现 403 禁止错误

  • WINE 用户配置

  • 无法更新雷鸟

  • Ubuntu 在什么许可证下?可以合法修改和分发吗?

  • 文件权限如何工作?文件权限用户和组

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve