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


47

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

我很确定自己是root用户,但是如何确定?如果我是root用户,该如何解决?

Answers:


42

您正在使用哪个文本编辑器?如果您是root用户并且知道密码,请尝试(在终端中)执行以下任一操作:

  • sudoedit /etc/dhcp/dhcpd.config如果您使用的是基于终端的编辑器,例如nano或将ssh插入服务器。
  • gksudo <text editor here> /etc/dhcp/dhcpd.config 如果您使用的是基于GUI的编辑器,例如 gedit

无论哪种情况,您都需要在要求时首先提供您的root密码。

从Ubuntu 14.04开始,gksudo默认情况下未安装。您必须gksu从软件中心或通过安装软件包sudo apt-get install gksu来获取它。

在Ubuntu 17.10中,Wayland是默认设置,而不是传统的X服务器,并且以root身份运行图形编辑器很困难。请参阅为什么不与Wayland一起使用gksu / gksudo或使用sudo启动图形应用程序?有关详细信息。

在Ubuntu 18.04中,gksudo官方存储库中不提供该功能。使用sudo -H <text editor>替代,或admin://协议

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

15

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

  1. 点击Alt+ F2弹出运行对话框。
  2. 键入,gksudo后跟程序的可执行文件名称(可能与GUI显示的名称不同)。例如:

    gksudo gedit
    
  3. 命中Enter

10

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

在12.04中,您可以这样: alt+ f2gksudo在出现的框中输入如下内容:

F2对话

您将得到一个类似这样的框gedit,然后输入并单击ok

在“运行”对话框中输入gedit

点击Open

在gedit中打开标签

只需浏览到文件:

打开文件对话框

完成了

警告:有一个超级用户/ root用户是有原因的。这样一来,您就不会意外地将一些不好的东西或结构错误地放在重要的东西上。您应该格外小心,以root用户身份进行的任何编辑都是您要编辑的正确文件,并且语法完美。如果其他工具可用于编辑,建议使用那些工具。例如,使用visudo terminal命令而不是手动编辑/etc/sudoers

有些可能弄乱了的文件很容易从中恢复。其他的则相对复杂,或者您必须使用故障恢复控制台和许多命令行。

是的,恢复控制台命令行似乎比还要可怕。请注意。


您可能需要将此版本更新为13.04及更高版本。有关gksu / gksudo的某些事情已更改(不确定是否适用于您的答案)。
塞斯(Seth)

我的理解是sudo现在神奇地导出了DISPLAY环境变量,而gksu / gksudo已经消失或即将消失。我还没有检查。
RobotHumans 2014年

root如果使用将该文件设置为不可变,chattr或者有时如果该磁盘是只读的,则可以获取拒绝的权限。
Chai T. Rex

6

您可以通过几种不同的方式测试当前的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手册页中

具有“ i”属性的文件无法修改:无法删除或重命名,无法创建与此文件的链接,也不能向该文件写入数据。只有超级用户或拥有此CAP_LINUX_IMMUTABLE功能的进程才能设置或清除此属性。

您可以通过使用 lsattr

lsattr /etc/dhcp/dhcpd.config

如果确实是不可变的,则可以这样关闭它:

chattr -i /etc/dhcp/dhcpd.config

3

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

例如,要更改启动设置,请打开

admin:///etc/default/grub

如果您在使用Ubuntu 17.10使用默认韦兰,sudogksu为中老年答复中提到,这里将无法正常工作。


2

使用您喜欢的文本编辑器

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

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

相当于

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

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

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

  • 对于GEdit使用VISUAL='gedit -s'
  • 供凯特使用VISUAL='kate -n'

好处

  • 不需要其他和/或已弃用的应用程序。
  • 不需要更改安全策略,例如pkexec(您需要编辑文件…作为超级用户,此答案试图解决的确切问题)。
  • 不需要执行具有提升特权的潜在不安全应用程序。
  • 使用当前用户的应用程序配置,但会干扰配置文件的访问权限,例如sudo -Hetc。
  • 不会落在root看起来或行为可接受的用户的用户应用程序配置数据上。

缺点

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

1 EDITORSUDO_EDITOR也分别工作但优先级较低或较专业。有关详细信息,请参见手册页


0

为了安全起见,请备份cp /etc/dhcp/dhcpd.config /$HOME/dhcpd.config.backup 并运行gksu gedit /etc/dhcp/dhcpd.config

替换gedit为您选择的编辑器

您会收到这样的提示

密码提示

在此输入您的密码。

将打开一个新窗口,您可以在此处编辑配置。

万一出现问题,您可以从主文件夹中的备份中将其还原。

由于Linux处理权限的方式,您会获得“拒绝权限”。

任何东西的$HOME文件夹所属的用户,而几乎所有其他属于root。

/etc/dhcp/dhcpd.conf您尝试访问文件属于root,并且在大多数的文件/etc/默认情况下,出于安全考虑,属于根。

您仍然可以通过提升权限来编辑此文件。

为此,您可以采用多种方法:

  • 使用su代表切换用户。没有任何属性,它用作切换到root帐户的命令,但是您需要输入要切换到的用户的密码,并且由于默认情况下root在Ubuntu上没有密码(有效地禁用了root帐户) ,除非您为root设置了密码,否则这是行不通的,不建议这样做。

  • 使用sudo可以提高您对一个命令的许可。通常仅用于命令行应用程序,例如CLI文本编辑器(如vimnano

  • 使用gksu可以提高您对一个命令的许可,但是与sudo用于图形程序(如GUI文本编辑器)不同gedit。它使用图形化提示来方便输入密码。


0
sudo < editor > < filelocation >

例如:

sudo -H gedit etc/dhcp/dhcpd.config
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.