博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
os x 10.11 中 root用户无法删除 /usr/bin/ 目录下的程序
阅读量:5935 次
发布时间:2019-06-19

本文共 1860 字,大约阅读时间需要 6 分钟。

在 OS X 10.11 中引入的 Rootless

即使是root用户,将无法对以下路径有写和执行权限:

/System
/bin
/sbin
/usr (except /usr/local)

 

  • 禁止直接对 /System/bin/sbin/usr 目录的修改(/usr/local 目录除外). 只有通过苹果开发者认证的 app 才有权限对其修改.
  • 禁止注入系统进程. 某些需要注入系统进程(finder, messages 等等系统级别的进程)的程序, debugger 无法使用了.
  • 禁止加载内核扩展(kexts), 除非它们被苹果开发者正确的签名

这些修改最明显的好处就是: 恶意 app 无法通过用户授权的方式从而获得所有系统权限了.

当然, 它带来的副作用也是巨大的, 一些合法的 app 也无法获得系统权限了. 比如: Homebrew, CocoaPods 以及所有需要在 /usr/bin 目录下有可执行权限的 app.

 

定义问题

Rootless讨论的前提是假定root账户是OS X(或者其他Unix系统)中对抗恶意程序保护操作系统的最后一道防线。意思是一个应用程序一旦获得了root账户权限,将会获得系统的无限的权限。就可以进行实时修改、修改磁盘、替换任何系统文件等。

目前,许多传统的Unix操作系统中,root账户都是被强密码保护着的。这里的问题在于大部分的OS X系统基本上是单用户系统,也就是不存在单独的root账户密码,root密码就是管理员账户的密码。简单来说,苹果通过以下途径来获取root权限:

<img src="https://pic2.zhimg.com/15a4cc6d3d9c2cba183ad6897a39028d_b.jpg" data-rawwidth="865" data-rawheight="537" class="origin_image zh-lightbox-thumb" width="865" data-original="https://pic2.zhimg.com/15a4cc6d3d9c2cba183ad6897a39028d_r.jpg">

大部分用户会毫不犹豫的输入密码,都不会想他们到底授权了什么行为。更重要的是,授权给了什么应用程序。可以说,对于一般的无经验用户,他们没有时间和专业知识来考虑这个问题。他们不会意识到他们一旦输入了密码,请求的进程就会获得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视频。

 

解决办法

将Rootless修改成了,enable,所以我们需要关掉它, 重启电脑

按住 Command + R,进入到恢复界面

打开Terminal终端,然后输入
csrutil disable
如果想改回来,将disable改成enable即可

转载于:https://www.cnblogs.com/qq419524837/articles/4919742.html

你可能感兴趣的文章
Java异常
查看>>
转:fragment不响应onActivityResult的问题
查看>>
【leetcode】989. Add to Array-Form of Integer
查看>>
LeetCode.922-按奇偶排序数组 II(Sort Array By Parity II)
查看>>
C#用odp.net连接Oracle 数据库
查看>>
#!/usr/bin/python3的作用 解决vscode ImportError: No module named xxxx
查看>>
Koa2学习记录
查看>>
svn 新建用户,删除用户,更改用户密码
查看>>
替换字符串中空格为”%20“
查看>>
Android RecyclerView 使用完全解析 体验艺术般的控件
查看>>
Linux 脚本语言入门
查看>>
C errors recods
查看>>
linux内核编译
查看>>
dubbo学习笔记四(异步调用)
查看>>
语言代码表
查看>>
IOS数据存储-NSUserDefaults
查看>>
NDK 编译问题 总结
查看>>
复习日记-SQL+连接池
查看>>
hdu 1007 Quoit Design
查看>>
织梦(dedecms)如何清空全部文章和删除后新增文章id号归1的方法
查看>>