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


sudo和gksu之間的區別與sudo -i和sudo -s之間的區別一樣嗎?

, ,

問題描述

sudo cmdgksu cmd之間的區別與使用sudo -isudo -s啟動 shell 之間的區別是否相同?

…或換一種說法,sudo cmd是否與sudo -i cmd相同,而gksu cmd是否與sudo -s cmd相同?

編輯:基於我在Ubuntu Documentation Page上看到的內容:

You should never use normal sudo to start graphical applications as root.  
You should use gksudo (kdesudo on Kubuntu) to run such programs. gksudo sets  
HOME=~root, and copies .Xauthority to a tmp directory. This prevents files  
in your home directory becoming owned by root.  
(AFAICT, this is all that's special about the environment of the started   
 process with gksudo vs. sudo).

“AFAICT”並沒有真正讓我完全有信心。


(..一個遲來的更新:我今天(2個月後)測試了他的報告,內容是:“這可以防止您的主目錄中的文件由root擁有。”我通過sudo /gksu創建的所有文件都歸“ root”所有,並且該小組是“根”。)


我已經閱讀了info sudo的各個部分,並注意到-i-s似乎與AFAICT環境問題在做同樣的事情…但是我遇到了過載。.所以我在這裏提出了我的問題。

PS ..我的問題不是關於sudo vs gksu ..而是關於:gksu與sudo -s是一樣的..如果不是,它們有何不同?

最佳回答

gksu基本上是sudo的圖形前端,它允許運行圖形命令而無需運行X終端仿真器並直接使用su。實際上,它隻是超級用戶命令的GTK +外觀。

因此,如果您希望以root用戶身份運行基於GUI的程序,則可以使用gksu cmd而不是sudo cmd來調用它,該程序用於以root用戶身份調用控製台程序。

次佳回答

sudo -i將登錄環境重置為目標用戶(在這種情況下為root)。主要是更改了HOME環境變量,這意味著已加載目標用戶的~/.bashrc

因此,gksu類似於sudo -i,因為它將$HOME切換到了根用戶。

第三種回答

這不是一個真正的答案,但可能會引起一些興趣……我開始對這些su命令的執行情況有所了解,但我還不很清楚……我確實使用了gksu …這對我來說是一段理解的旅程…並且我不了解gksu是否對konsolekate有效,或者我是否必須使用KDE變體kdesu ..

這是我剛剛嘗試過的一些測試的結果。

From user fred's terminal, launch gnome-terminal

su style   resulting            custom   (ls)   new file
command    prompt               prompt   home   ownership
---------  -------------------- -------  -----  ----------
sudo      .root@DT:~#           fred's   fred   root
gksu       root@DT:/home/fred#  root's   fred   root
sudo -i    root@DT:~#           root's   root   root
sudo -s   .root@DT:~#           fred's   fred   root

這些結果與Ubuntu Documentation Page不一致,它表示:

 This prevents files in your home directory becoming owned by root

更新:sudo和gksu調用的終端的XAUTHORITY env變量是不同的(如Ubuntu文檔頁麵所述)。

sudo    #### XAUTHORITY=/var/run/gdm/auth-for-fred-RsngLK/database
sudo -i #### XAUTHORITY=/var/run/gdm/auth-for-fred-RsngLK/database
sudo -s #### XAUTHORITY=/var/run/gdm/auth-for-fred-RsngLK/database
gksu    #### XAUTHORITY=/tmp/libgksu-xR2OGn/.Xauthority   

這表明gksu絕對與我在問題中提到的sudo -s命令不同…因此回答了我最原始的問題(以某種仍然晦澀的方式)…克裏斯的回答肯定使我對這個問題進行了認真的思考! …我需要一杯咖啡!

第四種回答

sudo用於命令行應用程序,gksu /gksudo用於圖形應用程序

參考資料

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