Chinaunix首页 | 黑桃棋牌官方网下载 | 博客
  • 博客访问: 699638
  • 博文数量: 115
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1480
  • 用 户 组: 普通用户
  • 注册时间: 2016-12-21 22:26
  • 个人简介

    90后空巢老码农

    文章分类

    全部博文(115)

  • redis(52)
  • vim(1)
  • 正则表达式(1)
  • 分布式(1)
  • Linux环境编程(2)
  • 让你丫爬(1)
  • STL(7)
  • 数学(10)
  • shell脚本(1)
  • Linux驱动(1)
  • 网络(6)
  • 数据结构-算法(14)
  • Linux/UNIX系统编(18)
  • 未分配的博文(0)
  • 文章存档

    2020年(13)

    2019年(54)

    2018年(47)

    2017年(1)

    我的朋友

    分类: LINUX

    2020-03-08 20:42:16

    扩展属性(EA),即以“名称-值”形式将任意元数据与文件inode关联起来的技术。EA的名格式为namespace.name,其中namespace用来把EA从功能上划分为截然不同的几大类,而那么则用来在既定命名空间内唯一标识某个EA。可供namespace使用的值有如下四个:
    1. user EA。将在文件权限检查的制约下由非特权级进程操控。欲获取user EA的值,需要有对文件的读权限;欲改变user EA的值,需要写权限
    2. trusted EA,也可由用户进程驱使,这点和user EA很相似,而区别在于,要曹总trusted EA, 进程必须有特权
    3. system EA,供内核使用,将系统对象与以文件关联。目前仅支持访问控制列表。
    4. security EA,作用有二,其一用来存储服务于操作系统安全模块的文件安全标签;其二,将可执行文件与能力关联起来

    扩展属性相关的接口为:

    创建和修改EA

    点击(此处)折叠或打开

    1. #include <sys/xattr.h>
    2. int setxattr(const char *pathname, const char *name, const void *value, size_t size, int flags);
    3. int lsetxattr(const char *pathname, const char *name, const void *value, size_t size, int flags);
    4. int fsetxattr(int fd, const char *name, const void *value, size_t size, int flags);
    5. /*all return 0 on success, or -1 on error*/
    获取EA

    点击(此处)折叠或打开

    1. #include <sys/xattr.h>
    2. ssize_t getxattr(const char *pathname, const char *name, void *value, size_t size);
    3. ssize_t lgetxattr(const char *pathname, const char *name, void *value, size_t size);
    4. ssize_t fgetxattr(int fd, const char *name, void *);
    5. /*all return (nonnegative) size of EA value on success, or -1 on error*/

    删除EA

    点击(此处)折叠或打开

    1. #include <sys/xattr.h>
    2. int removexattr(const char *pathname, const char *name);
    3. int lremovexattr(const char *pathname, const char *name);
    4. int fremovexattr(int fd, const char *name);
    5. /*all return 0 on success, or -1 on error*/
    获取与文件相关联的所有EA名称

    点击(此处)折叠或打开

    1. #include <sys/xattr.h>
    2. ssize_t listxattr(const char *pathname, char *list, size_t size);
    3. ssize_t llistxattr(const char *pathname, char *list, size_t size);
    4. ssize_t flistxattr(int fd, const char *list, size_t size);
    5. /*all return number of bytes copied into list on success, or -1 on error*/

    ACL

    利用ACL,可以在任意数量的用户和组之中,为单个用户或组制定文件权限。
    一个ACL由一系列ACL记录组成,其中每条记录都针对单个用户或用户组定义了对文件的访问权限。其调用api之间的关系如下图(要包含sys/acl.h和acl/libacl.h):



    阅读(3659) | 评论(0) | 转发(0) |
    给主人留下些什么吧!~~
    评论热议
    请登录后评论。

    登录 注册