如何使用管理员权限在终端外运行脚本?

如何使用管理员权限在终端外运行脚本?

下载 netbeans 10.0 后,我教创建一个桌面文件来启动它,这样,我不必sudo /home/abc/Downloads/netbeans/bin/netbeans每次都运行。

我创建了一个小脚本来以管理员权限启动 netbeans。

#!/bin/sh
cd /home/abc/Downloads/netbeans/bin/ 
echo "password" | sudo -S ./netbeans

我把这个文件/usr/bin/ 放到

创建 netbeans.desktop 文件如下

[Desktop Entry]
Version=1.0
Type=Application
Terminal=False
Exec=/usr/bin/netbeans
Name=Netbeans
Comment=Java IDE
Icon=/home/abc/Downloads/netbeans/nb/netbeans.icns

通过输入

netbeans 在终端中,它以管理员权限打开 netbeans。

但点击桌面文件或 shell 文件没有任何反应

抱歉,如果这很愚蠢,我是新手。

编辑

尝试了这里所述的一切 =>如何在脚本内运行“sudo”命令?但没有任何效果。

正如@dessert建议的那样使用pkexec。它有效,但带来了另一个问题。

/home/abc/Downloads/netbeans/platform/lib/nbexec: WARNING: environment variable DISPLAY is not set

我认为 netbeans 需要终端才能运行。所以我试过了,xdf-opengksu都没有成功。请帮忙!

答案1

大多数用户应用程序都不应该以 root 身份运行。如果需要 root 权限,则非常糟糕的做法允许用户只需单击启动器即可运行具有 root 权限的应用程序,无需任何形式的身份验证。

幸运的是,以管理员权限运行终端之外的脚本并不容易。GUI 菜单系统不允许在没有任何安全措施的情况下轻松创建以 root 权限启动程序的启动器。

在极少数情况下,需要使用图形用户界面执行管理操作。以前,该gksudo命令允许具有 root 权限的用户以 root 权限启动任何图形应用程序。这种糟糕的安全模型已被淘汰,取而代之的是更安全的系统,这些系统要么 1)不需要以 root 身份运行图形用户界面但仍允许访问系统文件和文件夹,或者 2)仍然以 root 身份运行整个图形应用程序,但有一个更强的安全到位。

1) 由“admin://”URI 覆盖。诸如gedit和 等应用程序nautilus可以通过这样的 URI 启动,例如

gedit admin:///etc/fstab

通过这种方式,gedit 本身就以普通用户身份运行。系统为其提供系统文件的临时副本,在本例中为 /etc/fstab。一旦用户保存了临时副本,系统就会更新原始 /etc/fstab。“磁盘”也是这样设计的。应用程序(即图形用户界面)随时以普通用户身份运行,但在即将执行管理任务时会要求输入管理员密码。

2) 通过 处理pkexec。在这里,经过身份验证后,整个应用程序以 root 权限启动。这也是gksudo以前的工作方式。然而,最大的区别在于,此外,还必须有一个关于应用程序的系统策略文件。因此,只有先前授权的应用程序才能由特权用户以 root 身份启动。

相关内容