如何以 root 身份在 GUI 文本编辑器中编辑文件?

如何以 root 身份在 GUI 文本编辑器中编辑文件?

这一次,我需要编辑一些只能由 root 编辑的文件。

我非常希望在 GUI 文本编辑器中完成此操作,而不是使用 nano 或 vi 等命令行工具。是的,使用其中任何一个或类似的工具进行编辑都是完全可能的,我只是对此选项不满意,因为与使用 kate 或 gedit 相比,它不方便(个人意见;如果您有相反的意见,那完全没问题,但我坚持我的观点)。

话虽如此,我并不想用核选项完全损害安全性xhost si:localuser:root。有没有折衷的解决方案(比如 sudo,不幸的是,它在运行 GUI 时被故意削弱了)?

答案1

1. admin:// URI

在 Ubuntu 中,使用图形编辑器以 root 身份编辑系统文件的官方方法是使用 URI admin://。例如,要编辑,请在终端上按+或/etc/fstab后在出现的运行对话框中发出以下命令:AltF2

gedit admin:///etc/fstab

在较旧的 Ubuntu 版本(20.10 之前)中,首次执行此操作时,您需要连续两次输入用户密码。此问题已在 20.10 中修复。

当然,您的用户需要属于 root 组才能编辑系统文件。

2. 使用sudoedit

对于任何桌面环境和任何编辑器来说,一种有效的方法是使用sudoedit。设置 SUDO_EDITOR 环境变量以指向图形编辑器的二进制文件,例如:export SUDO_EDITOR="/usr/bin/gedit"。然后,您可以使用命令sudoedit <file>sudo -e <file>在图形编辑器中打开系统文件。与 admin:// URI 的方式非常相似,这将创建一个临时副本,您可以以普通用户身份对其进行编辑。关闭编辑器后,修改后的临时副本将复制回系统文件。

这实际上可以组合在一个命令中:

env SUDO_EDITOR="/usr/bin/gedit" sudoedit <file>

因此,只有当您明确想要使用图形编辑器时,环境才会改变。您可以创建一个别名或创建一个小脚本,使用单个命令在图形编辑器中编辑系统文本文件。

3. 不鼓励:使用pkexec

这两个选项在任何时候都不会以 root 身份运行图形编辑器,这是首选。不过,可以使用 以 root 身份运行图形编辑器pkexec。您可以安装 PolicyKit 文件,但你也可以使用一些环境变量来运行它。对于nautilus用户,该软件包nautilus-admin会为 gedit 安装一个 PolicyKit 文件,并在 中提供右键单击菜单选项,nautilus以便使用 root 权限启动 中的文本文件gedit。但是,根据 的说法,不鼓励使用以下选项(以 root 身份运行图形应用程序)man pkexec

因此,由于未设置 $DISPLAY 和 $XAUTHORITY 环境变量,pkexec 将不允许您以其他用户身份运行 X11 应用程序。如果操作上的 org.freedesktop.policykit.exec.allow_gui 注释设置为非空值,则这两个变量将被保留;但不鼓励这样做,并且只应将其用于旧版程序。

答案2

以下命令有效,无需安装任何东西:

pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY gedit <filename>

为了简化操作,您可以通过将以下内容放入文件中来创建别名~/.bash_aliases

alias editroot='pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY gedit'

然后(在新的终端中,为了重新阅读~/.bashrc)您可以使用以下命令:

editroot <filename>

相关内容