當前位置: 首頁>>技術問答>>正文


為什麽用戶不會使用普通的sudo來啟動圖形應用程序?

, , ,

問題描述

我讀過the comunity “RootSudo” documentation,對這一行感興趣:

You should never use normal sudo to start graphical applications as Root.

為什麽?有什麽不同?請提供一個簡單的解釋,因為我隻是一個普通的桌麵用戶。

最佳解決辦法

圖形應用程序通常將設置和其他user-specific數據存儲在用戶home folder內寫入的配置文件中。主要機製應用程序用於確定它們應該用作用戶的主文件夾的是HOME environment variable。 (您可以使用echo $HOME自行檢查)。

假設你正在運行gedit(一個圖形化文本編輯器)作為root。如果您運行sudo geditHOME將繼續指向您的主目錄,即使該程序正在以root運行。因此,gedit會將配置文件寫入root到主目錄。這個配置文件中的will sometimes resultrootowned,因此為inaccessible to you(當您稍後以自己的身份運行程序而不是root時)。這主要發生在應用程序必須創建新的配置文件時。新創建的文件默認由創建它們的用戶擁有(在這種情況下,root,而不是您)。

這是您使用圖形sudo前端運行圖形應用程序而不是直接運行sudo的主要原因。在Ubuntu及其大部分衍生產品(包括Xubuntu和Lubuntu)中,標準圖形前端是gksu /gksudo。在Kubuntu它是kdesudo。 (這取決於正在使用的desktop environment。)

如果您想直接使用sudo運行gedit等圖形應用程序,則可以運行:

sudo -H gedit

-H標誌使sudoHOME設置為指向root的主文件夾(即/root)。

這仍然不會自動處理.Xauthority的所有權,方法是將其複製到臨時文件夾(這是圖形sudo前端為您處理的另一件事)。但在.Xauthority無法訪問的罕見事件中,您會收到錯誤消息,然後您可以通過刪除它(sudo rm ~/.Xauthority)修複問題,因為它會自動重新生成。因此,保護​​.Xauthority的所有權和權限不如保護配置文件的所有權和權限。

root擁有的.Xauthority不同,當配置文件擁有root時,問題並不總是那麽明顯(因為圖形程序經常運行,但不能很好地工作,並向控製台輸出任何有用的錯誤)。有時候修複這個問題更麻煩一些,特別是當你想讓你的主目錄中的一個或多個文件被別人以外的人所擁有時(因為那樣你就無法簡單地通過遞歸方式修複它)chown ing you all文件回到你自己)。

因此,不應該使用sudo(至少不使用-H)來運行圖形應用程序,除非您非常熟悉該應用程序的內部工作方式,並且確定它沒有嘗試寫入任何配置文件。

次佳解決辦法

簡單的說:

This prevents files in your home directory becoming owned by root.

閱讀它here。此外,可能是What is the difference between “gksudo nautilus” and “sudo nautilus”?的副本

參考資料

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