答案1
这不是一个真正的错误,您仍然可以写入该文件。
nano
正在测试文件是否设置了u+w
、g+w
或o+w
权限位。如果这些位均未设置,则表示系统上无人被明确授予该文件的写入权限。但是,root 用户(您可能已使用 提升为 root 用户sudo
)可以否决此权限,并且可以隐式写入任何文件。
换句话说,该警告的意思是:由于您是 root 用户,因此您可以写入此文件,但从技术上讲,任何用户都没有该文件的写入权限。
新的行为源自于提交的增强请求错误 #58685解释理由:
目前 nano 可以顺利地写入具有权限 444 [ ] 的文件
r--r--r--
。通常,此类文件出于某种原因都是只读的,如果能提示用户并询问他们是否真的要这样做就好了。
为了回答这个问题,我查阅了nano
gnu.org 上的代码. (如果你真的需要 Ubuntu 存储库中的确切代码,请查看发射台。)src/files.c
我发现了以下消息:
#elif defined(HAVE_GETEUID)
if (new_one && !(fileinfo.st_mode & (S_IWUSR|S_IWGRP|S_IWOTH)) &&
geteuid() == ROOT_UID)
statusline(ALERT, _("%s is meant to be read-only"), realname);
#endif
这些git blame
行指出我们提交180a53cc0:
文件:当所有写入位缺失时警告 root 用户
Root 可以全权读取不可读文件和写入不可写文件 - 文件系统不会阻止这种行为。因此,在打开只读文件时请提醒 Root。