当前位置: 首页>>技术问答>>正文


如何获得编辑系统配置文件的权限?

, , ,

问题描述

我似乎无法在根系统中编辑和保存配置文件(例如:/etc/dhcp/dhcpd.config);它只是说”permission denied”或保存选项在文本编辑器中被阻止。

我很确定我是root用户,但我该如何确定?如果我是root用户,我该如何解决这个问题?

最佳解决办法

你使用哪个文本编辑器?如果您是root用户并且知道密码,请尝试(在终端中):

  • sudoedit /etc/dhcp/dhcpd.config如果您正在使用terminal-based编辑器(如nano)或正在ssh’ing到服务器。

  • gksudo <text editor here> /etc/dhcp/dhcpd.config如果您使用的是GUI-based编辑器,例如gedit

在任何一种情况下,您都需要在请求时首先提供root密码。

在Ubuntu 14.04及更高版本中,默认情况下不安装gksudo。您必须安装gksu软件包(从软件中心或通过sudo apt-get install gksu)才能获得它。

在Ubuntu 17.10中,Wayland是默认的而不是传统的X服务器,并且以root身份运行图形编辑器很困难。有关详细信息,请参阅Why don’t gksu/gksudo or launching a graphical application with sudo work with Wayland?

在Ubuntu 18.04中,gksudo在官方存储库中不可用。请改用sudo -H <text editor>admin://协议:

gedit admin:///etc/dhcp/dhcpd.config

次佳解决办法

如果您不想使用终端,则可以以root用户身份调用GUI程序(此示例适用于Gedit):

  1. 点击Alt + F2以显示“运行”对话框。

  2. 键入gksudo,后跟程序的可执行文件名(可能与GUI显示的名称不同)。例如:

    gksudo gedit
    
  3. 点击Enter

第三种解决办法

我想不出root会得到permission denied的情况。

在12.04你可以这样做:alt + f2并在如下所示的框中输入gksudo

permissions,configuration,root,ubuntu

你得到一个这样的盒子并输入gedit并点击ok

permissions,configuration,root,ubuntu

单击Open

permissions,configuration,root,ubuntu

只需浏览到该文件:

permissions,configuration,root,ubuntu

完成

警告:有一个super-user /root是有原因的。这样你就不会在错误的重要事情中不小心把坏事或结构放在外面。您应该非常小心,无论您以root身份编辑的是您要编辑的正确文件,并且您的语法都是完美的。如果有其他工具可供编辑,建议使用它们。例如,使用visudo terminal command而不是手动编辑/etc/sudoers

一些可能搞砸的文件很容易恢复。其他的相对复杂,或者您必须使用恢复控制台和许多命令行。

是的,恢复控制台命令行似乎比this更可怕。小心点

第四种办法

您可以通过几种不同的方式测试当前shell是否以root身份运行

~/ > whoami
paul
~/ > sudo whoami
root
~/ > id
uid=1000(paul) gid=1000(paul) groups=1000(devs),4(adm),20(dialout),24(cdrom),…
~/ > sudo id
uid=0(root) gid=0(root) group=0(root)

其他答案提供了升级到root权限的好方法,所以我不会重复这些。假设你是root用户而你仍然无法编辑文件/etc/dhcp/dhcpd.config – 那么很可能有人或某个程序使用chattr程序使文件不可变。

来自chattr manual page

A file with the ‘i’ attribute cannot be modified: it cannot be deleted or renamed, no link can be created to this file and no data can be written to the file. Only the superuser or a process possessing the CAP_LINUX_IMMUTABLE capability can set or clear this attribute.

您可以使用lsattr找到答案

lsattr /etc/dhcp/dhcpd.config

如果它确实是不可变的你可以这样关掉它:

chattr -i /etc/dhcp/dhcpd.config

第五种办法

如果您使用的是Ubuntu 17.04或更高版本,建议使用gvfs admin后端。只需将admin://添加到要在文本编辑器或文件应用程序等应用程序中打开的完整文件路径的前面。

例如,要更改引导设置,请打开

admin:///etc/default/grub

如果您使用Ubuntu 17.10和默认的Wayland,那么旧答案中提到的sudogksu将无效。

第六种办法

使用您喜欢的文本编辑器

您可以通过VISUAL环境变量1将sudo -e或其别名sudoedit与您喜欢的(图形!)文本编辑器一起使用:

VISUAL=gedit sudo -e /path/to/some-config-file.cfg

这相当于

VISUAL=gedit sudoedit /path/to/some-config-file.cfg

当然你可以使用你喜欢的任何其他编辑器,例如: G。 leafpadkatesubl

某些编辑器提供命令行选项以始终启动新实例,即使当前正在运行。由于sudoedit等待编辑器进程终止以将更改应用于已编辑的文件,因此如果您运行相同编辑器的其他实例,则可能需要执行以下操作:

  • 对于GEdit,请使用VISUAL='gedit -s'

  • 凯特使用VISUAL='kate -n'


Advantages

  • 不需要额外和/或已弃用的应用程序。

  • 不需要安全策略更改,如pkexec(您需要编辑文件…作为super-user,这个答案正在尝试解决的问题)。

  • 不需要使用提升的权限执行可能不安全的应用程序。

  • 使用当前用户的应用程序配置,但混乱配置文件访问权限,如sudo -H等。

  • 不会回退到root用户的用户应用程序配置数据,这些数据可能看起来也可能不合适。

Disadvantages

  • 你需要学习一个简短的新命令。


1 EDITORSUDO_EDITOR也可以工作,但优先级较低或者更专业。有关详细信息,请参阅manual page

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/1890.html,未经允许,请勿转载。