使用命令启动终端;然后进入 Bash Shell

使用命令启动终端;然后进入 Bash Shell

通过桌面快捷方式,管理员将以其他用户身份启动 shell。用户应以不具有提升权限的方式进入 shell,但以提升权限执行第一个命令。最后,用户应处于非特权 shell 中,但该 shell 保持打开状态以供进一步使用。

我该怎么做呢?

问题已编辑,以供 WIP 答案使用。

最新测试:

gksudo "gnome-terminal --execute bash -c 'boss "apt-get update"; bash'"

不起作用。

以下是 Laurent 帮我集思广益后得出的答案。不幸的是,我的情况太复杂,我无法很好地表达。

我有一个从不上网的管理员用户。他使用代理用户来获取东西并执行他的命令。名为更新位于 sudoers 文件中,并被允许apt-get使用 NOPASSWD。管理员想要一个快捷方式,通往一个自动调用的 gnome 终端apt-get 更新执行后,因为管理员想在执行后立即安装某些东西,而这些东西无法预料到会被放入脚本中。自动更新对管理员不起作用,因为管理员被防火墙与互联网隔离,被迫雇佣打手进行系统更新和获取其他下载。

感谢 Laurent 为我指明了正确答案!答案如下:

gksudo -u update "gnome-terminal --execute bash -c 'sudo apt-get update;bash'"

答案1

你必须使用以下命令制作启动器:

gksudo "gnome-terminal --execute bash -c 'apt-get "update"; bash'"

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

gnome-terminal --execute bash -c "sudo apt-get 'update';bash"

这样,终端就会打开,要求输入密码(如果需要)并继续。

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

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

您可以编辑 sudo(使用visudo)以使其无需密码即可使用 sudo(并且可能限制该用户仅运行几个命令(如果不只是这一个))但这不是最推荐的做法。

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

相关内容