Unix⽂件权限
Unix/Linux系统中,对⽂件(包括⽬录)的权限有⼀套完整的管理机制。这样的机制保证了系统的安全性。本⽂主要对Unix/Linux系统中的权限管理进⾏介绍。
⼀:⽂件类型
Unix系统中主要有7种⽂件类型,分别是普通⽂件(regular file,包括⽂本⽂件和⼆进制⽂件,在Unix中⽂本⽂件和⼆进制⽂件没有本质的区别,可执⾏⽂件就是⼆进制⽂件,⼆进制⽂件需要满⾜⼀定的格式才可以被内核解析执⾏),⽬录⽂件,块特殊⽂件和字符特殊⽂件(块特殊⽂件提供对设备带缓冲的访问,字符特殊⽂件提供对设备不带缓冲的访问),FIFO(⽤于进程间通信,也称为命名管道),套接字(⽤于进程间⽹络通信),符号链接(指向另⼀个⽂件的⽂件)。
unix系统主要用于
⼆:读取⽂件信息
Unix系统在<sys/stat.h>⽂件中提供访问⽂件信息的函数,主要包括stat,lstat,fstat,fstatat四个函数,stat函数利⽤⽂件名获取⽂件相关信息,将获取的信息放⼊stat结构中。stat结构也在<sys/stat.h>中定义。同时头⽂件中定义了⼀系列宏可以⽤来验证⽂件的类型,stat结构中的st_mode字段可以⽤来判断⽂件类型。其原理是将st_mode与屏蔽字做按位与操作,然后与特定的表⽰⽂件类型的屏蔽字做对⽐,相等则表明是相关的⽂件类型。
三:⽂件访问权限
Unix⽂件中标识⽂件权限的位有12位,从低位到⾼位的前9位为普通的权限位,分别表⽰其他⽤户,组⽤户,⽂件所有者⽤户的rwx权限。对所有类型的⽂件⽽⾔,rwx权限都是有效的。除了这9位之外,还有3位,分别是设置⽤户ID位,设置组ID位,粘着位。(粘着位是较⽼的概念,⼀些较常使⽤的程序的⽂本副本可以保存在交换区,这样下次可以较快的将程序读⼊内存,粘着位是标识是否将副本放置到交换区的位。)同时还有设置⽤户ID位和设置组ID位,⼀个可执⾏的⽂件可能可以被⾮⽂件所有者的⽤户执⾏,此时,程序可能需要⽂件所有者的权限才可以访问程序中需要⽤到的资源,这时如果设置了设置⽤户ID位则可以将程序(进程)的有效⽤户ID设置为程序所有者的ID,如果设置了设置⽤户组ID位,则可以将进程的有效⽤户组ID设置为程序的⽤户组ID。使⽤ls –al命令时,只会显⽰⼀个⼗位的⽂件信息,第⼀个位为标识⽂件类型的位。其余9位位为标识⽂件所有者,组⽤户,其他⽤户权限的位。标识设置⽤户ID位是通过在⽂件所有者权限位的x位显⽰的,当x位为s时,x和设置⽤户ID 位被设置,为S时,x位未被设置,设置⽤户ID位被设置。设置⽤户组ID位是通过组⽤户权限的标识为x标识的,其中同时设置了设置⽤户组ID 和⽤户组执⾏位则为s,只设置了⽤户组ID为S。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。