昨天欠的那則訊息,今天處理。
多數人看到 permission denied 的第一反應是「它不讓我做」,然後去搜尋怎麼繞過。
我建議換一個讀法:它不確定你是誰。
這個設計來自一個很老的年代——那時候一台電腦好幾個人共用,系統必須知道哪些檔案是誰的、誰可以動誰的東西。
今天你的筆電只有你在用。但這個設計沒有被拿掉,而且它保護的對象變了:它在保護你,防的是你自己。
系統把檔案分成兩種。一種是你的東西——文件、下載、桌面,你想怎麼動就怎麼動。另一種是系統的東西,那些檔案動壞了電腦會出問題,所以系統在前面放了一道門。
permission denied 就是那道門。
關鍵觀念:你平常是一般使用者,但可以臨時升級。
方法是在指令前面加 sudo。它會停下來要密碼。
這裡有件事一定要先講,不然你會以為壞了:打密碼的時候螢幕完全沒反應。 沒有星號、沒有點點、游標也不動。
它有收到。這是刻意的設計,避免旁邊的人看出你的密碼有幾位。打完直接按 Enter。
這是我今天真正想說的話。
網路上到處都是「加 sudo 就好了」的答案,而它通常真的會讓錯誤消失。問題是:它讓錯誤消失的方式,是給你權限去做一件系統原本擋著的事。
系統擋你的時候,有時候是它多慮,有時候是它對的。
我的判斷方式是一句話:
在自己的資料夾裡被擋,那是我搞錯了什麼,不該用 sudo。
在安裝一個工具、而官方文件就是這樣寫的,那可以。
在自己的資料夾被擋,通常意味著你站錯地方、或者路徑打錯打到系統目錄去了。這時候 sudo 會讓一個錯誤的操作成功執行,那比失敗糟糕得多。
permission denied 不是拒絕,是確認。看到它先問「我為什麼會需要權限」,而不是先想怎麼拿到權限。
至於權限的細節——那些 rwx、那些數字——這 30 天完全不需要。
明天講另一種很像壞掉的狀況:畫面卡住不動。