前面介绍的struct stat结构体中st_mode字段记录了文件的类型和文件的访问权限。因为Linux系统是由文件构成的,所以这里的文件权限适用于Linux系统所有的文件,包括目录、文件、设备、软连接等等,这里就不一一列举了。在这些权限中分为普通权限和特殊权限。
这里讲的普通权限就是前面的st_mode字段中所说的文件所有者权限、同组用户权限和其他用户权限,下面来回忆一下这些权限有什么内容:
文件权限
权限宏
含义
文件所有者权限(U
S_IRUSR
读权限(r)
S_IWUSR
写权限(w)
S_IXUSR
执行权限(x)
同组用户权限(G
S_IRGRP
读权限(r)
S_IWGRP
写权限(w)
S_IXGRP
执行权限(x)
其他用户权限(O
S_IROTH
读权限(r)
S_IWOTH
写权限(w)
S_IXOTH
执行权限(x)
知道了上面的内容以后先看一下系统中是如何对这些权限描述的。
$ ls -l
total 36
-rwxr-xr-x 1  elf   elf    16176  8月  22 16:30  chown_test
-rw-r--r-- 1   elf   elf    440    8月  22 16:30  chown_test.c
-rwxr-xr-x 1  root  root  16272  8月  22 16:28  lstat_test
chown_test为例,可以看到他前面的权限为-rwxr-xr-x,这里咱们先省略左边第一个“-”,从第二个开始每三个一组,分别对应的“rwx”文件所有者有读写执行权限、“r-x”同组用户有读和执行权限、“r-x”其他用户有读和执行权限。
下面说说左边第一个-”是什么意思。
-:表示这是一个常规文件(普通文件),如文本文件、可执行文件等
b:表示这是一个块设备文件,如硬盘、光驱等
c:表示这是一个字符设备文件,如键盘、鼠标等
l:表示这是一个符号链接(软连接)。
s:表示这是一个套接字文件(socket)。
p:表示这是一个管道文件(FIFO
所以左边第一个-”代表为可执行文件。

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Powered by Discuz! X3.5  © 2001-2013 Comsenz Inc.