用命令启动终端;然后转到 Bash Shell

cxx*_*xxc 1 gnome-terminal

通过桌面快捷方式,管理员将作为另一个用户启动 shell。用户应该在没有提升权限的情况下进入 shell,但使用提升的权限执行第一个命令。最后,用户应该处于保持打开状态以供进一步使用的非特权外壳中。

我该怎么做呢?

为 WIP 答案编辑的问题。

最新测试:

gksudo "gnome-terminal --execute bash -c 'boss "apt-get update"; bash'"
Run Code Online (Sandbox Code Playgroud)

不起作用。

以下是感谢 Laurent 帮助我进行头脑风暴的答案。不幸的是,我的情况太复杂了,我无法很好地表达。

我有一个从不上网的管理员用户。他使用代理用户来获取东西并进行投标。名为update的用户位于 sudoers 文件中,并且允许使用 NOPASSWD进行apt-get。admin 想要一个通向 gnome-terminal 的快捷方式,该终端在执行时自动调用apt-get update因为 admin 想要在此之后立即安装一些无法预测的东西放在脚本中。自动更新对管理员不起作用,因为管理员受到 Internet 防火墙的限制,并且被迫雇用暴徒进行系统更新和获取其他下载。

感谢 Laurent 带领我找到正确答案!这里是:

gksudo -u update "gnome-terminal --execute bash -c 'sudo apt-get update;bash'"
Run Code Online (Sandbox Code Playgroud)

lau*_*ent 7

你必须使用这个来制作启动器:

gksudo "gnome-terminal --execute bash -c 'apt-get "update"; bash'"
Run Code Online (Sandbox Code Playgroud)

在定义不以 root 身份打开终端后进行编辑(在运行命令后将其保留为未提升的权限:

gnome-terminal --execute bash -c "sudo apt-get 'update';bash"
Run Code Online (Sandbox Code Playgroud)

这样,终端将打开,询问密码(如果需要)并继续。

Obs:如果您的命令不需要sudo,只需将其从命令中删除。我在第一个答案中使用了 gksudo,因为您的示例正在使用它,所以我认为整个过程都需要它(并使终端处于提升的权限)。

两个启动器都可以工作,但第一个将在 GUI 中询问密码并以 sudo 运行整个过程,让终端以“sudo 模式”打开,第二个启动器将打开终端,在那里询问密码,以 sudo 身份运行命令并将终端留在“用户模式”。

您可以编辑 sudo (with visudo) 以使其在没有密码的情况下使用 sudo(并且可能限制此用户仅运行少数命令,如果不仅仅是这个命令),但这不是最推荐的做法。

如果您可以提供有关您正在尝试做的事情的更多信息,也许有不同的方法来做到这一点?(可以更好......或更糟......当然:))