delphij's Chaos

周末地图炮时间:沙箱与开发者的良心

• Security

TextMate 2 宣布开源了,在 一则报道 中指出,这是对苹果 OS X 新增的限制的回应,我对此十分怀疑。

为什么呢?因为沙箱是非常重要的安全机制。沙箱其实到处存在,只不过在过去没有 OS X 中这样全面和细致而已。例如,现代操作系统中两个进程不能随便互相写对方虚拟内存中的内容;又比如,操作系统中通过"用户"、“属主"等概念来进行访问控制,等等。这些机制的存在,限制了由于开发人员偶然犯错导致的损失范围。许多不靠谱而且不负责任的开发者,则会以种种借口指责沙箱拖慢了他们的开发进度。更有甚者,其中的一些甚至还会告诉用户打破沙箱(例如比较常见的是很多 php 应用建议用户 chmod -R 777),其结果则必然是在发生问题时产生更大的损失。

阅读全文… ( 本文约380字,阅读大致需要1分钟 )

OS X Mountain Lion 的 clean install 重装

• Cheatsheets

没什么特别,这里记一下大致过程,以及一些想到的值得 FreeBSD 学习,以及 OS X 应该改进的地方。

我选择的方法是借助 USB 安装盘来做重装的操作。在 App Store 下载 Mountain Lion 之后,不要选择继续安装(继续安装的话,在安装结束后会删掉安装的文件)。

在 Finder 中找到 /Applications/Install Mac OS X Mountain Lion.app,在其上按右键,Show Package Contents,这会将 Bundle 内容打开,在其中找到 Contents/SharedSupport,其中有一个叫 InstallESD.dmg 的文件。双击 InstallESD.dmg 挂载它。

接着,启动 Disk Utility,选择 U 盘(需要至少 5GB 的空间),将其中内容擦除;接着选择刚才挂载的 InstallESD,在 Restore 标签页中,将 U 盘拖拽到 Destination 的位置,然后按 Restore。

这个操作将会把 InstallESD.dmg 写入 U 盘。重启系统时按住 Option,选择刚刚制作的 U 盘,就进入了 OS X 的恢复界面。

在这里有四个选项,使用 Disk Utility (最后一个)清除硬盘或 SSD 内容(此处可以选择Mac OS Extended (Case sensitive, Journaled) )。如果原先的硬盘使用了 File Vault,可能需要先输入任意用户的口令来解锁。完成后退出 Disk Utility,选择 Reinstall OS X Mountain Lion。

重装的过程大致需要20分钟左右。然后是一些基本的配置,完成后,重新进入 App Store 安装 Garage Band、iMovie 和 iPhoto。

阅读全文… ( 本文约727字,阅读大致需要2分钟 )

nginx的https压缩

• Security

官方版本的 nginx 在 https 的时候是不对流量做压缩的,具体原因在这里 和 这里 有解释,它会增加半兆的连接内存开销。

启用 https 压缩除了需要 nginx 本身做少量修改(例如去掉 if[n]def SSL_OP_NO_COMPRESSION 部分的语句块)之外,还需要 OpenSSL 本身编译了加密支持。FreeBSD ports 的 security/openssl 预设启用了 ZLIB 扩展,但基本系统目前没有(由于 zlib 是很大的一片代码,也许需要做了 Capsicum 处理之后才可以放进来用)。

阅读全文… ( 本文约286字,阅读大致需要1分钟 )

OS X终端中的 PgUp 和 PgDn

• Cheatsheets

多年不用 Mac 了,这没有 PgUp 和 PgDn 的死毛病还是没改。我觉得我真是没法接受没有 Page Up 和 Page Down 的键盘的。

当然,设计者关上一道窗的同时,往往又会在另外的地方开一扇门。Mac 上可以用组合键来模拟这些功能:

阅读全文… ( 本文约157字,阅读大致需要1分钟 )

Asus笔记本安装 FreeBSD 笔记

• Hardware

祸不单行。继 老婆 笔记本坏掉之后,我的也在周一突然坏掉了。因为已经过保,找来 Dell 的维修手册做了初步诊断之后认为是主板问题,简单尝试了下没有修好,所以找老板商量,暂时买了一台 Asus G75VW 来用。

阅读全文… ( 本文约584字,阅读大致需要2分钟 )

计时攻击和登录系统设计

• Security

计时攻击是一种通过观测由于某些操作时泄露出来的时间信息来获取更多信息的攻击。由于设计和实现的不同,攻击者能够通过计时得到的信息也会不一样。简而言之,作为安全系统的设计者,必须对可能泄露信息的各种渠道有充分的了解,并针对它们采取因应措施。

阅读全文… ( 本文约556字,阅读大致需要2分钟 )

shell 中的 ` 和 $()

• Development

sh(1) 脚本中,` 和 $() 的作用类似。比如:

rm `find /foo/bar -ctime +3d -type f`

📓 注意

FreeBSD系统中,此处实际可以用 find /foo/bar -ctime +3d -type f -delete 来代替。

表示将 find 的输出结果作为 rm 的命令行输入。

阅读全文… ( 本文约239字,阅读大致需要1分钟 )