问题产生
今天在将mac默认安装的python2.7升级为python3时,终端运行:
sudo mv /usr/bin/python /usr/bin/python_old
提示“Operation not permitted”,操作不成功。
问题分析
笔者在此前一天刚把Ubuntu 18.04 LTS的Python2升级为Python3,同样的方法并未提示操作不成功。故而推测可能是Mac在系统层面对某些目录增加了保护机制,即使root权限用户也不可读写。
问题解决
查阅资料,发现是Mac OSX 系统中有一项Rootless机制,即使在root权限下也不能所以读写某些特定路径的文件。Rootless可以有效防止恶意程序对电脑的破坏,平时建议保持开启状态。
为了实现上述目的,我们选择手动关闭Rootless,在升级完Python之后再将其打开。
关闭Rootless
重启电脑,按住Command+R进入恢复模式,点击菜单开启Terminal,输入:
csrutil disable
重启电脑即可。
打开Rootless
同样进入恢复模式,输入:
csrutil enable
如上所说,建议平时保持Rootless机制的开始,可以有效防止电脑遭受恶意程序的破坏。