OS X的权限系统

OS X的权限系统
OS X的内核XNU,来源于Mach、BSD、IOKit,其权限管理系统类似BSD。OS X中内置了staff, wheel, admin这几种常见的用户组。
一、staff – 所有用户都属于staff组,对~/*拥有rwx权限,其他路径通常只有r或rx权限。
二、admin – 所有用户都属于admin组,可以通过sudo执行root用户的命令,而无需知道root密码。
三、wheel – 这个组里只有root一个用户,是root的专属用户组。

因为默认创建的用户属于admin组,可以通过这个用户的密码执行sudo,那么如果这个用户的密码被盗,黑客就相当于有了root的权限,可以对系统做任意修改。而通过Rootless的限制,即使root用户,也无法修改以上特定目录。

/usr/local在EI Capitan之前是属于当前用户:admin的,但在Rootless模式下,这个路径的属主变为了root:wheel,这样如brew之类的包管理器就无法往/usr/local中写入啦。要继续使用brew安装Packages,请先执行以下命令:

sudo chown -R $(whoami):admin /usr/local

把/usr/local的属主重新修改为当前用户:admin。

Mac 让 iTerm2 记住用户名密码 expect 脚本

/usr/local/bin
创建脚本 iterm2login.sh,权限设置为777
代码如下:

#!/usr/bin/expect

set timeout 30
spawn ssh -p [lindex $argv 0] [lindex $argv 1]@[lindex $argv 2]
expect {
    "(yes/no)?"
    {send "yes\n";exp_continue}
    "password:"
    {send "[lindex $argv 3]\n"}
}
interact

这里[lindex $argv 0], [lindex $argv 1], [lindex $argv 2], [lindex $argv 3] 分别代表着4个参数。
然后在iTerm2里面配置:
在 Command 选择 Login shell

item2login.sh 22 yadgen 127.0.0.1 password

脚本 端口号 用户名 服务器地址 密码
一一定应即可。

有的公司需要登录Jumpserver大同小异,修改expect即可。

创建可引导的 macOS 安装器

创建可引导的 macOS 安装器
有了 macOS High Sierra、macOS Sierra、El Capitan、Yosemite 或 Mavericks,您可以将 USB 闪存驱动器或其他存储介质用作从中安装 Mac 操作系统的启动磁盘。

从 App Store 下载 macOS 安装器
从 Mac App Store 下载 macOS 安装器。安装器下载至您的“应用程序”文件夹,存为单个文件,其名称开头为“Install”。例如:Install macOS High Sierra。
如果安装器在下载后自动打开,请退出。
装载要容纳安装器的存储介质,例如 USB 闪存启动器、外置硬盘驱动器、内置硬盘第二分区等。确保存储介质至少有 12GB 可用储存空间。
继续下一部分。

在“终端”中使用“createinstallmedia”命令
在下载安装器后,打开“终端”应用,“终端”应用位于“应用程序”文件夹下的“实用工具”文件夹内。
在“终端”中使用 createinstallmedia 命令来创建可引导安装器。以下是这个命令的基本语法:
High Sierra 的语法:
createinstallmedia --volume volumepath
Sierra 和更早版本的语法:
createinstallmedia --volume volumepath --applicationpath installerpath
将 volumepath 替换为您的 USB 闪存驱动器或其他宗卷的相应路径,并将 installerpath 替换为安装器的路径。

以下示例均假设安装器已位于您的“应用程序”文件夹中,并且您的 USB 闪存驱动器或其他宗卷的名称为“MyVolume”:
High Sierra 的示例:
sudo /Applications/Install\ macOS\ High\ Sierra.app/Contents/Resources/createinstallmedia --volume /Volumes/MyVolume
Sierra 的示例:
sudo /Applications/Install\ macOS\ Sierra.app/Contents/Resources/createinstallmedia --volume /Volumes/MyVolume --applicationpath /Applications/Install\ macOS\ Sierra.app
El Capitan 的示例:
sudo /Applications/Install\ OS\ X\ El\ Capitan.app/Contents/Resources/createinstallmedia --volume /Volumes/MyVolume --applicationpath /Applications/Install\ OS\ X\ El\ Capitan.app
Yosemite 的示例:
sudo /Applications/Install\ OS\ X\ Yosemite.app/Contents/Resources/createinstallmedia --volume /Volumes/MyVolume --applicationpath /Applications/Install\ OS\ X\ Yosemite.app
Mavericks 的示例:
sudo /Applications/Install\ OS\ X\ Mavericks.app/Contents/Resources/createinstallmedia --volume /Volumes/MyVolume --applicationpath /Applications/Install\ OS\ X\ Mavericks.app

Fink, Macports, Homebrew 区别

如果你有Linux/Unix背景,那么在Mac上你一定想安装那些你熟悉的open source软件。
Fink,Macports和Homebrew是3个主流的package management tool。

1. Fink
Fink是基于Debian的packaging tools开发的。最大的特点是安装软件是预编译好的(pre-compiled/pre-built)。
所以,用Fink安装package是不需要在本机编译的,都是现成的binary code。
Fink最大的问题是package跟进不够快。很多最新版的软件,你要等Fink。

2. Macports
Mac算是BSD的一个变种吧。所以,BSD的包管理软件port被移植到Mac上就显的理所当然了。
macports的工作方式是下载source code然后在本地编译。macport的理念是尽量减少对系统现有库的依赖。
所以,第一次用macport的时候,需要很长时间让macport重新build整个基本库,什么perl啊,python啊的。
代价是较长的编译时间,较多的依赖关系下载。好处是不怎么依赖系统,也就是说,更新Mac OS不会破坏你现有的
package。
另外,macports安装所有的package到/opt/local下面。这样不会和系统现有的/usr/local有什么冲突。

3. Homebrew
这个比较新,是在Lion之后才兴起的。
工作方式和macport类似,也是下载source并在本地编译安装。但是和macports有两个根本的区别。
1) homebrew的理念是尽量使用系统现有的库。这样可以大大的减少编译时间。
2) package都安装到/usr/local下面。
这两点和macports是完全相反的。结果也是有利有弊。
最大的好处莫过于编译时间变短,安装简单。问题就是和系统紧密依赖。
另外Homebrew假设你的Mac是单用户系统,所以/usr/local的owner应该是你,而不是传统的root。
这个假设在大多数情况下都成立。
(当然你可以改变homebrew的安装路径,然后修改你的PATH)
另外,一个不太重要的区别,macport是用rsync来同步repository tree和获取新的package的。
homebrew是用git来管理repository的。
如果你是在内部网或者firewall后通过proxy使用,这点可能会给你带来影响–一些proxy不支持rsync的。

总结:
1. 忘了Fink吧,老了。
2. 如果你是重量级的Linux用户,希望使用所有的open source package,那么macports是你不二的选择。
3. 如果你只希望很快的安装一些便利的工具,那么homebrew是个不错的选择。

macports可以用svn来代替rsync。虽然selfupdate不可用,但是其他的sync, install等完全不影响。这样就可以绕过上面所说的proxy的问题了。
https://trac.macports.org/wiki/howto/SyncingWithSVN

使用svn来sync:
https://trac.macports.org/ticket/34298

文章转自: http://tetsu.iteye.com/blog/1507524

Apple TV屏保,支持离线缓存

Aerial
1. 下载Aerial.zip
2. 解压Aerial.zip,双击 Aerial.saver 进行安装
3. 如果不能安装,打开 系统偏好设置 – 安全性与隐私 – 允许从以下位置下载的应用:勾选(任何来源),如图:
屏幕快照 2015-11-12 09.57.28

 

 

 

 

 

3. 或者直接拷贝文件Aerial.saver,到目录~/Library/Screen Savers/。
4. 打开Finder,同时按下Shift + Command + G,前往目录~/Library/Screen Savers/。
5. 打开 系统偏好设置 – 桌面与屏幕保护程序,选择Aerial。
6. Enjoy this!

离线下载视频方法:
1. 打开终端(Terminal.app),进入目录~/Library/Caches/Aerial/,如果目录不存在则执行以下命令:
sudo mkdir ~/Library/Caches/Aerial
sudo chown User:staff ~/Library/Caches/Aerial
(User是你当前的用户名称,查看用户名称:ls -al /Users/,非Guest, 非Shared,剩余的就是了。)

2. 输入命令:
curl http://a1.phobos.apple.com/us/r1000/000/Features/atv/AutumnResources/videos/entries.json | sed -n 's/.*url"\ :\ "\([^"]*\).*/\1/p' | wget -i -

3. Enjoy this!

删除方法:
1. 打开 Finder,搜索 “Aerial”,与之相关的全部删除接。

解决 OS X 10.11.1 出现延迟,卡屏现象

2015年中的 RMBP 15寸,出现这些现象简直难以忍受。
经过强大的互联网,尝试不同的方法,最终得到解决办法,现分享给大家,不保证适合所有机器。
其实只要重置 SMC 和 PRAM 即可,具体方法如下:
重置smc
https://support.apple.com/zh-cn/HT201295

重置 pram
https://support.apple.com/zh-cn/HT204063

升级 OS X 10.11,编译 GIT 出现的各种问题

升级完 OS X 10.11 之后,我们会发现,QQ变成英文等等一系列问题,最恶心的莫过于针对开发者。
Apple 为了系统完整性的保护 System Integrity Protection(SIP),SIP的定义看这里
/usr/include目录被删,虽然你可以通过命令:
xcode-select --install
进行安装,但是在编译 git 的时候,问题重重。

错误信息:./git-compat-util.h:270:10: fatal error: ‘openssl/ssl.h’ file not found
解决方法:
找不到头文件,一直不能解决这个问题,索性:
vim Makefile
增加如下代码:
NO_OPENSSL = 1

错误信息:Operation not permitted
解决方法:
重启你的OS X,按住 Cmd + R 进入 boot,访问终端。
执行命令:csrutil disable
重新启动。
打开终端执行命令:sudo chflags norestricted /usr/local && sudo chown -R $(whoami):admin /usr/local

done…

友情提示:
不用增加 NO_OPENSSL 也可以,自己编译 openssl,将 openssl 目录拷贝到 /usr/include,即可。