linux中的文件权限大家一般熟悉的就是777了,实际上文件的权限是有7777的,之前遇到没搞明白,还觉得是文件系统出问题了呢,现在想想当时自己还是太轻浮了,没仔细去看,今天闲着没事终于可以吧剩下的7给搞明白了。
后面三位一般都能查的出来的,第一个7就是owner的权限了。7代表的就是三个1.分别是读写执行。第二个7对应的这个文件拥有者所在组的权限,第三个7就是其他所有者的权限了,第一个7也是由三位的,第一位是sticky位,如果这个位启用(置为1),mode最后一个字段变为t,对于可执行文件来说是让他常驻内存,而不管他的执行状态,,当这一特性应用到一个频繁使用的程序时,就会提高性能,因为这减少了从磁盘访问文件信息所花费的时间,当一个目录启用sticky时,他可以防止对那个目录有些权限的用户(不包括root和文件所有者)删除或者更名其中的文件。
suid 设置这个位之后,用户访问权限上的可执行位x变为s,当用户执行一个可执行文件时,执行程序就与调用这个文件 用户关联起来,那么进程就继承文件所有者的UID,因而可以访问所有者的所有访问权,这就产生了实际UID和有效UID的,一般情况下这两个是相同的,但是如果设置了suid(setuid)位,则有效的uid便成为了文件拥有者的ID了。suid曾被黑客们使用,他们给root所拥有的可执行文件社着了suid位后再调用他们,将程序的操作转去非root权限不能执行的指令。
sgid,跟suid相似,不过是所有者变成了所有者所在的组