我定义了 2 个用户帐户:
sudo权限)=> 让我们称之为adminuser。normalusernormaluser因此,当我打开一个normaluser会话并希望以管理员权限运行应用程序时,
我打开一个终端Ctrl+ Alt+T并:
su adminuser
sudo anyapplication ...
Run Code Online (Sandbox Code Playgroud)
它工作正常,无需退出normaluser会话(无需打开adminuser会话)。
但是,如果应用程序需要使用 GUI(图形用户界面)运行,我该怎么办?
我想:
su adminuser
gksu anyapplication ...
Run Code Online (Sandbox Code Playgroud)
但我明白了
** (gksu:9122): WARNING **: the connexion is closed
No protocol specified
No protocol specified
(gksu:9122): Gtk-WARNING **: cannot open display: :0.0
Run Code Online (Sandbox Code Playgroud)
Eli*_*gan 31
在这个答案中:
normaluser是谁不是管理员,而不能作为运行命令的普通用户root使用sudo。admin是谁能够为运行命令的管理员root用sudo。(当然,任何图形命令都应该使用像gksu/这样的图形前端gksudo,而不是sudo直接使用。)anyapplication是图形应用程序normaluser想要作为root. normaluser知道admin的密码并且(大概)被告知他/她可以将其用于此目的。您的问题的原因,以及到目前为止大多数其他答案都不起作用的原因(除了Marty Fried的优秀答案),是:
gksu可以配置为使用其中之一sudo 或 su作为其后端。gksuUbuntu 中的默认行为是作为 的前端sudo,而不是作为su. 也就是说,默认情况下,gksu和gksudo行为完全一样。请参阅联机帮助页。normaluser不是管理员,因此不能作为运行命令root与sudo。sudo提示输入运行它的用户的密码,而不是他们想成为的用户的密码。不能使用您的密码以不是您的人的身份执行操作,这意味着不是管理员。normaluser,只要它不是一个来宾帐户, 可以运行为其他用户的命令有su,将在其他用户的密码。但gksu充当 的前端sudo,而不是su。normaluseras不能直接运行任何命令root,因为normaluser不能使用sudo,也没有人可以变成rootwithsu因为没有root密码。该解决方案需要编写一个执行两个身份验证步骤的命令:
normaluser必须变成admin运行图形命令。为此,normaluser必须gksu使用-w标志运行以使其以su-mode而不是默认的sudo-mode 运行,以及-u运行命令的标志admin而不是root。admin必须调用gksu ,而不该-w标志使用sudo成为root。这是命令(是的,我已经测试过了;-)):
gksu -w -u admin gksu anyapplicationRun Code Online (Sandbox Code Playgroud)
系统将提示您输入两次密码:
admin的密码,让normaluser作为运行命令admin与su后端。admin的密码,让admin作为运行命令root与sudo后端。这是正确的。您输入admin的密码两次。
其他注意事项:
gksu带gksudo,使其不易混淆。在 Ubuntu 中,它们是等价的。(你也可以更换一次gksu用gksudo,但是这将是非常违反直觉和混乱。)-w是 的缩写形式--su-mode。-S是 的缩写,--sudo-mode但两者都不必使用,因为sudo-mode是默认值。gksu -w -u admin gksu xclockRun Code Online (Sandbox Code Playgroud)
xclock 是一个不错的简单时钟窗口应用程序。Mar*_*ied 12
一种可能有效的方法是在您第一次切换到管理员用户时使用“sux”而不是“su”。sux 修复了从欺骗用户运行 x 应用程序的问题。它位于标准存储库中,可以通过sudo apt-get install sux在命令行中输入来安装。
然后,只需使用“sux”而不是“su”,它就会按照您期望的方式工作。
让我们重用应用程序的例子xclock:
sux admin
gksu xclock
Run Code Online (Sandbox Code Playgroud)
小智 8
这适用于我在 Ubuntu 16.04 上(编辑:它也适用于 18.04 LTS):
把线:
session optional pam_xauth.so
Run Code Online (Sandbox Code Playgroud)
某处:
/etc/pam.d/su
Run Code Online (Sandbox Code Playgroud)
和/或
/etc/pam.d/sudo
Run Code Online (Sandbox Code Playgroud)
然后执行“su -”或“sudo su -”,我可以以 root 用户身份使用图形应用程序。
kdesudo 和 gksu 有一个普遍存在的替代方案 -pkexec它来自policykit-1许多软件包所需的软件包。
| 归档时间: |
|
| 查看次数: |
120833 次 |
| 最近记录: |