linux桌面应用内部执行sudo,sudo - 如何从非管理员用户会话以管理员身份运行带有GUI的应用程序? - Ubuntu问答...

这篇博客讨论了如何在Ubuntu中,当一个用户帐户没有管理员权限时,如何通过另一个具有管理员权限的帐户运行图形应用程序。主要方法包括配置PAM以允许使用`su`命令运行图形界面,以及使用`sux`代替`su`来解决图形应用的权限问题。用户需要在命令行中输入两次密码,一次切换用户,一次执行sudo命令。另外还提到了`sux`命令作为替代方案,避免了图形显示问题。
摘要由CSDN通过智能技术生成

问题描述

我定义了2个用户帐户:

一个具有管理员权限的用户(右对sudo)=>让我们称之为adminuser。

没有任何特权的第二个=>让我们称之为normaluser,我在第二个用户normaluser上配置了自动登录。

因此,当我打开normaluser会话并希望以管理员权限运行应用程序时,我打开了一个终端Ctrl + Alt + T并:

su adminuser

sudo anyapplication ...

它可以正常工作,而不必退出normaluser会话(无需打开adminuser会话)。

但是,如果应用程序需要使用GUI(图形用户界面)运行,该怎么办?我尽管如此:

su adminuser

gksu anyapplication ...

但我明白了

** (gksu:9122): WARNING **: the connexion is closed

No protocol specified

No protocol specified

(gksu:9122): Gtk-WARNING **: cannot open display: :0.0

最佳办法

PAM可以照顾好它

这对我在Ubuntu 16.04上有效(编辑:在18.04 LTS上也适用):

把线:

session optional pam_xauth.so

在某处:

/etc/pam.d/su

和/或

/etc/pam.d/sudo

然后执行“ su-”或“ sudo su-”,我可以将图形应用程序用作root。

次佳办法

Terminology

在这个答案中:

normaluser是不是管理员的普通用户,因此无法通过sudo作为root来运行命令。

admin是管理员,可以通过sudo作为root来运行命令。 (当然,任何图形命令都应使用图形前端,例如gksu /gksudo,而不应直接使用sudo。)

anyapplication是图形应用程序的名称,normaluser希望以root的身份运行。 normaluser知道admin的密码,并且(大概)被告知他(他)可以将其用于此目的。

问题

问题的原因以及迄今为止其他大多数答案都不起作用的原因(Marty Fried的excellent answer除外)是:

可以将gksu配置为使用sudo或su作为其后端。 Ubuntu中gksu的默认行为是充当sudo的前端,而不是su的前端。也就是说,默认情况下,gksu和gksudo的行为完全相同。请参阅the manpage。

normaluser不是管理员,因此无法通过sudo作为root运行命令。 sudo提示输入运行它的用户的密码,而不是他们想要成为的用户的密码。如果您不是管理员,则无法使用密码来执行操作,这意味着您不是管理员。

如果不是来宾帐户,则normaluser可以使用su作为另一用户运行命令,并输入其他用户的密码。但是gksu充当sudo的前端,而不是su的前端。

normaluser无法直接以root的身份运行任何命令,因为normaluser无法使用sudo,并且没有人可以通过su成为root,因为there is no root password。

解决方案

该解决方案需要编写一个执行两个身份验证步骤的命令:

normaluser必须成为管理员才能运行图形命令。为此,normaluser必须使用带有-w标志的gksu使其在su-mode中运行,而不是在默认的sudo-mode中运行,并且-u标志必须以admin而不是root身份运行该命令。

以admin身份运行的命令必须调用没有-w标志的gksu才能使用sudo成为root。

这是命令(是的,我已经测试过;-)):

gksu -w -u admin gksu anyapplication

系统将提示您输入两次密码:

首先,必须输入admin的密码,以使normaluser与su后端一起作为admin运行命令。

其次,您必须输入admin的密码,以使admin作为带有sudo后端的root运行命令。

那就对了。您两次输入admin的密码。

杂项注意事项:

如果愿意,可以将第二个gksu替换为gksudo,以减少混乱。在Ubuntu中,它们是等效的。 (您也可以用gksudo替换第一个gksu,但这会非常违反直觉和令人困惑。)

-w是--su-mode的缩写。

-S是--sudo-mode的缩写形式,但由于sudo-mode是默认设置,因此两者都不用。

您可能需要先使用一些非常无害的命令对其进行测试,以确保它可以满足您的要求。 (可以,但是不需要您信任我。)例如:

gksu -w -u admin gksu xclock

时钟

是一个很好的简单clock-window应用程序。

第三种办法

一种可能可行的方法是,当您第一次切换到管理员用户时,使用”sux”而不是”su”。 sux解决了从欺骗用户运行x应用程序的问题。它在标准存储库中,可以通过在命令行输入sudo apt-get install sux进行安装。

然后,只需使用”sux”而不是”su”,它就可以按照您期望的方式工作。

让我们重用应用程序示例xclock:

sux admin

gksu xclock

参考资料

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值