插件窝 干货文章 在 Linux 文件系统中使用 attr 添加扩展属性

在 Linux 文件系统中使用 attr 添加扩展属性

属性 文件 扩展 系统 350    来源:    2025-05-13

Linux 文件系统中使用 attr 添加扩展属性

扩展属性(Extended Attributes, xattr)是 Linux 文件系统中的一项功能,允许用户将额外的元数据关联到文件和目录上。这些属性不是文件内容的一部分,而是与文件系统对象相关联的键值对。

基本概念

Linux 扩展属性分为两类: 1. 用户属性(user) - 普通用户可以查看和修改 2. 系统属性(system) - 需要 root 权限

安装 attr 工具

在大多数 Linux 发行版中,attr 工具包可能默认未安装,需要先安装:

# Debian/Ubuntu
sudo apt-get install attr

# RHEL/CentOS
sudo yum install attr

# Arch Linux
sudo pacman -S attr

基本命令

1. 设置扩展属性

# 设置用户扩展属性
setfattr -n user.keyname -v "value" filename

# 示例:为文件添加作者信息
setfattr -n user.author -v "John Doe" document.txt

2. 查看扩展属性

# 查看所有扩展属性
getfattr -d filename

# 查看特定属性
getfattr -n user.keyname filename

3. 删除扩展属性

# 删除特定属性
setfattr -x user.keyname filename

# 删除所有用户属性
setfattr -h -R -x user - filename

高级用法

递归操作目录

# 递归设置目录下所有文件的属性
find /path/to/dir -type f -exec setfattr -n user.key -v "value" {} \;

# 递归查看目录下所有文件的属性
find /path/to/dir -type f -exec getfattr -d {} \;

备份和恢复属性

# 备份属性
getfattr -d -R /path > attributes_backup

# 恢复属性
setfattr --restore=attributes_backup

系统属性示例

系统属性需要 root 权限:

# 设置系统属性
sudo setfattr -n security.selinux -v "unconfined_u:object_r:user_home_t:s0" file

# 查看系统属性
sudo getfattr -n security.selinux file

注意事项

  1. 不是所有文件系统都支持扩展属性:

    • ext2/3/4、XFS、Btrfs、ReiserFS 等支持
    • FAT、exFAT 等不支持
  2. 检查文件系统是否支持:

    tune2fs -l /dev/sdXN | grep "Default mount options"
    

    应包含 user_xattr 选项

  3. 如果文件系统未启用 xattr 支持,需要在挂载时添加 user_xattr 选项:

    mount -o remount,user_xattr /mountpoint
    
  4. 属性名称通常采用 namespace.name 格式,常见命名空间:

    • user - 用户自定义属性
    • security - 安全相关属性
    • system - 系统内部使用
    • trusted - 仅 root 可访问

扩展属性为文件管理提供了额外的灵活性,可用于存储各种元数据,如文档作者、版本信息、校验和等。