答案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。