/etc/resolv.conf”E166:无法打开链接文件进行写入

/etc/resolv.conf”E166:无法打开链接文件进行写入

无法更新resolv.conf文件。

/etc/resolv.conf" E166: Can't open linked file for writing

Ubuntu 18.04.1

答案1

这是假设您正在询问一条vim错误消息(您没有指定从哪里收到错误消息)。

Vim 文档将 E166 报告为

E166 无法打开链接文件进行写入

您正在尝试写入无法覆盖的文件,并且该文件是一个链接(硬链接或符号链接)。如果包含链接或文件的目录可写,则可能仍然可以写入,但 Vim 现在不知道您是要删除链接并在其位置写入文件,还是要删除文件本身并在其位置写入新文件。如果您确实想以此名称写入文件,则必须手动删除链接或文件,或更改权限以便 Vim 可以覆盖。

http://vimdoc.sourceforge.net/htmldoc/message.html

guiverc@d960-ubu2:~$   stat /etc/resolv.conf 
  File: /etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf
  Size: 39          Blocks: 0          IO Block: 4096   symbolic link
Device: 801h/2049d  Inode: 130757      Links: 1
Access: (0777/lrwxrwxrwx)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2018-09-03 12:34:28.189468370 +1000
Modify: 2017-11-16 12:32:04.777265492 +1100
Change: 2017-11-16 12:32:04.777265492 +1100

stat的 /etc/resolv.conf 确认该文件是一个链接。

我可以愉快地写入该文件(使用sudo),因此您遇到的问题超出了您提供的内容。

答案2

如果/etc/resolv.conf是符号链接,则无法写入。如果要覆盖文件中的内容,请删除该文件,然后创建新文件

  1. 删除符号链接
sudo rm /etc/resolv.conf
  1. 写入新文件。例如
sudo echo "nameserver 8.8.8.8"  > /etc/resolv.conf

答案3

在我的情况下,当我通过 visudo打开resolv.conf文件时,它起作用了。如果文件尚不存在,它会创建一个。

$ sudo vi /etc/resolv.conf

答案4

我设法解决了这个问题。文件系统以(只读)方式挂载ro,并且用户没有 root 权限。

相关内容