題:
如何在macO上禁用“無根”系統完整性保護(SIP)AKA [OS X]
bdnchr
2015-10-02 00:09:38 UTC
view on stackexchange narkive permalink

Apple已在OS X 10.11 El Capitan中引入了系統完整性保護,也稱為“無根”。我知道這是對惡意軟件進行一般保護的步驟,但是作為開發人員,我需要對其鎖定的某些文件具有寫訪問權。

如何禁用此保護?

即使您可以修復所有SIP方面,也有很多條目要記住-請記住,通過破壞系統,您正在構建的東西可能無法在客戶端計算機上運行,而SIP已打開,並且用戶將不接受將其關閉
@Motti Shneor-但是,在某些情況下,僅為了具有開發目的而具有安裝某些SDK的寫訪問權限,就需要關閉此功能。這將不需要客戶端執行相同的操作。
我來自unix的背景,試圖了解無根的邏輯:是因為計算機最有可能是單用戶計算機,所以所有內容都將安裝在用戶主目錄中,因此無需弄亂系統目錄例如/ usr / share / vim /。
六 答案:
Mike Scott
2015-10-02 00:16:41 UTC
view on stackexchange narkive permalink

Apple的文檔涵蓋了禁用SIP,關於Mac上的系統完整性保護配置系統完整性保護

關於lifehacker的文章.com列出了以下步驟:

  1. 通過重新啟動計算機並按住 Command kbd> + R ,直到Apple徽標出現在屏幕上。
  2. 單擊“實用程序”>“終端”。
  3. 在“終端”窗口中,鍵入 csrutil disable ,然後按輸入 kbd>。
  4. 重新啟動Mac。
  5. ol>

您可以通過發出以下來驗證文件或文件夾是否受到限制ls 命令使用大寫字母O(而不是零0)來修改長列表標誌:

  ls -lO / System / usr  

查找受限文本以指示在何處實施SIP。

默認情況下(= SIP已啟用),以下文件夾受到限制(請參閱 Apple支持頁面):

  / System / usr / bin預先裝有OS X  

...的/ sbinApps和以下文件夾是免費的:

  / Applications / Library / usr / local  
我從運行`ls -lO / usr / local`看到沒有被標記為受限。我也遞歸地`/ usr / local /`。但是我一直看到root擁有`/ usr / local / bin`和`/ usr / local / share`的所有權,這會影響自製程序。這也是SIP的工作嗎?
-1
@patrix謝謝。我仍然很好奇,因為“ / usr / local”不受“限制”,並由我“每日”發行。仍然每天我仍會看到root擁有的相同2個文件夾。如果發現罪魁禍首,我將拖曳控制台並進行更新。
附帶說明:如果您想重新啟用SIP,請遵循相同的說明,將`csrutil disable`替換為`csrutil enable`。
@SaxDaddy您是否正在使用Sophos Anti-Virus?Sophos存在一個已知問題,它會更改這些目錄的權限。根據[其社區論壇上的主題](https://community.sophos.com/products/free-antivirus-tools-for-desktops/f/17/t/10029),應在更新後解決此問題快出來了”。
@NDGeek: +1:太好了,謝謝!您正確調用了它。而且我看到SAV 9.4.1(發行於18nov15)解決了該問題。我已經安裝了該版本,並確認`/ usr / local`現在已經正確設置了權限。
@SaxDaddy很高興知道這是您的問題,並且此更新已解決了該問題!我所在的公司網絡在本地託管更新,因此我還在等待:-/
這為我節省了一天...在VMWARE錯誤上進行搜索沒有發現任何問題
這工作得很好。謝謝。知道非常有用。
El Capitan 10.11.6上的ls沒有-O選項。在此OS版本下等效的是什麼?[我檢查了-我使用O而不是零。]
@andro -O標誌_does_在10.11.6中仍然有效。如果對您不起作用,那是一個單獨的問題,您應該提出一個新問題。
@Mike斯科特(Scott)感謝您吸引我。我不知道使用/ usr / local / bin / ls(GNU coreutils)而不是/ bin / ls。這就是解釋。
只需添加,請確保使用頂層目錄,例如`ll -O / usr`,而不是`ll -O / usr / local`。
要確認已禁用SIP,請運行`csrutil status`。
Rich Trouton
2015-10-06 23:26:55 UTC
view on stackexchange narkive permalink

可以通過引導到 Recovery HD 並運行以下命令來禁用SIP:

  csrutil disable  

enter image description here

通過向 csrutil enable 命令添加一個或多個標誌,也可以啟用SIP保護並有選擇地禁用其某些方面。所有這些都需要從Recovery中啟動才能進行設置:

啟用SIP並允許安裝未簽名的內核擴展

  csrutil enable --without kext  

enter image description here

啟用SIP並禁用文件系統保護

  csrutil enable --without fs  

enter image description here

啟用SIP並禁用調試限制

  csrutil enable-無需調試 

enter image description here

啟用SIP並禁用DTrace限制

  csrutil enable-無dtrace  

enter image description here

啟用SIP並禁用寫入NVRAM的限制

  csrutil enable –without nvram  

enter image description here

我也有一個帖子,提供有關SIP的更多信息:

系統完整性保護–為Apple的安全模型增加了另一層

多麼令人歡迎的豐富知識。我可能必須加倍享受這筆賞金:-)
我收到一個錯誤:`csrutil:無法修改系統完整性配置。需要從Recovery OS執行此工具。
@IgorGanapolsky閱讀答案。**'_通過啟動到恢復HD禁用SIP _'**。
LаngLаngС
2017-09-14 04:23:41 UTC
view on stackexchange narkive permalink

如果目標是實際上只是禁用系統完整性保護,則按照其他答案此處先前建議的方式通過啟動時的 Command kbd> + r kbd>引導到Recovery HD分區,not最快的方法。

您可以將單用戶模式啟動與恢復高清啟動結合在一起,而沒有公開的啟動鍵組合:

這使您僅處於此direct所需的最低限度的最低環境中。

user260467
2017-03-15 10:16:09 UTC
view on stackexchange narkive permalink

修改 / etc / paths 以便將 / usr / local / bin 放在 usr / bin 之前是比較安全的。這樣,您可以在 / usr / local / bin 中完成開發工作,而不必禁用SIP。

自El Capitan以來,

操作系統的干淨安裝已經以此方式訂購了 / etc / paths ,但是,如果要從優勝美地或更早的版本升級操作系統,則必須手動修改路徑順序。

@iconoclast在El Capitan之前,一個常見的約定是將程序安裝到`usr / bin`。由於SIP現在可以阻止這種情況,因此應將程序安裝到“ usr / local / bin”,不受SIP的限制。通過將“ usr / local / bin”放在首位,用戶可以運行程序,而不必鍵入程序的絕對路徑。這有意義嗎?您是否對其他事情感到困惑?
我一直都知道將任何東西放在`/ usr / bin`中是一種非常糟糕的做法...但是我想我應該問的是“這如何回答OP的問題?”我最初以某種方式假設它_did_,而我只是沒有建立連接。但是現在我非常懷疑它是否有任何联系。
@iconoclast我認為不向開發人員提及他們確實不應該僅僅為了開發應用程序而禁用SIP是不負責任的。
m_cuffa
2015-10-31 17:02:11 UTC
view on stackexchange narkive permalink

如果僅需要訪問/ usr / local,請看此頁面: http://web.archive.org/web/20160117204214/https://github.com/Homebrew/homebrew/blob/master/share/doc/homebrew/El_Capitan_and_Homebrew.md

該想法是使用 csrutil disable 臨時 禁用SIP,添加 / usr / local ,使用chflags將目錄設置為非限制

  sudo mkdir / usr / local && sudo chflags norestricted / usr / local && sudo chown-R $ {whoami):admin / usr / local  

,然後使用 csrutil enable 重新啟用SIP。

如果 / usr / local 在升級時已經存在,因此甚至不需要上述操作。您可以簡單地運行

  sudo chown -R $(whoami):admin / usr / local  
我不斷收到錯誤消息:“只讀文件系統”
該鏈接無效:404錯誤。
修復了死鏈接。
kenorb
2016-08-05 20:34:43 UTC
view on stackexchange narkive permalink

如果您無法進入恢復分區來運行 csrutil disable (以禁用 SIP),請嘗試使用設置引導參數> nvram 命令,例如

  sudo nvram boot-args =“ rootless = 0”
 

但是,如果您遇到以下錯誤:

nvram:錯誤設置變量-'boot-args':(iokit / common)不允許

然後它將不起作用。您仍然需要啟動它的恢復/安全模式。

請參閱:

nvram:錯誤設置變量-'boot-args':(iokit / common)不允許
-1


該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...