sudo和gksu之间的区别与sudo -i和sudo -s之间的区别一样吗?


26

之间的区别sudo cmdgksu cmd,一样的差异
开始与外壳之间sudo -isudo -s

...或者换句话说,
sudo cmd 一样的sudo -i cmd
,并gksu cmdsudo -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” doen't真的给了我充分的信心,没有什么更多的东西。


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


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

PS ..我的问题不是关于 sudo vs gksu
..而是关于:gksusudo -s是一样的
..如果不是,它们有何不同?

Answers:


16

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

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


1
我不知道graphical前端可能意味着什么……无论是通过sudo还是gksu启动GTK应用程序,它都运行得非常愉快……但是它确实在不同的环境中运行了Progam……(我会在我的问题中添加更多内容,以指出为什么我问这个问题...
Peter.O 2010年

2
我终于了解了您的意思graphical frontend。我总是用终端来运行须藤/ gksu ......但在强力的精神乱投医我能想到的,我试图运行sudo,并gksu通过Alt + F2 ...宾果!.. sudo消失在虚无之中,但是gksu到了场合并向我展示了(传奇人物)graphical forntend……这与Synaptic Package Manager等出现的对话框相同
Peter.O 2010年

在一个新的终端PS ..我只是试图gksu ..密码对话框弹出那里,太...我一定以前见过,但与密码(只)相关联,而不是事实,这是一个GUI对话框,从中终端命令...(“我明白了。”盲人说:)...谢谢...
Peter.O 2010年

。进一步跟进,在您的回答的刺激下,似乎gksu更改了XAUTHORITY文件夹,并且sudo没有...我不确定这是怎么回事,但这似乎很重要!...这解决了我的难题... (详细信息请参见下面的答案)
Peter.O 2010年

10

sudo -i将登录环境重置为目标用户(在这种情况下为root)。主要是HOME环境变量已更改,这意味着目标用户~/.bashrc已加载。

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


谢谢KC。对我来说(慢慢地,慢慢地)……开始变得有意义了,但是显然gksu通过创建XAUTHORITY的副本并从(?)开始工作,将gksu归为非常独立的类别sudo我提到的任何变体...意识到这就是Aha!对我而言,此刻...结果是:将gksu用于GUI应用程序!..但我还有一个未解决的杂项... gksu是否适用于GTK应用程序,还是在运行KDE GUI应用程序时使用gksu完全可以?
Peter.O 2010年

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

这些结果与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我在问题中提到的命令不同……因此(以某种仍然晦涩的方式)回答了我最原始的问题……而Chris的回答无疑使我对这个问题进行了认真的思考!...我需要一杯咖啡!


3

sudo用于命令行应用程序,gksu / gksudo用于图形应用程序


谢谢,我的问题可能和我对这个问题的最初理解一样不清楚……我主要是在试图找出导致必须同时拥有两个司令官的具体区别是什么。似乎主要的区别在于gksu从XAUTHORITY的临时副本工作的方式。.我不清楚为什么需要特别处理XAUTHORITY的细节,但是这是一个主要的区别于XAUTHORITY的行为sudo
Peter.O 2010年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.