El Capitan以后的MacOS安全机制

El Capitan之前的安全机制

MacOS中,总有一个root用户,uid为0

$ dscacheutil -q user -a name root
name: root
password: *
uid: 0
gid: 0
dir: /var/root
shell: /bin/sh
gecos: System Administrator

MacOS的登录用户不是root,没有最高权限。修改一些系统保护的资源时,需要临时切换到root用户。root具有最高权限,可以做任何事情。此时需要使用sudo命令。

比如登录用户是不能修改/etc/hosts文件的。

$ whoami
foo
$ vi /etc/hosts
'readonly' option is set for "/private/etc/hosts".
Do you wish to write anyway?

"/private/etc/hosts"
"/private/etc/hosts" E212: Can't open file for writing

要修改/etc/hosts文件,必须以root的身份执行这条命令。此时需要输入登录密码。

$ sudo vi /etc/hosts
Password:

El Capitan之后的安全机制

MacOS发现root的权限太大了,可以对系统做任何事情。如果用户使用root用户执行了一些误操作,会造成不可挽回的错误。从El Capitan(OS X 10.11)开始,MacOS限制了root用户的权限。以前可以用sudo执行的操作,现在不能执行了。

$ sudo mkdir /usr/root
mkdir: /usr/root: Operation not permitted

这个功能叫做System Integrity Protection。SIP在内核中对root的操作做了限制,即使使用sudo,也不能执行内核限制的操作。此时root失去最高权限,变成了一个缩水的root用户。

SIP增加的限制主要是以下四方面:

  • root不能对特定文件和文件夹执行写操作。
  • root不能使用debugger工具跟踪系统进程,也不能向系统进程注入代码。
  • 所有的内核扩展都被签名。
  • 操作系统分区上不能禁止SIP,只能在OS X的恢复分区上禁止SIP。

SIP保护目录

  • /System
  • /bin
  • /usr
  • /sbin

SIP保护以上目录,root不能在这些目录中执行写操作,否则会报错。

$ sudo touch /usr/IamRoot
Password:
touch: /usr/IamRoot: Operation not permitted

root也不能把设备挂载到这些目录上。

$ sudo mount -t nfs company.com:share_folder /System
mount_nfs: can't mount share_folder from company.com onto /System: Operation not permitted

SIP允许操作的目录

对开发者而言,现在不能随意放置文件。MacOS允许也推荐开发者把文件放到一下目录中。

  • /Library
  • ~/Library
  • /usr/local
  • /Applications
    使用/Library和~/Library替换/System,使用/usr/local替换/usr,/bin, /sbin。苹果强烈推荐开发者把应用程序的所有文件放在/Applications中,方便卸载应用程序。

这是我的Mac中,/usr/local目录下的内容。

$ tree /usr/local/ -L 1
/usr/local/
├── Cellar
├── Frameworks
├── Homebrew
├── bin
├── etc
├── go
├── include
├── lib
├── opt
├── remotedesktop
├── sbin
├── share
└── var

brew安装在/usr/local/Homebrew/bin/brew,brew安装的程序都放在/usr/local/Cellar/中。

$ tree -L 1 /usr/local/Cellar/
/usr/local/Cellar/
├── apr
├── apr-util
├── ascii
├── autoconf
├── automake
├── cmake
├── doxygen
├── erlang
├── git
├── htop
├── httpd24
├── jpeg
├── libevent
├── libpng
├── libtiff
├── libtool
├── mysql
├── openssl
├── pcre
├── pkg-config
├── rabbitmq
├── sphinx-doc
├── tree
├── wget
├── wxmac
└── zlib
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,657评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,662评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,143评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,732评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,837评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,036评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,126评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,868评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,315评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,641评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,773评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,859评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,584评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,676评论 2 351

推荐阅读更多精彩内容