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

Pet*_*r.O 28 command-line sudo gksu

sudo cmdand之间的区别,和 用and启动 shellgksu cmd的区别一样吗?
sudo -isudo -s

... 或者换一种说法,
sudo cmd 一样sudo -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).
Run Code Online (Sandbox Code Playgroud)

“AFAICT” doen't真的给了我充分的信心,没有什么更多的东西。


(..一个迟来的更新:我今天(2 个月后)测试了他的评论:
“这可以防止你的主目录中的文件被 root 拥有。”
我通过 sudo/gksu 创建的所有文件都归“ root ”所有,并且该组是“”。)


我已经阅读了部分内容info sudo并注意到-i并且-s 似乎正在做与AFAICT环境问题相同的事情......
但我遇到了过载......所以我在这里问了我的问题。

PS .. 我的问题不是关于 sudogksu
.. 它更多的是关于:gksu是否与sudo -s
..相同,如果不是,它们有什么不同?

小智 18

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

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

  • 我终于明白你所说的“图形前端”是什么意思了。我总是使用终端来运行 sudo/gksu ......但本着蛮力尝试我能想到的一切的精神,我尝试通过 Alt+F2 运行 `sudo` 和 `gksu`......宾果!.. `sudo` 消失在虚空中,但 `gksu` 迎难而上,向我展示了(传奇的)`graphical forntend` ......它与 **Synaptic Package Manager** 出现的对话框相同等等... (2认同)

Kee*_*ook 10

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

gksu因此,就像sudo -i切换$HOMEroot用户一样。


Pet*_*r.O 5

这不是一个真正的答案,但它可能会引起一些兴趣......
我开始了解这些 su 命令的情况,
但我还没有完全了解......我确实使用gksu. .. 这对我来说更像是一次理解之旅......我不知道是否gksukonsole或有效kate,或者我必须使用 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
Run Code Online (Sandbox Code Playgroud)

这些结果与Ubuntu 文档页面不一致,它说:

 This prevents files in your home directory becoming owned by root
Run Code Online (Sandbox Code Playgroud)

更新:sudogksu调用终端的 XAUTHORITYenv变量不同(如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   
Run Code Online (Sandbox Code Playgroud)

这表明这gksu绝对与sudo -s我在问题中提到的命令不同......因此回答了我最初的问题(以某种仍然模糊的方式)......克里斯的回答肯定让我认真思考这个问题!......我需要一杯咖啡!!