文件系统扩展属性操作(setfattr, getfattr)

本文详细介绍了文件系统扩展属性的使用方法,包括attr、setfattr、getfattr等命令的用途及注意事项。同时,阐述了ACL(Access Control List)的新增与检视方式,通过setfacl和getfacl程序实现权限设置与获取。讨论了用户空间属性(user_xattr)在文件系统挂载时的重要性,以及如何通过/etc/fstab配置文件进行正确设置。此外,文章还指出了一些常见错误及其解决办法,旨在帮助用户更好地理解和应用这些高级文件系统特性。
部署运行你感兴趣的模型镜像
最近研究文件系统的扩展属性,在特殊情况下可以实现令人想象不到的效果,现在还没有搞太明白,先记录
几条命令,有时间再深入研究。
attr -s status -V "In Progress" test.txt
Attribute "status" set to a 11 byte value for test.txt:
status

getfattr test.txt
# file: test.txt
user.status

getfattr -n user.status test.txt
# file: test.txt
user.status="In Progress"

如果出现“Operation not supported”错误,要注意两个事情:
1) 文件系统的挂载选项是否包括user_xattr选项,可以用mount命令来查看,比如
/dev/cciss/c0d0p2 on / type ext3 (rw)
/dev/cciss/c0d0p1 on /boot type ext3 (rw)
/dev/sda3 on /data01 type ext3 (rw)
/dev/sdb on /data02 type ext3 (rw,user_xattr)
比较诡异的事情是,/, /data01虽然没有user_xattr选项,但是可以使用setfattr,而/data02去掉
user_xattr选项的话就报“Operation not supported”。因此必须要增加该选项,在/etc/fstab表中格式如下:
LABEL=/ / ext3 defaults 1 1
LABEL=/data01 /data01 ext3 defaults 1 2
LABEL=/boot /boot ext3 defaults 1 2
/dev/sdb /data02 ext3 defaults,user_xattr 1 2
这里区别是/, data01,/boot是安装操作系统时自动生成的,/data02是后来格式化挂载的,不知道其中到底是什么区别。
2)即使使用了user_xattr的选项,照样也会出现这个错误,比如
# setfattr -n "test" -v bigfs f1000
setfattr: f1000: Operation not supported
这里的错误原因是,name 一定是要以 user. 开头项目 (为namespace,一般称呼为命名空间),比如:
# setfattr -n "user.test" -v bigfs f1000

ACL Extended Attribute 新增与检视

setfacl 
程序使用的方式如下:

   setfattr -n name [-v value] pathname...  (新增标注)

   setfattr -x name pathname...      
(取消标注)

 

其中 -n 表示属性名称,-v 后面接属性的储存内容。 -x 表示删除该属性数据。

假设目前已经建立了 file.txt 档案,操作 setfacl 使用如下:

   setfattr -n user.author -v "kenduest" file.txt
   setfattr -n user.desc -v "test only file" file.txt


要注意的是,name 一定是要以 user. 开头项目 (namespace,一般称呼为命名空间),要不然执行期会出现 operation not supported 错误。

getfacl 
程序使用的方式如下:

   getfattr -n name pathname...

其中 -n 表示属性名称,表示取出该属性的数据内容。若是都没指定参数只有接文件名,会列出所有设定上去的属性名称列表。

执行如下命令可以取出属性的纪录内容:

   getfattr -n user.author file.txt
   getfattr -n user.desc file.txt


程序执行结果分别显示输出如下:

   # file: file.txt
   user.author="kenduest"

   # file: file.txt
   user.desc="test only file"


可以发现到刚刚设定的属性数据已经可以正确检视了。

Extended Attribute
其他事宜

 POSIX ACL 权限的一些问题等,并不是所有的程序都支持 Extended Attribute,所以可能程序于存取读写后可能会遗失这类信息纪录,尤其是常使用的 GNU tar 程序就尚未正式纳入该支持,所以在档案目录备份上还需要另外处理细节问题。

若是 Linux Distribution 对于 POSIX ACL Extended Attribute已经整合完备的话,常见的档案目录管理工具应该都会正确支持。而至于 GNU tar 程序问题,到是可以另外安装 star 程序来解决。

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值