OSX 关闭 Rootless

OS X El Capitan中,在内核下引入了Rootless机制,以下路径:

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

均属于Rootless范围,即使root用户无法对此目录有写和执行权限,只有Apple以及Apple授权签名的软件(包括命令行工具)可以修改此目录。

要么思考你这个操作的意义之后,使用其他方式完成你的操作
比如你要改vim的配置,请放在~/.vim/中,而不是/usr/share这种全局路径
要么关闭Rootless(非开发者一般不推荐,或者建议执行后再次开启)

附关闭方法:
重启,开机按住Command + R,以Recovery分区启动,然后选择以下方式:

图形化操作

在Security Configuration中关闭Enforce System Integrity Protection

命令行操作

csrutil disable

#重新开启
csrutil enabled
已下部分转自知乎著作权归作者所有。
商业转载请联系作者获得授权,非商业转载请注明出处。
作者:DreamPiggy
链接:https://www.zhihu.com/question/31116473/answer/50904087
来源:知乎

————————

一句话总结,即使是root用户,将无法对以下路径有写和执行权限:
/System
/bin
/sbin
/usr (except /usr/local)

只有Apple自身签名的软件(含命令行工具)可以。

————————

详细说明:

先简单介绍一下OS X的权限系统吧
OS X 的内核XNU,一个由Mach,BSD,IOKit混合的内核,所以它的权限管理系统类似UNIX的BSD

简单的小知识(用过Linux的可以跳过)

1. 一个用户(user)对于一个文件有三种状态,可读(r)、可写(w)、可执行(x),一个文件会有一个所属用户,所属用户组。还会有文件属主权限、同组用户权限、其他用户权限这三种标识符用来定义一个文件对一个用户的权限集合。

2. 为了达到多个用户的权限管理,每个用户会在一个或者多个用户组(group)中,一个用户组可以有多个用户

3. root用户是一个特殊用户(超级用户),拥有对所有文件的rwx权限(可读可写可执行)

4. UNIX系统是纯粹基于文件的,换言之你的网络读取,驱动程序,分区表什么的其实都会以文件的形式存在

复杂的小知识

OS X 内置会有staff wheel admin这三种常见的用户组,分别介绍一下

1. staff : 所有创建用户都会属于这个用户组,提供最基本的对该用户目录~/*(/User/*)的rwx权限,其他的一般只有r或者rx权限。比如我建立一个用户叫做lizhuoli,那么我会在一个staff组里面,对/User/lizhuoli/*有rwx权限。

2. admin :默认创建的所有用户也会属于这个admin用户组,在它里面的用户可以通过

su

或者

sudo

切换到root用户,只要执行以后输入这个用户的密码即可,而不需要知道root密码。

3. wheel :唯一只拥有一个用户root,意思是root用户的专属用户组。

小说明

1. 以前
在OS X 10.11之前的版本,你一旦创建一个用户,那么你就自动属于staff和admin用户组,这样,你要执行一个高权限操作,比如安装一些.pkg文件,需要对/System、/Library、/usr等文件夹的写入权限(一般是安装那种高权限程序,比如JDK会默认安装在/Library/Java中),就会提示你输入当前用户的密码,这时候系统会自动切换到root用户执行,然后执行完切换回来(终端执行sudo xxx同理)

举个例子:

lizhuolideMacBook:~ lizhuoli$ groups
staff everyone localaccounts _appserverusr admin 
...

这样就存在一个问题,一旦你的Mac的某一个用户密码被盗取,那么黑客就拥有了root账户的权限,甚至可以改动你的其他用户,这是有潜在风险的。而且更可怕有些恶意软件先引诱你打开允许任何来源,然后再弹窗让你授权以管理员权限,它就相当于一个root用户可以为所欲为了~比如偷偷的加几个进程监听你的所有网络链接呀,劫持键盘输入呀~各种……

2. 现在
OS X 10.11 加入了Rootless,默认创建的用户还是属于admin用户组,也能切换到root用户,但是加以了限制,结果是一旦你执行su 或者 sudo切换到root用户
你的这个root用户不再是真正的root用户(对所有文件有rwx)
你的这个root用户不再是真正的root用户(对所有文件有rwx)
你的这个root用户不再是真正的root用户(对所有文件有rwx)
重要的话说三遍!

bash-3.2# whoami
root
touch /usr/test
touch: test: Operation not permitted

现在你虽然用 whoami 看到自己明明是root用户了,但是不能有对/System /usr等文件夹的写入权限,甚至将一些原来的所属用户组为admin的文件夹的权限全部改为了wheel(比如对/usr/local,在10.11之前都是属于当前用户:admin用户组的,启用Rootless会变成root:wheel)。这样防止了黑客入侵,病毒修改,一些恶意软件的篡改文件权限的行为。(不过话说Homebrew — The missing package manager for OS X应该也要更新了,因为Rootless下面Homebrew的安装路径/usr/local都是root:wheel的……)

当然,你也可以禁用Rootless,不过这就多了一份被恶意软件攻击的潜在威胁。建议此时打开Mac App Store 和被认可的开发者或者纯粹的Mac App Store限制。

小结论

嘛,防止了大部分恶意软件想通过单纯的引导用户,输入自己的密码点击确定来直接切换到root做一些违法的事情。也可以防止黑客黑了一个用户然后就有root权限可以肆意妄为的情况,不过对于真正的黑客来说

未经允许不得转载:SuperMan's blog » OSX 关闭 Rootless

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址