Linux属性怎么定义,Linux 文件系统扩展属性【转】

扩展属性(xattrs)提供了一个机制用来将《键/值》对永久地关联到文件,让现有的文件系统得以支持在原始设计中未提供的功能。扩展属性是文件系统不可知论者,应用程序可以通过一个标准的接口来操纵他们,此接口不因文件系统而异。每个扩展属性可以通过唯一的键来区分,键的内容必须是有效的UTF-,格式为namespace.attribute,每个键采用完全限定的形式。

需要注意的是这里的值可以是任意字节的数组,未必是字符存,而且最后可能不是null,这样在访问的时候必须知道值的大小。在设置的时候当然也就需要设置值大小。

一个扩展属性的用处:GUI的文件管理程序的行为根据文件类型而异。要判断文件的格式,Winodws之类的操作系统仅需要查看文件的扩展名就可以了,而Unix系统往往需要查看文件的内容来判断类型。有些文件管理程序会直接产生此信息,有些则会将产生的信息缓存起来以备下次使用。一个更好的做法就是将此类元数据存入扩展属性。

Linux下定义的4种扩展属性命名空间:

system:用于实现利用扩展属性的内核功能,例如访问控制表。eg:system.posix_acl_access便是位于此用户空间的扩展属性,用户是否可以读取或写入这些属性取决于所使用的安全模块。

security:用于实现安全模块。

trusted:把受限制的信息存入用户空间。

user:一般进程所使用的标准命名空间,经过一般文件权限位来控制此命名空间的访问。

下面是一个使用扩展属性的例子:

创建磁盘

# dd if=/dev/zero of=/opt/testptn count=

# mke2fs xattr_disk

挂载磁盘

# mount -o loop,user_xattr xattr_disk mnt

扩展特性的操作

# touch test.txt

设置扩展特性

# setfattr -n user.abc -v test.txt

显示扩展特性

# getfattr -n user.abc test.txt

# file: test.txt

user.abc=""

再一个例子:

#include

#include

#include

#include

#include

#include

void testset(){

char key[] = {'u','s','e','r','.','#','\0'};

char value[] = {'#','\0'};

int i, ret;

for(i = ; i < ; i++){

key[] = value[] = ''+i;

ret = setxattr("test", key, value, , );

}

}

void testlist(){

char buf[];

int ret, i=, j = ;

printf("The key on test are:\n");

ret = listxattr("test", buf, );

while(i < ret){

printf("%s\n", buf+i);

i += strlen(buf+i);

i++;

}

}

void testremove(){

char key[] = "user.2";

int ret;

ret = removexattr("test", key);

printf("%d\n", ret);

}

void testget(){

char key[] = "user.#";

char value[];

int ret, i;

printf("The on test are:\n");

for(i = ; i < ; i++){

key[] = ''+i;

ret = getxattr("test", key, value, );

if(ret != -)

printf("\n", key, value);

}

}

int main(){

testset();

testlist();

testremove();

testget();

return ;

}

chattr lsattr linux file system attributes - linux 文件系统扩展属性

我们使用 linux 文件系统扩展属性,能够对linux文件系统进行进一步保护:从而给文件 赋予一些额外的限制:在有些情况下,能够对我们的系统提供保护: chattr命令用来改变文件属性.这项指令可改 ...

linux文件系统扩展属性

翻译自man手册,水平有限,有错还望不吝指出.... 扩展属性是与文件和目录相关的name:value对,用来提供文件系统的一些附加功能,例如ACL.对文件或是目录拥有读权限的用户可以看到其扩展属性. ...

linux文件系统拓展属性

在研究GlusterFS中,发现GlusterFS使用了文件系统的Extended Attributes,中文可以称之为文件系统扩展属性.由于资料比较少,中文资料更少,因此把记录几点Extended ...

chattr - 修改文件在Linux第二扩展文件系统(E2fs)上的特有属性

SYNOPSIS(总览) chattr [ -RV ] [ -v version ] [ mode ] files... DESCRIPTION(描述) chattr 修改文件在Linux第二扩展文件 ...

lsattr - 显示文件在Linux第二扩展文件系统上的特有属性

SYNOPSIS(总览) lsattr [ -RVadv ] [ files... ] DESCRIPTION(描述) lsattr 显示文件在Linux第二扩展文件系统上的特有属性 OPTIONS( ...

Ext4文件系统架构分析(三) ——目录哈希、扩展属性与日志

struct dx_root Htree的内部节点: struct dx_node Htree 树根和节点中都存在的 Hash map: struct dx_entry 1.20 扩展属性EA 扩展属 ...

Linux实战教学笔记08:Linux 文件的属性(上半部分)

第八节 Linux 文件的属性(上半部分) 标签(空格分隔):Linux实战教学笔记 第1章 Linux中的文件 1.1 文件属性概述(ls -lhi) linux里一切皆文件 Linux系统中的文件 ...

Linux文件系统Ext2,Ext3,Ext4性能大比拼

Linux kernel 自 2.6.28 开始正式支持新的文件系统 Ext4. Ext4 是 Ext3 的改进版,修改了 Ext3 中部分重要的数据结构,而不仅仅像 Ext3 对 Ext2 那样,只 ...

Linux实战教学笔记08:Linux 文件的属性(下半部分)

第八节 Linux 文件的属性(下半部分) 标签(空格分隔): Linux教学笔记 ---更多相关资料请点我查看 第1章 链接的概念 在linux系统中,链接可分为两种:一种为硬链接(Hard Lin ...

随机推荐

测试cookie的读写

js文件使用utf8编码

你可能感兴趣的:(Linux属性怎么定义)