扩展属性(Extended Attributes, xattr)是 Linux 文件系统中的一项功能,允许用户将额外的元数据关联到文件和目录上。这些属性不是文件内容的一部分,而是与文件系统对象相关联的键值对。
Linux 扩展属性分为两类: 1. 用户属性(user) - 普通用户可以查看和修改 2. 系统属性(system) - 需要 root 权限
在大多数 Linux 发行版中,attr
工具包可能默认未安装,需要先安装:
# Debian/Ubuntu
sudo apt-get install attr
# RHEL/CentOS
sudo yum install attr
# Arch Linux
sudo pacman -S attr
# 设置用户扩展属性
setfattr -n user.keyname -v "value" filename
# 示例:为文件添加作者信息
setfattr -n user.author -v "John Doe" document.txt
# 查看所有扩展属性
getfattr -d filename
# 查看特定属性
getfattr -n user.keyname filename
# 删除特定属性
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
不是所有文件系统都支持扩展属性:
检查文件系统是否支持:
tune2fs -l /dev/sdXN | grep "Default mount options"
应包含 user_xattr
选项
如果文件系统未启用 xattr 支持,需要在挂载时添加 user_xattr
选项:
mount -o remount,user_xattr /mountpoint
属性名称通常采用 namespace.name
格式,常见命名空间:
扩展属性为文件管理提供了额外的灵活性,可用于存储各种元数据,如文档作者、版本信息、校验和等。