SIP的保护范围包括下列路径:
- /System
- /usr
- /bin
- /sbin
- OSX的预装应用
第三方应用可以继续操作的目录包括:
- /Applications
- /Library
- /usr/local
但是任何对于安全性加强都意味着对灵活性的削弱。例如,在SIP保护下,类似proxychains-ng的程序无法再给受保护的目录下的程序添加网络钩子(hook)。
proxychains ng (new generation) - a preloader which hooks calls to sockets in dynamically linked programs and redirects it through one or more socks/http proxies.
一般来说,很多解决方案都建议关闭SIP功能(例如proxychains-ng的issue中给出的方法:# issue78)。不过这样也意味着丧失了SIP提供的保护功能。这篇文章给出了一个妥协的做法。在保留SIP的保护的同时,为保护目录下的程序应用proxychains-ng(其他类似的应用场景也可以使用这个办法)。这个解决方案的思路其实很简单:既然保护目录下的程序我们不能动,那么我们把保护目录下的程序复制一份到其他目录下运行就可以。
首先创建一个新的文件夹:
1 | mkdir ~/.unprotected_apps |
然后将这个路径添加到PATH
环境变量的头部:
1 | 可以添加到shell的配置文件中,如~/.bashrc或者~/.zshrc |
然后将需要添加钩子的应用复制到这个目录下就可以了,例如:
1 | cp $(which ssh) ~/usr/bin/ssh |