当前位置:嗨网首页>书籍在线阅读

03-扩展属性的实现细节

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

16.2 扩展属性的实现细节

本节是对上一节内容的延伸,描述EA实现的部分细节。

对user扩展属性的限制

user EA只能施之于文件或目录,之所以将其他文件类型排除在外,原因如下。

  • 对于符号链接,会对所有用户开启所有权限,且不容更改。(如18.2节所述,符号链接的权限在Linux上毫无意义。)这意味着,无法利用权限来阻止任意用户将user EA置于符号链接之上。要想解决这个问题,就得防止所有用户针对符号链接创建user EA。
  • 对于设备文件、套接字以及FIFO而言,授予用户权限,意在对其针对底层对象所执行的I/O操作加以控制。如欲操控这些权限,转而求取对创建user EA的控制,则二者间会产生冲突。

此外,若某一目录启用了粘性位(sticky位)(15.4.5节),且为其他用户所拥有,则非特权进程不能将一user EA置于该目录之上。惟其如此,才能防止任一用户将EA附着于诸如/tmp之类的目录,由于其可写权限对所有用户开放(从而导致任意用户均可操纵此目录的EA),而设置粘性位,意在防止用户删除该目录下为其他用户所拥有的文件。

EA在实现方面的限制

Linux VFS针对所有文件系统上的EA均施以如下限制。

  • EA名称的长度不能超过255个字节。
  • EA值的容量为64KB。

此外,某些文件系统对可与文件挂钩的EA数量及其大小还有更为严格的限制。

  • 在ext2、ext3以及ext4文件系统上,与一文件关联的所有EA命名和EA值的总字节数不会超过单个逻辑磁盘块(14.3节)的大小:1024字节、2048字节或4096字节。
  • 在JFS上,为某一文件所使用的所有EA名和EA值的总字节数上限为128KB。