Linux基础知识:touch,umask,lsattr,chattr,suid,sgid,sbit

前面学习了Linux文档的权限(见 http://www.linuxidc.com/Linux/2011-11/47894.htm ),鸟哥说,文件rwx的权限是读取写入与执行的权限,但与删除文件并没有关系。而目录rwx则代表读取目录列表,添加删除目录中的文件,切换进入目录!对于此,我做了一项权限问题的试验。

文件的时间属性有三种,atime(最后被访问的时间),这个最后被访问是指用cat,less,more,mv,cp等操作后显示的时间。对于ls aa ,echo abc >aa 这样的操作,是不是改变aa文件的atime的。可以用ll --time=atime filename 来查看文件的atime.

首先,以sunjiebin用户测试下test文件的rwx权限问题:

ctime(文件权限与属性被更改的时间),这个主要包括,用chmod, chown, mv, cp 等命令进行操作,均会改变其时间。即使用cp -a来保留其时间,但因为档案是被重新建立的,所以ctime也会被更新。只要重新建立档案,就会更新ctime。但如果我们用cat, vi, touch --time, ls 等操作,是不会改变其ctime的。改变文件里面的内容与文件的建立或访问时间是不会影响ctime的值的。可以用 ll --time=ctime filename 来查看ctime

当只有r权限时:
[sunjiebin@rhel6 test]$ ll
总用量 4
-r--------. 1 sunjiebin sunjiebin 6 10月  1 17:34 test
[sunjiebin@rhel6 test]$ echo hello2 >>test
-bash: test: 权限不够
[root@rhel6 test]# ./test
-bash: ./test: 权限不够
[sunjiebin@rhel6 test]$ cat test
hello
可以看出是不可以写入与执行的。但可以查看。

mtime(文件内容被更改的时间)。与vi,nano,echo等有关。即使你用vi并没有修改里面的内容,但是你却用wq保存了,时间照样会更新。只有当文件里面的内容被更改或重新保存时才会更新mtime。此时间与cat,ls,chown,chmod,cp,mv等无关。改变其所有者及权限,或者访问时间,不会改变其mtime的值。这也是ll 默认值。当然,这个值是最重要的!

当只有w权限时:
[男篮世界杯赌球,sunjiebin@rhel6 test]$ chmod u=w test
[sunjiebin@rhel6 test]$ ll
总用量 4
--w-------. 1 sunjiebin sunjiebin 6 10月  1 17:34 test
[sunjiebin@rhel6 test]$ cat test
cat: test: 权限不够
[sunjiebin@rhel6 test]$ echo test1 >>test
[sunjiebin@rhel6 test]$ ./test
-bash: ./test: 权限不够
我们用root来看看写入是否成功
[root@rhel6 test]# cat test
hello
test1
可以看出可以写入成功了,但sunjibin用户自己却不能查看写入的文件
由上可知,当只有w权限时,可以写入文件,但不可读,不可执行。  

touch不仅可以创建空文件,还可以更改文件的时间属性。

注意:这里不能用vi来编辑test。如果用vi,我在vi里面输入test3,结果如下:
[sunjiebin@rhel6 test]$ vi test
test3
-- 插入 -- W10: 警告: 正在修改一个只读文件
:wq! [root@rhel6 test]# cat test
test3
可以看出,在用vi编辑的时候,我们并不能看到test文件中的内容,而且编辑后的文件,也已经没有了一开始的内容。为什么没有原来的内容了呢?其实这本质上vi并没有编辑真正的修改test文件,而是在编写一个同名的test文件。在保存的时候,再将原来的test覆盖掉。覆盖其实就是执行了删除和新建的动作。所以,原来的test文件就没有了!下面在讲目录权限的时候,我会验证这句话的正确性!

-d 指定要更改的时间。如touch -d "2011-02-01" ab 就可以把当前目录下的ab的atime,mtime改为2011年2月1日。但不会改变其ctime时间。
[sunjiebin@rhel6 sun]$ ll
-rw-rw-r--. 1 sunjiebin sunjiebin 4 10月 11 22:11 ab
[sunjiebin@rhel6 sun]$ touch -d "2011-02-01" ab
[sunjiebin@rhel6 sun]$ ll
-rw-rw-r--. 1 sunjiebin sunjiebin 4  2月  1 2011 ab
[sunjiebin@rhel6 sun]$ ll --time=ctime ab
-rw-rw-r--. 1 sunjiebin sunjiebin 4 10月 11 22:16 ab
-t 一次性详细指定时间。如touch -t 1102011122.08 ab 即指指定文件ab的修改时间为2011年2月1日11点22分08秒。这个与touch -d "2011-02-01 11:22:08" ab效果是一样的。

本文由美洲杯赌球发布于计算机教程,转载请注明出处:Linux基础知识:touch,umask,lsattr,chattr,suid,sgid,sbit

TAG标签:
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。