Linux基础知识:touch,umask,lsattr,chattr,suid,sgid,sbit
文件的时间属性有三种,atime(最后被访问的时间),这个最后被访问是指用cat,less,more,mv,cp等操作后显示的时间。对于ls aa ,echo abc >aa 这样的操作,是不是改变aa文件的atime的。可以用ll --time=atime filename 来查看文件的atime.
ctime(文件权限与属性被更改的时间),这个主要包括,用chmod, chown, mv, cp 等命令进行操作,均会改变其时间。即使用cp -a来保留其时间,但因为档案是被重新建立的,所以ctime也会被更新。只要重新建立档案,就会更新ctime。但如果我们用cat, vi, touch --time, ls 等操作,是不会改变其ctime的。改变文件里面的内容与文件的建立或访问时间是不会影响ctime的值的。可以用 ll --time=ctime filename 来查看ctime
mtime(文件内容被更改的时间)。与vi,nano,echo等有关。即使你用vi并没有修改里面的内容,但是你却用wq保存了,时间照样会更新。只有当文件里面的内容被更改或重新保存时才会更新mtime。此时间与cat,ls,chown,chmod,cp,mv等无关。改变其所有者及权限,或者访问时间,不会改变其mtime的值。这也是ll 默认值。当然,这个值是最重要的!
touch不仅可以创建空文件,还可以更改文件的时间属性。
-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效果是一样的。
umask 新建文件预设权限。可以用umask来查看预设权限数值。也可以用umask -S来查看新建的文件权限关系。普通用户默认的umask值为0002.第一个0暂时不知道干嘛的,后面三个0分别代表所属者,所属组,其它用户对应的掩码值。umask中的值的权限与新建文件的权限是相反的。umask=0002,代表的权限为u= , g= ,o=w 。那么反过来,新建的文件权限即为:u=rw, g=rw, o=r。也就是664的权限(新建文件默认是没有x权限的)。umask -S u=rwx,g=rwx,o=rx 即 umask 0002。可以直接用umask 0022即表示设置预设权限为所有者完全控制,所属组和其它用户只读。
lsattr 查看文件的隐藏权限,其中-a显示出隐藏文件的隐藏权限。-R显示出目录及目录内的所有文件隐藏权限。-d只显示指定目录的隐藏权限,而不显示目录以下的文件隐藏权限。这三个参数与ls的参数意义一样。
chattr 设置文件隐藏权限。只不过chattr只能在ext2/3/4文件系统上生效。+添加权限,-去掉权限,=替换权限。
+A 让atime无法更改。即不记录文件被访问的时间。
[root@rhel6 sun]# chattr +A ab
[root@rhel6 sun]# ll --full-time --time=atime ab
-rw-r--r--. 1 root root 15 2011-10-12 13:40:22.999414919 +0800 ab
[root@rhel6 sun]# cat ab
al
[root@rhel6 sun]# ll --full-time --time=atime
总用量 4
-rw-r--r--. 1 root root 15 2011-10-12 13:40:22.999414919 +0800 ab
我对ab文件进行访问也没有改变其atime时间了。
+a 让文件只能增加,不能删除或修改里面的数据。要注意的是,在增加这个属性后,我们就不能用vi,nano等来编辑这个文件了。编辑后就会发现不能保存。然而,你还是可以用"echo >> "这个来追加字符进去。但不能用"echo > "去替换字符。
[root@rhel6 test]# touch ab
[root@rhel6 test]# chattr +a ab
[root@rhel6 test]# echo aa >ab
-bash: ab: 不允许的操作
[root@rhel6 test]# echo aa >>ab
[root@rhel6 test]# cat ab
aa
+i 让文件无法更改。不能被删除,改名,移动,添加数据。但是可以被复制,且复制后的文件i属性消失。也就是那文件固定在那里,任何人也动不了!这个属性对于安全性较高的文件很有用。
[root@rhel6 test]# touch bc
[root@rhel6 test]# chattr +i bc
[root@rhel6 test]# rm -rf bc
rm: 无法删除"bc": 不允许的操作
[root@rhel6 test]# mv bc cd
mv: 无法将"bc" 移动至"cd": 不允许的操作
[root@rhel6 test]# echo yy >>bc
-bash: bc: 权限不够
[root@rhel6 test]# cp bc ../
[root@rhel6 test]# ls ../
ab bc test tt
[root@rhel6 test]# lsattr ../bc
-------------e- ../bc
+c 保存时对文件自动压缩,打开时自动解压。节省磁盘空间。
+S 同步写入磁盘
+s 如果增加这个属性后,对此文件的删除后将无法再行恢复。即彻底删除文件。
+u 与-s相反,即删除后还可以恢复。
我们用得最多的还是i和a属性。