如何在/ 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
,请执行以下步骤:
-
以root用户身份登录:
navid@navid-Satellite-C50-D:~$ sudo su -
-
打开主机名:
root@navid-Satellite-C50-D:~# vi /etc/hostname
-
你会看到
navid-Satellite-C50-D
。 按i进入插入模式,然后将其更改为navid-Satellite-C50-E
。 然后按Esc + : + w + q + Enter保存并退出。 -
打开主机:
root@navid-Satellite-C50-D:~# vi /etc/hosts
前2行看起来像这样:
127.0.0.1 localhost 127.0.1.1 navid-Satellite-C50-D
-
与您在步骤3中执行的操作类似,将计算机名称从
navid-Satellite-C50-D
更改为navid-Satellite-C50-E
。 然后保存并退出。 -
退出root用户:
root@navid-Satellite-C50-D:~# exit
-
保存所有未保存的工作并重新启动计算机:
navid@navid-Satellite-C50-D:~$ reboot
-
打开终端,您将看到您的计算机名称已成功更改! 🙂
navid@navid-Satellite-C50-E:~$
注意:虽然您可以通过跳过步骤4和5来达到您想要的效果,但我强烈建议您也要这样做,以避免将来出现潜在错误。
也可以看看:
- 为什么我可以修改只读文件?
sudo -H gedit
例如:
sudo -H gedit /etc/environment
或sudo nano /etc/environment
Ctrl + X和Ctrl + 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! ”,这应该可以帮到你。