如何编辑/ etc中的只读文件?

War*_*gan 23 vim permissions users read-only

我是一个全新的用户,所以我还不确定我对系统的了解。我想更改我的计算机名称,所以我尝试在 中编辑名称/etc/hostname,但它是一个只读文件。添加!角色没有帮助。我正在使用vim编辑文件。

tag*_*her 27

更改系统设置需要超级用户权限。从终端,做

sudo <editor> <filename>
Run Code Online (Sandbox Code Playgroud)

哪里可以是 vim 或 nano 或任何其他编辑器命令,并且是您需要编辑的命令。

您也可以使用gksudo gedit <filename>.

在任何一种情况下,系统都会提示您输入具有超级用户权限的用户的密码 - 在正常的 Ubuntu 安装中,这将是安装过程中创建的第一个用户。

  • 谢谢你!很有帮助! (2认同)

小智 17

如果您正在编辑一个没有 的文件sudo,并且您需要 sudo保存,只需使用以下 vim 命令:

:w !sudo tee %
Run Code Online (Sandbox Code Playgroud)

感谢贝乔博士。请注意,vim 会注意到文件更改并询问您是否要(L) 加载更改,按L


Pos*_*vid 7

非常简短的回答:

可以修改文件,如果你(即使它只读)拥有它。

简答:

即使您登录的用户(在本例中navid)具有管理权限,您也无法修改/etc/hostname,因为该root用户拥有该文件。因此,您应该以 root 用户身份登录。

长答案

假设您要将计算机名称从 更改oldNamenewName,以下是您应该遵循的步骤:

  1. 以 root 用户身份登录:

    navid@oldName:~$ sudo su -
    
    Run Code Online (Sandbox Code Playgroud)
  2. 打开主机名:

    root@oldName:~# vi /etc/hostname
    
    Run Code Online (Sandbox Code Playgroud)
  3. 你会看到oldName。按i进入插入模式,然后将其更改为newName。然后按 Esc+ :+ w+ q+Enter保存并退出。

  4. 打开主机:

    root@oldName:~# vi /etc/hosts
    
    Run Code Online (Sandbox Code Playgroud)

    前 2 行如下所示:

    127.0.0.1       localhost
    127.0.1.1       oldName
    
    Run Code Online (Sandbox Code Playgroud)
  5. 与您在步骤 3 中所做的类似,将计算机名称从 更改oldNamenewName。然后保存退出。

  6. 退出root用户:

    root@oldName:~# exit
    
    Run Code Online (Sandbox Code Playgroud)
  7. 保存所有未保存的工作并重新启动计算机:

    navid@oldName:~$ reboot
    
    Run Code Online (Sandbox Code Playgroud)
  8. 打开你的终端,你会看到你的电脑名已经成功修改了!:-)

    navid@newName:~$ 
    
    Run Code Online (Sandbox Code Playgroud)

注意:虽然您可以通过跳过第 4 步和第 5 步来实现您想要的结果,但我强烈建议您也这样做,以避免将来出现潜在的错误。

也可以看看:


归档时间:

查看次数:

381744 次

最近记录:

6 年,5 月 前