Unix/Linux 系統中的 Operation Not Permitted 問題
多次在 Mac 使用過程中遇到 Operation Not Permitted 問題,之前都是略過,今天好好摸索了一把,搞明白了道理,記錄下來。
好幾次整理移動硬盤數據的時候,都遇到了 Operation Not Permitted 問題,文件移動不了,也刪除不掉,第一次遇到沒理會,第二次是打開虛擬機,在 Windows 中操作這些問題文件,今天又遇到了,決定消滅它。
OS X EI Capitan 的 SIP
Apple 在 OS X 10.11 以后的版本中默認啟動了一項系統保護程序,叫做 System Integrity Protection,也被喚作 rootless(寓意讓 root 弱一點),該程序意在保護電腦不被惡意程序攻擊,但是對于我們這群程序員,很多保護是多余的,甚至給我們帶來了很多麻煩。
SIP 會鎖定幾個系統文件目錄:
/System
/sbin
/usr (/usr/local 除外)
在 SIP 的保護下,部分軟件、功能、腳本都會失效,我們可以通過如下步驟關閉 SIP:
- 重啟電腦,按下 Command + R 直到聽到開機聲音,此時電腦會進入恢復模式(Recovery Mode)
- 當 OSX 工具出現在屏幕中時,下拉工具(Utilities)菜單,選擇終端(Terminal)
- 鍵入 csrutil disable ,回車
- 電腦重啟后,SIP 就關閉了
恢復 SIP 的方式同上,只不過終端中鍵入 csrutil enable 。通過 csrutil status 可以檢測系統當前 SIP 的啟動狀態:
$ csrutil status
System Integrity Protection status: enabled.
Linux 下的 file flags
可能你也遇到過在 Linux 下刪除文件報錯:
root@ubuntu:/home/barret/work# rm -f 1.md
rm: cannot remove ‘1.md’: Operation not permitted
這個時候可以通過 lsattr 命令看看該文件是否被打了 flags:
root@ubuntu:/home/barret/work# lsattr 1.md
----i--------e-- ./1.md
如果文件上存在 i 標記,那肯定是刪不掉的,同樣這個文件也不能被編輯。可以進入 root 模式,去除這個標記:
root@ubuntu:/home/barret/work# chattr -i 1.md
給保護文件添加標記的方式:
root@ubuntu:/home/barret/work# chattr +i 1.md
也比較簡單。
小結
文本算是一個經驗性的小科普,希望對你有幫助。
來自: http://www.barretlee.com/blog/2016/04/06/operation-not-permitted-problem-in-linux-or-unix-system/
本文由用戶 bch8 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!