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

Mat*_*son 50 configuration permissions root

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

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

Kno*_*ube 44

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

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

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

在 Ubuntu 14.04 之后,gksudo默认不安装。您必须安装该gksu软件包(从软件中心或通过sudo apt-get install gksu)才能获得它。

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

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

gedit admin:///etc/dhcp/dhcpd.config
Run Code Online (Sandbox Code Playgroud)


Sco*_*nce 15

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

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

    gksudo gedit
    
    Run Code Online (Sandbox Code Playgroud)
  3. 击中Enter


Rob*_*ans 10

我想不出 root 会得到permission denied.

在 12.04 中,您可以这样做: alt+f2gksudo在如下所示的框中输入:

F2对话

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

在运行对话框中输入 gedit

点击Open

在 gedit 中打开选项卡

只需浏览到文件:

打开文件对话框

完毕

警告:有一个超级用户/root 是有原因的。这样你就不会不小心将一些不好的东西或错误的东西放在重要的东西上。您应该非常小心,无论您以 root 身份编辑的内容都是您想要编辑的正确文件,并且您的语法是完美的。如果有其他工具可用于编辑,建议使用这些工具。例如,使用visudo 终端命令而不是手动编辑/etc/sudoers.

一些可能被弄乱的文件很容易恢复。其他的则相对复杂,或者您必须使用恢复控制台和大量命令行。

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


pbr*_*pbr 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)
Run Code Online (Sandbox Code Playgroud)

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

chattr 手册页

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

您可以通过使用来了解 lsattr

lsattr /etc/dhcp/dhcpd.config
Run Code Online (Sandbox Code Playgroud)

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

chattr -i /etc/dhcp/dhcpd.config
Run Code Online (Sandbox Code Playgroud)