文件的存取许可权

简介: 文件的存取许可权

在介绍用于描述文件信息的结构体 stat 的时候,其成员 st_mode 值指定了属主对文件的存取许可权。所有类型的文件(目录、字符设备文件等)都有存取许可权,而不只是普通文件。每个文件都对应九种存取许可权,可将他们分为三类,如下所示:

st_mode 意义说明
S_IRUSR 所属用户可读
S_IWUSR 所属用户可写
S_IXUSR 所属用户可执行
S_IRGRP 与所属用户同组的其他用户可读
S_IWGRP 与所属用户同组的其他用户可写
S_IXGRP 与所属用户同组的其他用户可执行
S_IROTH 其他用户可读
S_IWOTH 其他用户可写
S_IXOTH 其他用户可执行


上述表格中的宏在 <sys/stat.h> 中的定义如下所示:

#define    S_IRUSR    __S_IREAD    /* Read by owner.  */
#define    S_IWUSR    __S_IWRITE    /* Write by owner.  */
#define    S_IXUSR    __S_IEXEC    /* Execute by owner.  */
/* Read, write, and execute by owner.  */
#define    S_IRWXU    (__S_IREAD|__S_IWRITE|__S_IEXEC)
#define    S_IRGRP    (S_IRUSR >> 3)    /* Read by group.  */
#define    S_IWGRP    (S_IWUSR >> 3)    /* Write by group.  */
#define    S_IXGRP    (S_IXUSR >> 3)    /* Execute by group.  */
/* Read, write, and execute by group.  */
#define    S_IRWXG    (S_IRWXU >> 3)
#define    S_IROTH    (S_IRGRP >> 3)    /* Read by others.  */
#define    S_IWOTH    (S_IWGRP >> 3)    /* Write by others.  */
#define    S_IXOTH    (S_IXGRP >> 3)    /* Execute by others.  */
/* Read, write, and execute by others.  */
#define    S_IRWXO    (S_IRWXG >> 3)点击复制复制失败已复制


提示

  1. <sys/stat.h> 的具体位置在 Ubuntu 20.04 中为: /usr/include/x86_64-linux-gnu/sys/stat.h
  2. S_IRWXUS_IRWXGS_IRWXO 为三种权限均具有的宏。


继续追踪,上述宏的原型在<bits/stat.h>中定义如下所示:

#define    __S_IREAD    0400    /* Read by owner.  */
#define    __S_IWRITE    0200    /* Write by owner.  */
#define    __S_IEXEC    0100    /* Execute by owner.  */点击复制复制失败已复制


提示

<bits/stat.h>的具体位置在 Ubuntu 20.04 中为: /usr/include/x86_64-linux-gnu/bits/stat.h


由此可以分析得出,用于表示文件权限的宏其实是八进制数,因此,如果需要定义文件的存取权限,可以采用位运算的方式进行转换,如下所示:

#define I_SRWXU S_IRUSR|S_IWUSR|S_IXUSR点击复制复制失败已复制


I_SRWXU表示用户对文件拥有可读、可写、可执行的权限,用户指的是文件所有者。如同在Windows操作系统中,管理员就是一个特殊的用户,拥有至高的权限。


进一步讨论,要打开任一类型的文件,对该名字包含的每一个目录,包括它可能隐含的当前目录,都应具有执行许可权,例如,为了打开文件/usr/include/stdio.h,需要具有对目录/usr/include执行许可权,以及对文件本身的适当许可权。


注意

对于目录来说,读许可权执行许可权的意义不相同。读许可权允许读目录,获得该目录中所有文件名的列表。要在一个目录中创建一个新文件,必须对该目录具有写许可权执行许可权。同样,删除一个文件,需要对目录具有写许可权执行许可权,而不涉及对文件本身的许可权。

目录
相关文章
|
8月前
|
存储 C# 容器
救命!C变量定义的秘密居然被我发现了!
救命!C变量定义的秘密居然被我发现了!
43 2
|
算法 安全 大数据
即将删除,这些秘密今天只讲一次
即将删除,这些秘密今天只讲一次
112 0
OFFICE技术讲座:一级标点压缩共有几种情形
OFFICE技术讲座:一级标点压缩共有几种情形
155 0
|
人工智能 数据安全/隐私保护
带你读《数据自治》第三章数据权3.3个人数据权(二)
带你读《数据自治》第三章数据权3.3个人数据权
|
存储 安全 大数据
带你读《数据自治》第三章数据权3.3个人数据权(一)
《数据自治》第三章数据权3.3个人数据权(一)
|
数据采集 数据挖掘 定位技术
带你读《数据自治》第三章数据权3.2数据的权利(一)
《数据自治》第三章数据权3.2数据的权利
你还在任意选择字体注册商标,知不知道侵权了?
十年前,方正起诉暴雪字体侵权并索赔1亿元,2009年索赔金额被追加至4.08亿元!2012年,最高人民法院判决暴雪公司等停止侵权并赔偿北大方正公司经济损失200万元及诉讼合理支出5万元。 十个年头过去了,这物价、房价、油价统统都涨了,估计方正再抓个侵权的家伙,索赔金额不是拿刀“砍”而是拿斧头“剁”,赔付金额只有咱们想不到,没有他们诉讼不到! 2016年《九层妖塔》因使用了未授权字体中的7个字,就被索赔14万元!2万一个字,算的上是唐伯虎当年的笔墨市价了! 什么是商标字体? 商标中的文字所使用的字体就是商标字体,可以是印刷体,也可以是手写体或美术体。
商标与商号的区别大,难道因此引发权利冲突?
从字面上看,商标和商号就像是两兄弟,其实两者之间的差别可大了呢!不仅区别大,还经常发生冲突,今日跟随小编的脚步,一同走进商标和商号。 商标和商号的区别 第一、功能与作用不同 商标,主要是用来用来区别一个经营者的品牌或服务和其他经营者的商品或服务的标记,一个商标一般会和某些特定商品相联系。