2011 年马上就要过去了,回顾过去的一年,我发现最正确的决定就是离开北京。北京的空气污染已经到了非常严重的程度,奉劝各位能不去北京就别去,别拿自己的身体健康开玩笑。在这个神奇的国度,能让自己健康地活着本身就是一种很大的成功!
在 2011 年中,中华民族已经到了最坑爹的时候,所以在 2012 年里,祝愿大家都能有新鲜的空气呼吸,能有正常的牛奶喝,能有健康的食用油吃,能有一所房子不被强拆,能有个孩子是亲生的,能扶起老太不被讹,最关键的是,能让自己不被活埋!
虽然你仍然不可能像对岸一样能投上一票,但是你能选择离开。所以,有钱有本事的还是尽早移民吧!没本事的就好好练习游泳,游到对岸去!要自由从来都不丢人,“我们这儿”才丢人!
说了那么多,我觉得,在所有的新年祝福辞里,“祝你幸运”是最好的,也是最现实的祝福了。所以,祝你 2012 年幸运!
最后祝愿所有的五毛,全家都搬到朝鲜去,早日体会到社会主义的优越性!
2012 年,要幸福,更要自由。
我们知道,在 Linux 上最基本的文件属性是,
# ls -l foo
-rw-r--r--. 1 root root 0 Jan 19 00:03 foo
可以通过chmod 命令来更改,ls -l 来查看。
除此之外,一些文件系统上还提供额外的属性,比如 ext4 提供了额外的属性,比如 append only (a), compressed (c), immutable (i) 等属性,这些属性可以通过 e2fsprogs 软件包提供的 chattr(1) 来改变,lsattr(1) 来查看。更多属性也可参考 chattr(1)。比如:
# chattr +i foo
# lsattr foo
----i--------e- foo
这个是和文件系统密切相关的,一是因为 chattr 来自 e2fsprogs,二是因为它调用的系统调用也是和文件系统相关的一个 ioctl,可以看下面 strace 的输出:
open("foo", O_RDONLY|O_NONBLOCK|O_LARGEFILE) = 3
ioctl(3, EXT2_IOC_SETFLAGS or EXT3_IOC_SETFLAGS or FIONCLEX, 0xfffc347335c) = 0
close(3) = 0
还有一种文件属性叫扩展文件属性,eXtended ATTRibutes,也就是通常所说的 xattr。和前一种相比,这个就不那么和文件系统密切相关了,但是仍然需要文件系统的支持。这个是通过系统调用 getxattr(2) 和 setxattr(2) 来实现的,对应的命令是 getfattr(1) 和 setfattr(1),来自 attr 软件包。看例子:
# mount -o remount,acl,user_xattr /home
# touch bar
# setfattr -n user.comment -v "this is a comment" bar
# getfattr bar
# file: bar
user.comment
# getfattr bar -n user.comment
# file: bar
user.comment="this is a comment"
需要注意两点:一,挂载时需要加 “user_xattr” 选项;二,name 是有命名空间的,并不是任何命名空间都可以,比如,
# setfattr -n my.comment -v "this is my comment" bar
setfattr: bar: Operation not supported
用户只能用 user.* 名字,而后面的 ACL 则会用 system.posix_acl_access。当然了,SELinux 也会用到 xattr,security.*。
基于此,ACL 实现了访问控制列表,也就是说,设置某些用户的文件权限不再依赖于用户所在的组了,省去了不少麻烦。对应的命令是 setfacl(1) 和 getfacl(1) ,来自 acl 软件包。从下面 strace 的输出,也可以看出它们确实是基于 xattr 的:
getxattr("foo", "system.posix_acl_access", 0xfffe455cca0, 132) = -1 ENODATA (No data available)
stat("foo", {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
setxattr("foo", "system.posix_acl_access", "\x02\x00\x00\x00\x01\x00\x06\x00\xff\xff\xff\xff\x02\x00\x06\x00\x00\x00\x00\x00\x04\x00\x04\x00\xff\xff\xff\xff\x10\x00\x06\x00\xff\xff\xff\xff \x00\x04\x00\xff\xff\xff\xff", 44, 0) = -1 EPERM (Operation not permitted)
之所以出现 ENODATA 是因为挂载文件系统时我没有指定”acl”,需要重新挂载:mount -o remount,acl /home 然后重新创建文件,因为旧的文件依旧是没有 ACL的。
世界上最遥远的距离不是生与死,而是人家那儿都开始抵制 SOPA 了,组建盗版党了,我们这儿(张绍刚同志对此有贡献)还在热火朝天地搞 GFW 呢!
下面是几大网站今天的首页,最后一张截图最能说明问题!
gnu.org (标题变成了01000100010010010100011101001001010101000100000101001100)


wikipedia.org

fedoraproject.org

reddit.com

wordpress.org
