AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1162608
Accepted
shinobody
shinobody
Asked: 2019-08-01 23:54:22 +0800 CST2019-08-01 23:54:22 +0800 CST 2019-08-01 23:54:22 +0800 CST

使用 gedit 使用 'sudo -H gedit' 编辑系统文件时会出现任何问题吗?

  • 772

我对 Ubuntu 比较陌生,我注意到在这个网站的答案中,当人们建议编辑系统文件时,他们给出的命令总是sudo nanoor sudo vi。因为我不喜欢使用基于终端的文本编辑器,所以我通常使用

sudo -H gedit

相反,到目前为止它工作得很好。

使用编辑系统文件是否有任何问题,gedit或者文本编辑器的选择完全取决于个人喜好?编辑这些文件时我应该记住什么(如编码)?

command-line gedit sudo
  • 2 2 个回答
  • 1712 Views

2 个回答

  • Voted
  1. Best Answer
    Eliah Kagan
    2019-08-02T03:44:48+08:002019-08-02T03:44:48+08:00

    只要您正确运行它,这取决于您的偏好。

    除了功能上的差异之外,您使用的文本编辑器确实几乎是您的偏好。即使您的文本编辑器是像Gedit这样的图形程序也是如此。这并不是说没有充分的理由nano并且vim经常被推荐。基于终端的文本编辑器,例如vim(或至少一个vi命令),nano即使没有 GUI,甚至在大多数非常小的和损坏的系统上也可以使用;他们背后有一些传统(如果你偏爱那种东西);它们可以在执行其他任务的同一终端中运行;它们自动集成到终端多路复用器用户的工作流程中;他们比任何人都更有可能获得特定的图形文本编辑器,甚至是 Gedit,甚至在 Ubuntu(有多种风格)上也是如此。

    那不是全部。如果要编辑系统文件,一种方法是以 root 身份运行编辑器。这不是唯一的方法,并且有一些反对它的论据(见下文),但它是一种常见的方法。如果您采用这种方法并使用图形程序作为您的编辑器,那么您需要注意以root 的主目录而不是您自己的方式运行它,这会增加另一层麻烦和复杂性。但是你已经在这样做了;你在跑步,这是合理的方式之一。尽管如此,这种复杂性是人们倾向于建议使用非图形编辑器的另一个原因。$HOMEsudo -H gedit

    图形程序通常比非图形程序更复杂。以 root 身份运行更多的东西通常是不好的,因为有更多的方式可能出错,包括由于可能的错误,包括意外。(不过,非图形文本编辑器vim也相当复杂,通常配置为运行大量外部程序来执行各种任务。)

    除了以 root 身份运行编辑器之外,另一种通用方法是编辑编辑器即使在以您的(非 root)用户身份运行时也能够修改的文件,以便对文件的更改传播到您希望的 root 拥有的文件改变。这听起来很抽象,因为细节差异很大。以下是两种主要的具体方法。

    sudoedit

    一种相当长期的方法是sudoedit(记录在与 相同的手册页中sudo)。默认情况下,sudoedit使用默认的文本编辑器,它通常不是——也不应该是——图形程序。SUDO_EDITOR但是您可以通过、VISUAL或EDITOR 环境变量告诉它使用任何编辑器,它按该顺序查询。因此,您可以运行:

    VISUAL=gedit sudoedit filename

    替换filename为文件的相对或绝对路径。

    这会生成您要编辑的文件的临时副本。副本归您所有,而不是 root(或任何原始所有者)所有。它会打开文本编辑器,您可以编辑临时副本。当您关闭文本编辑器时,sudoedit检查您是否确实进行了更改。如果您这样做了,它会将修改后的临时副本复制回原始副本。

    虽然sudoedit适用于图形编辑器,但它对于基于终端的编辑器也很有用。在这两种情况下,文本编辑器都以您的身份运行,因此它具有您的配置,并且您在其中执行的其他操作(而不是对该文件所做的修改)由您执行,这为防止某些类型的错误提供了一些保护。

    如果您愿意,可以永久设置其中一个环境变量。SUDO_EDITOR也许是最好的,因为它用于更少的其他事情。但是,如果您将其设置为gedit,请记住,当没有可用的 GUI 时,诸如此类的命令将不起作用,通常(尽管并非总是)在虚拟控制台或通过SSH的情况下。sudoedit filename

    GVFS 管理后台

    另一种较新的方法是通过其 GVFSadmin://路径而不是其传统的 Unix 样式路径打开文件。感谢 pomsky 教我这个。就像有用于编辑文件的 GVFS 路径一样,在其他方面,这些路径并不便于编辑——例如,因为它们位于您通过 SSH 连接的远程计算机上——GVFS 支持admin://用于编辑文件的路径你不拥有。

    这在概念上类似于sudoedit您以自己的身份运行编辑器,并且编辑器看到的文件是允许编辑的。尝试打开文件需要您进行身份验证;这不是规避通常的安全限制的神奇方法。

    gedit admin:///path/to/filename

    在那里,/path/to/filename必须是文件的绝对路径,以 . 开头/。所以后面有三个/字符admin:。

    编码和其他理论上受编辑器配置影响的东西

    文件的编码不受您使用的编辑器是否是图形的影响。一些编辑器,例如vim,甚至可以以图形方式(gvim命令)或非图形方式(vim命令)进行操作。关于编码的问题的简单答案是您不必担心这一点。这与事实非常接近,您真的不必阅读此答案的其余部分。

    在当前(和过去)的 Ubuntu 版本中,命令喜欢sudo nano并sudo vim以 root 身份运行这些编辑器,但$HOME仍设置为您的主目录。这意味着编辑器将默认使用您的配置而不是 root 的配置。如果您对这些编辑器的配置(或在他们运行以执行某些工作的程序中,例如git)有关于编码或行尾的内容,则会遵循它。,那不会发生。sudo -H editor

    有些人对编辑器使用bare sudo(即不带-i或-H)是因为他们想要那样。但实际上,你应该三思而后行。您不仅可以使用类似的方法更干净地实现该目标sudoedit,而且还有类似sudo nano和命令的其他缺点sudo vim:

    • 如果您的编辑器配置导致运行某些内容,则以 root 身份运行。对于像 等复杂的编辑器vim,这可能会导致相当多的非平凡代码以 root 身份运行。如上所述,以 root 身份运行的代码较少通常是好的,这是反对以 root 身份运行图形编辑器的论据之一。

      如果您的vim配置有许多插件——例如,在您键入源代码时对源代码执行静态分析——而 root 没有,则以 root 身份运行的东西比. (甚至更少以 root 身份运行,但您的插件仍然可以工作!)这与您的编辑器是否图形化是分开的。sudo -H vim filenamesudo vim filenameVISUAL=vim sudoedit filename

    • 如果您的编辑器配置被破坏并且使您无法轻松编辑文件,那么修复它可能会更加麻烦,因为它也适用于 root。这只是一个麻烦,而不是一个难以解决的问题。

    • 类似的命令与(不明智的!)命令sudo vim有一些sudo gedit相同的问题。 如果您vim以 root 身份运行编辑器但没有重置$HOME(如sudo -H并且sudo -i会这样做),并且它会为自己创建配置文件,这些配置文件将驻留在您的主目录中,但它们将归 root 所有,并且您的配置可能会有些损坏当您稍后以自己的身份运行编辑器时。

      好吧,这听起来很像那个问题!它没有图形应用程序那么重要的原因是编辑器通常仍然启动,错误消息通常更容易理解,您通常可以更容易地找出哪些特定文件受到影响,并且损坏通常仅限于那一个程序。(图形程序在更多地方使用配置文件。)此外,与图形编辑器不同,只是随便使用文本编辑器并且不故意更改其配置的用户不太可能遇到此问题。

    同样,您可以使用自己的用户帐户的编辑器配置,同时通过使用sudoedit或从桌面正常启动编辑器但通过admin://路径访问文件来避免权限问题。

    sudo最后,请注意,实际上计划在未来的 Ubuntu 版本中更改何时-H或通过的上述行为-i(就像多年前在大多数使用sudo. Ubuntu 19.10 中的行为已经改变,这是撰写本文时的开发版本。

    • 10
  2. pLumo
    2019-08-02T00:02:39+08:002019-08-02T00:02:39+08:00

    回答您的问题:通常,使用 GUI 编辑器不会成为问题,gedit因为对于大文件来说速度非常慢。

    但对于 GUI 程序,您将使用pkexecorgksu代替sudo. 您可能需要先配置pkexec它才能工作。

    pkexec gedit
    

    或者对于较旧的 Ubuntu 版本(例如 16.04),您可以使用:

    gksu gedit
    

    (尽管您可能会尝试更好的 GUI 编辑器,例如geany;-))

    • 3

相关问题

  • 如何从命令行刻录双层 dvd iso

  • 如何从命令行判断机器是否需要重新启动?

  • Gedit 中是否支持拆分窗格?

  • 文件权限如何工作?文件权限用户和组

  • 如何在 Vim 中启用全彩支持?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve