OS X 10.11中Rootless的实现与解释以及关闭方法
来源:互联网 发布:123d for mac 编辑:程序博客网 时间:2024/06/05 02:11
为了解释OS X 10.11中引入的Rootless机制,我翻译了Quora用户Eldad Eilam的答案,原文链接见这里。
定义问题
Rootless讨论的前提是假定root账户是OS X(或者其他Unix系统)中对抗恶意程序保护操作系统的最后一道防线。意思是一个应用程序一旦获得了root账户权限,将会获得系统的无限的权限。就可以进行实时修改、修改磁盘、替换任何系统文件等。
目前,许多传统的Unix操作系统中,root账户都是被强密码保护着的。这里的问题在于大部分的OS X系统基本上是单用户系统,也就是不存在单独的root账户密码,root密码就是管理员账户的密码。简单来说,苹果通过以下途径来获取root权限:
大部分用户会毫不犹豫的输入密码,都不会想他们到底授权了什么行为。更重要的是,授权给了什么应用程序。可以说,对于一般的无经验用户,他们没有时间和专业知识来考虑这个问题。他们不会意识到他们一旦输入了密码,请求的进程就会获得root权限。
什么是系统集成保护(System Integrity Protection)?
使用了系统集成保护,苹果决定第三方应用有一些永远不会被允许的事情。从某些层面来讲,这种保护和iOS更像了。第三方应用相比起来更受限制。这就是rootless一词的由来,系统在某种程度上限制了管理员账号的权限。
rootless特性使得某些操作只有苹果的应用可以被许可(通过代码签名来判断)。所以第三方应用即使是运行在root权限中,有一些操作也无法完成。在我的测试中我注意到了以下几点:
- 1./System文件夹下的所有文件都不能被苹果应用以外的程序修改(例如各种安装器和升级部件)
- 2.当前的API例如task_for_pid不能在系统进程下被调用了。这意味着以前注入系统进程(Finder、Messages或者系统内核)的程序都不能用了。
- 3.有意思的是,rootless依然允许已签名的KEXT内核拓展被载入。问题是KEXT可以进行许多无限制的系统及操作。
总结
Rootless机制的目的很明显是改进安全性和可靠性,使得恶意软件以及木马很难渗透进系统。我很确信他将成为许多恶意软件开发者的一个挑战,不过我也很确定人们会发现这一机制很多薄弱的环节。
这个特性对于一些合法的软件有很多副作用。对此,苹果提供了一种方法使得用户可以关闭这个特性,但这需要用户以恢复模式启动(开机按住Command+R)
如果想了解更多,可以参考苹果的WWDC session视频。
更新关闭方法,兼容Beta7:
开机按住Command+R,进入恢复模式,打开terminal,键入:
csrutil disable
回车,重新启动即可。要重新恢复,只需将disable改为enable。
- OS X 10.11中Rootless的实现与解释以及关闭方法
- OS X 10.11中Rootless的实现与解释以及关闭方法
- 在 OS X 10.11 中引入的 Rootless 是如何实现的?有什么优势与缺陷?
- OS X EI Captan 中Rootless
- OS X中显示与隐藏文件的方法
- mac 10.11以上系统 rootless 关闭,打开
- os x应用点击关闭按钮退出程序的方法
- OS X以及iOS中与硬件环境相关的预定义宏
- rootless 关闭,打开
- OS中 main.h 的一些基本概念 以及 类与对象的概念及其实现
- How to Disable System Integrity Protection (rootless) in Mac OS X
- Android平台中进程与线程以及关闭进程的一些方法
- Mac OS X中正确添加环境变量的方法
- Mac OS X中Android Kernel的下载方法
- mac os x中安装mysql+phpmyadmin的方法记录
- Mac OS X中正确添加环境变量的方法
- 您需要安装OS X 10.10或OS X 10.11以及OS X server v4 或 OS X server v5
- hibernate中sessionfactory的解释,以及与Dao的区别!
- [置顶]磁盘分区以及解决反序安装操作系统所带来的困扰
- [置顶]在linux中连接wifi
- [从头读历史] 第280节 诗经目录以及十五国风的地域分布
- 蓝牙BlueTooth技术学习理解
- ECshop2.37开源程序 php5.6报错
- OS X 10.11中Rootless的实现与解释以及关闭方法
- 获取select下拉框的值
- 获取类的路径
- HTTP请求方法对照表和请求状态
- android studio 拿到sha1
- 直方图拉伸
- C# 14位日期型字符串yyyyMMddHHmmss转变为日期格式
- NAT(Network Address Translation,网络地址转换)
- Spring中配置和读取多个Properties文件