@perkyoung
2015-01-29T11:20:48.000000Z
字数 647
阅读 1888
UNIX
如果用open或者creat创建已经存在的文件,则该文件的访问权限位不会改变。例如,linux默认的umask是002
,创建的文件的访问权限位是:u=rwx,g=rwx,o=rx
,但是当这个已存在文件的的访问权限位为u=rwx,g=,o=
时,创建文件依然是这个访问权限位
设置用户ID和设置组ID
一个普通用户,如何以root权限执行一个程序呢?首先,将该程序的所有者改成root用户,然后设置该程序文件的设置用户ID位,这样程序文件的有效用户id就改为了root,总所周知,文件有效用户ID决定了该程序文件的访问权限,该进程拥有了超级用户访问权限。
access函数
不管程序是否设置了设置用户ID,都可以以实际用户身份对某一文件进行访问权限测试
文件长度
ls -l
的长度会增加,但是du -s
的大小不会增加wc -c
时,会包含空洞内字符个数。所以如果cat core > core.copy
,新的文件内就不仅仅是边长了,而是以前空洞的位置变成了实实在在的字符。du -s core
,显示的块的个数,(512 × 块数),大于文件ls -l
的结果,是因为文件内部是存在很多指针的,所以实际占用的空间要大于长度remove(),unlink()
unlink()
函数有一个很棒的特性,就是可以确保程序崩溃,依然能删除指定的临时文件,open
之后,紧接着调用unlink()
,程序不会立刻让该文件的引用计数减1,而是等待程序结束或者崩溃