當前位置: 首頁>>技術教程>>正文


sudo – 如何從非管理員用戶會話以管理員身份運行帶有GUI的應用程序?

, ,

問題描述

我定義了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 Friedexcellent answer除外)是:

  • 可以將gksu配置為使用sudosu作為其後端。 Ubuntu中gksu的默認行為是充當sudo的前端,而不是su的前端。也就是說,默認情況下,gksugksudo的行為完全相同。請參閱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

係統將提示您輸入兩次密碼:

  1. 首先,必須輸入admin的密碼,以使normalusersu後端一起作為admin運行命令。

  2. 其次,您必須輸入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

參考資料

本文由Ubuntu問答整理, 博文地址: https://ubuntuqa.com/zh-tw/article/8115.html,未經允許,請勿轉載。