须藤vs gksudo。区别?


37

sudo和之间有什么区别gksudo


1
好问题。我现在正在学习Linux(您可以看到我还没有找到键盘布局)哈哈!
r0ca

Answers:


27

sudo在命令行中要求输入密码,并gksudo弹出一个对话框。


6
gksu(do)还具有自己的配置,该配置将哪些环境变量传递给子对象,与su(do)自己的环境变量分开。例如,如果您的sudoers配置指定!keep_env,则缺少$ DISPLAY可能会阻止图形应用程序运行,但是gksudo应该可以工作。您可以在git.debian.org/?p=users/kov/gksu-polkit.git;a=blob;f=common/…live.gnome.org/gksu中找到一些详细信息。
短暂

@ephemient因此,除了图形提示符外,还sudo -E等同于gksudo
isomorphismes


4
我想强调一点,这根本不是关键的区别,而且这个答案对新手来说是相当误导的。主要区别在这里进行了解释:askubuntu.com/a/11766/81034和下面的答案(与@johnywhy链接)在此基础上又进一步迈出了一步。请阅读askubuntu问题,而不要依靠这个误导性的答案。
sundar-恢复莫妮卡

31

gksudo是一个基于GTK的前端sudo(顺便说一句,kdesudo是一个基于Qt的前端),然而,它(默认)手柄多个环境变量(HOMEXAUTHORITY等)相比sudo从而作为根更安全使得运行命令。


据我所知,只有@Logics答案足够正确(@Ignacio Vazquez-Abrams的答案不完整)。这是尝试避免对@Davros @knitti答案/评论的说明(请在不需要时删除/编辑它们):

  1. 尽管这两个命令确实都可以表示sudo,但是使用的UI并不是两个命令的唯一区别。
  2. 当您应该使用gk / kdesudo时,并不是唯一运行GUI程序的情况,而是在无法确定命令是否将文件创建/写入主目录(HOME环境变量指向主目录)时,应使用gk / kdesudo。sudo命令在某些系统和情况下)。 并非所有的GUI应用程序都写入您的主目录,也不是所有的CLI应用程序都不会写入主目录,因此命令的类型不是重点。
  3. 还可以使用sudo命令来启动GUI应用程序的根目录(查看应用的控制台输出为例),但你需要处理HOME(和其他如XAUTHORITYDISPLAY输入法相关的,东西等)环境变量也是正确的所启动的应用程序不会失败,失去功能或做真正糟糕的事情。以下是我目前的使用建议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>
      • 这应该使<GUI program>在TTY终端中执行并显示在桌面环境中
  4. sudo命令的行为在所有系统上都不相同,可以通过visudo命令进行配置,请查看手册sudoers(5)页以获取更多信息。

2
似乎比获得所有选票的解释更好。更彻底,更正确。甚至OP回答说“就是全部吗?” 得到所有选票的答案。
约翰尼,为什么

2

使用常规sudo运行图形程序在极少数情况下会破坏某些文件的权限。为了安全起见,应使用gksudo(或适当的kdesudo)运行带有GUI的程序。我认为这确实是一个错误,尽管我听到gksudo理解X服务器变量的解释,而sudo可能不会导致问题。只是小费;如果您以root用户身份运行图形程序,则不必为每个要运行的程序打开一个终端,而是键入ALT-F2(同时按下alt和功能键2),然后在弹出的对话框中键入“ gksudo程序”,而不用引号和程序替换为您要运行的应用程序。


2

sudo以具有提升的特权的当前用户身份运行。在运行图形应用程序时,这可能会更改某些用户配置文件(与您的图形环境有关)的文件权限。您可能会发现在没有sudo的情况下再次运行这些应用程序时发生错误。

gksudo(在KDE下为kdesudo)以root用户身份运行应用程序,因此涉及的任何文件许可权都在root的文件上,而不是用户文件上。在没有gksudo / kdesudo的情况下再次运行这些应用程序将始终具有预期的行为。


0

当前答案不正确。根据Ubuntu RootSudo Wiki

“绝对不要使用普通的sudo以root身份启动图形应用程序。应该使用gksudo(在Kubuntu上为kdesudo)运行此类程序。gksudo设置HOME =〜root,并将.Xauthority复制到tmp目录。这可防止文件存放在主目录中目录由root拥有。(AFAICT,这是有关使用gksudo与sudo的启动过程的环境的所有特殊信息。”


2
还有其他四个答案;哪一个不正确?您的答案是否与Davros的答案基本相同?
fixer1234

我指的是标记为正确的答案。是的,Davros在说同样的话,但我添加了这个原因是因为他不包含指向源的链接。
eugene1832

1
更好的解决方案是建议对该答案进行编辑。改善答案很可能会被接受(+2个代表),而本质上重复一个答案则很可能会引起反对。
fixer1234
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.