sudo和gksu之间的区别是否与sudo -i和sudo -s之间的区别相同?

sudo cmdgksu cmd之间的区别是否相同
sudo -isudo -s启动shell之间?

……或换一种方式,
sudo cmdsudo -i cmd相同吗?
gksu cmd一样sudo -s cmd

编辑:根据我在Ubuntu文档页面上读到的内容,它说:

 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 ”所有,该组是“ root ”。)


我已经阅读了部分info sudo并注意到-i-s 似乎AFAICT环境问题做同样的事情……
但我打了超载..所以我在这里问了我的问题。

PS ..我的问题不是关于sudo vs gksu
..更多的是: gksusudo -s相同
..如果没有,他们有什么不同?

gksu基本上是sudo的图形前端,它允许运行图形命令而无需运行X终端模拟器并直接使用su。 它实际上只是超级用户命令的GTK +外观。

因此,如果您想以root身份运行基于GUI的程序,则可以使用gksu cmd调用它,而不是sudo cmd ,它用于以root用户身份调用控制台程序。

sudo -i将登录环境重置为目标用户(在本例中为root )。 主要是, HOME环境变量被更改,这意味着加载了目标用户的~/.bashrc

因此, gksu就像sudo -i那样将$HOME切换到root用户。

这不是一个真正的答案,但它可能有一些兴趣……
我开始知道这些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文档页面不一致,它说:

  This prevents files in your home directory becoming owned by root 

更新: sudogksu调用的终端的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用于图形应用程序