问题描述
sudo cmd
和gksu cmd
之间的区别与使用sudo -i
和sudo -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
是否对konsole
或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 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用于图形应用程序