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

我是一个全新的用户,所以我还不确定我的方式。 我想更改计算机的名称,所以我尝试在/etc/hostname编辑名称,但它是一个只读文件。 添加! 性格没有帮助。 我正在使用vim来编辑文件。

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

 sudo   

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

您也可以使用gksudo gedit

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

如果您正在编辑没有sudo的文件,并且需要 sudo才能保存,只需使用此vim命令:

 :w !sudo tee % 

感谢Beco博士 。 请注意,vim会注意到文件更改并询问您是否要(L)进行更改,请按L。

非常简短的答案:

如果您拥有该文件,则可以修改该文件(即使它是只读的)。

简答:

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

答案很长

假设您要将计算机名称从navid-Satellite-C50-D更改为navid-Satellite-C50-E ,请执行以下步骤:

  1. 以root用户身份登录:

     navid@navid-Satellite-C50-D:~$ sudo su - 
  2. 打开主机名:

     root@navid-Satellite-C50-D:~# vi /etc/hostname 
  3. 你会看到navid-Satellite-C50-D 。 按i进入插入模式,然后将其更改为navid-Satellite-C50-E 。 然后按Esc + + w + q + Enter保存并退出。

  4. 打开主机:

     root@navid-Satellite-C50-D:~# vi /etc/hosts 

    前2行看起来像这样:

     127.0.0.1 localhost 127.0.1.1 navid-Satellite-C50-D 
  5. 与您在步骤3中执行的操作类似,将计算机名称从navid-Satellite-C50-D更改为navid-Satellite-C50-E 。 然后保存并退出。

  6. 退出root用户:

     root@navid-Satellite-C50-D:~# exit 
  7. 保存所有未保存的工作并重新启动计算机:

     navid@navid-Satellite-C50-D:~$ reboot 
  8. 打开终端,您将看到您的计算机名称已成功更改! 🙂

     navid@navid-Satellite-C50-E:~$ 

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

也可以看看:

  • 为什么我可以修改只读文件?
 sudo -H gedit  

例如:

 sudo -H gedit /etc/environment 

sudo nano /etc/environment Ctrl + XCtrl + Y并按Enter键(对于nano)

您可能无权访问该文件以进行更改。

为了获得访问权限,您需要获得超级用户权限,即sudo

打开终端,输入:

 sudo -H gedit "your file name " 

如果您使用其他任何文本编辑器类型。

默认情况下,您只有将文件托管给root用户的权限,如下所示:

 -rw-r--r-- 1 root root 252 Dec 16 08:40 /etc/hosts 

因此,您必须使用sudo编辑它,否则您可以使用以下命令成为root

 sudo su - 

但是根本不建议这样做。

最安全的,建议您使用以下命令编辑文件

sudo vim / etc / hosts

然后在键盘上按“ Esc ”,然后输入“ :w! ”将更改写入hosts文件,然后agin键入“ :q ”或“ :q! ”,这应该可以帮到你。