Answers:
sudo
在命令行中要求输入密码,并gksudo
弹出一个对话框。
sudo -E
等同于gksudo
?
gksudo
是一个基于GTK的前端sudo
(顺便说一句,kdesudo
是一个基于Qt的前端),然而,它(默认)手柄多个环境变量(HOME
,XAUTHORITY
等)相比sudo
从而作为根更安全使得运行命令。
据我所知,只有@Logics答案足够正确(@Ignacio Vazquez-Abrams的答案不完整)。这是尝试避免对@Davros @knitti答案/评论的说明(请在不需要时删除/编辑它们):
sudo
,但是使用的UI并不是两个命令的唯一区别。 HOME
环境变量指向主目录)时,应使用gk / kdesudo。sudo
命令在某些系统和情况下)。 并非所有的GUI应用程序都写入您的主目录,也不是所有的CLI应用程序都不会写入主目录,因此命令的类型不是重点。 sudo
命令来启动GUI应用程序的根目录(查看应用的控制台输出为例),但你需要处理HOME
(和其他如XAUTHORITY
,DISPLAY
输入法相关的,东西等)环境变量也是正确的所启动的应用程序不会失败,失去功能或做真正糟糕的事情。以下是我目前的使用建议sudo
sudo -H <rest of the command>
sudo
第8节手册)该-H ( HOME )
选项要求安全策略将HOME
环境变量设置为密码数据库指定的目标用户的主目录(默认为root)。根据策略,这可能是默认行为。sudo
调用者的主目录中创建文件sudo -H DISPLAY=<a working X display name, usually :0> <rest of a GUI program command>
sudo
命令的行为在所有系统上都不相同,可以通过visudo
命令进行配置,请查看手册sudoers(5)
页以获取更多信息。当前答案不正确。根据Ubuntu RootSudo Wiki:
“绝对不要使用普通的sudo以root身份启动图形应用程序。应该使用gksudo(在Kubuntu上为kdesudo)运行此类程序。gksudo设置HOME =〜root,并将.Xauthority复制到tmp目录。这可防止文件存放在主目录中目录由root拥有。(AFAICT,这是有关使用gksudo与sudo的启动过程的环境的所有特殊信息。”