sudo 与 gksudo。区别?

one*_*eat 37 linux sudo

有什么区别sudogksudo

Vdr*_*gon 31

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


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

  1. 尽管这两个命令确实是代表sudo,但使用的 UI 并不是这两个命令的唯一区别。
  2. 运行 GUI 程序并不是您应该使用 gk/kdesudo 的唯一情况,相反,当您无法确定该命令是否会创建/写入文件到您的主目录(HOME环境变量指向的主目录)时,您应该使用 gk/kdesudosudo命令在某些系统和情况下)。 并非所有 GUI 应用程序都会写入您的主目录,也并非所有 CLI 应用程序都不会,因此命令的类型不是关键点。
  3. 仍然可以使用sudo命令以 root 用户身份启动 GUI 应用程序(以查看应用程序的控制台输出为例),但是您需要正确处理HOME(以及其他诸如XAUTHORITY, DISPLAY, input-method-related-stuff 等)环境变量,以便启动的应用程序不会失败、失去功能或做非常糟糕的事情。以下是我目前的使用建议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)联机帮助页了解更多信息。

  • 似乎比获得所有选票的解释要好得多。更彻底,更正确。甚至 OP 也回答“仅此而已?” 得到所有选票的答案。 (2认同)

Ign*_*ams 27

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

  • gksu(do) 也有自己的配置,用于将哪些环境变量传递给孩子,与 su(do) 自己的分开。例如,如果您的 sudoers 配置指定了 !keep_env,则缺少 $DISPLAY 可能会阻止图形应用程序运行,但 gksudo 应该可以工作。您可以在 http://git.debian.org/?p=users/kov/gksu-polkit.git;a=blob;f=common/gksu-environment.vala 或 http://live.gnome 找到一些详细信息.org/gksu 。 (6认同)
  • 我想强调一点,这_不是_关键的区别,这个答案对新手有很大的误导性。这里解释了主要区别:http://askubuntu.com/a/11766/81034 和下面的答案(@johnywhy 链接到)更进一步,为此添加了一些细微差别。请阅读 askubuntu 问题,而不是依赖这个误导性的答案。 (4认同)
  • 下面的答案似乎要好得多 http://superuser.com/a/726249/112542 (3认同)