当前位置: 首页>>技术教程>>正文


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/article/10144.html,未经允许,请勿转载。