Unix系统文件及其权限简介在Unix系统中,所有文件类型都有访问权限。文件类型分为:普通文件(regular file),目录文件(directory file),块特殊文件(block special file),字符特殊文件(character special file),FIFO,套接字(socket),符号链接(symbolic link)。下面分别对它们进行简单的介绍: 普通文件(regular file)这种文件包含了某种形式的数据,至于是文本还是二进制,Unix内核并不关心。对普通文件内容的解释由处理该文件的应用程序进行。 目录文件(directory file)该文件包含了其他文件的名字以及指向其他文件的指针。对一个目录文件具有读权限的任意进程意味着可以读该目录的内容,但是只有内核可以直接写目录文件。 块特殊文件(block special file)这种文件提供对设备(如磁盘)带缓冲的访问,每次访问以固定长度为单位进行。 字符特殊文件(character special file)这种类型文件提供对设备不带缓冲的访问,每次访问长度可变。系统中的所有设备要么是字符特殊文件,要么是块特殊文件。 FIFO用于进程间通信,有时也称为命名管道。 套接字(socket)用于进程间网络通信,也可以用于在一台宿主机上进程之间的非网络通信。 符号链接(symbolic link)这种文件指向另一个文件。 stat结构中的st_mode成员
stat函数通常用于查看文件的信息结构,stat结构体一共有13个成员,如下面代码所示: zzw@zzw-ThinkPad-Edge-E430c:~$ stat wifi.sh 文件:"wifi.sh" 大小:70 块:8 IO 块:4096 普通文件 设备:80ah/2058d Inode:922048 硬链接:1 权限:(0755/-rwxr-xr-x) Uid:( 1000/ zzw) Gid:( 1000/ zzw) 最近访问:2015-08-01 13:32:55.585847606 +0800 最近更改:2015-07-30 21:33:20.000000000 +0800 最近改动:2015-08-01 13:32:33.017846764 +0800 文件访问权限9个访问权限位每个文件有9个访问权限位,可将它们分为3类: S_IRUSR 用户读 S_IWUSR 用户写 S_IXUSR 用户执行 S_IRGRP 组读 S_WGRP 组写 S_XGRP 组执行 S_IROTH 其他读 S_IWOTH 其他写 S_IXOTH 其他执行 创建文件模式屏蔽字umask函数为每一个进程设置文件模式创建屏蔽字,并返回之前的值。 #include<sys/stat.h> mode_t umask(mode_t cmask); Unix系统的多数用户从不处理umask值。通常在登陆时,由shell的启动文件设置一次,然后,再不改变。尽管如此,如果我们在创建文件时,要保证制定权限位已经激活,那么必须显示修改umask。 可以通过设置umask值来控制我们所创建文件的默认权限。该值为八进制数,一位代表要屏蔽的权限,如下所示: 0400 用户读 0200 用户写 0100 用户执行 0040 组读 0020 组写 0010 组执行 0004 其他读 0002 其他写 0001 其他执行 默认情况下,shell进程的umask值为002,即其他没有执行的权限。 可以使用umask -S来打印权限。也可以通过例如umask 027来设置其值为027。 转载请保留固定链接: https://linuxeye.com/Linux/2761.html |