3

linux文件的属性

 2 years ago
source link: https://zzyongx.github.io/blogs/file-attr.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

linux文件的属性

说起文件,首先想到文件的内容,通常可以用 md5sum 计算签名。其次想到文件的状态,包括owner,mode,time等,通常用statls -l查看。那么两个文件的内容和状态完全一样,两个文件就完全一样了吗?

linux文件还有属性、扩展属性、acl,如果碰到文件内容和状态都一样,但文件行为不一样,不妨检查下这些属性。

1 文件属性

文件属性是文件系统内置的属性,操作文件时会检查这些属性。它们以状态位的形式存在,几乎不占用额外的磁盘空间。 文件属性用 lsattr 查看,用 chattr +-=[aAcCdDeijsStTu] 操作 + 表示开启, - 表示关闭,= 表示设置。 常用的文件属性包括:

  1. i 只读属性,开启后文件不能被修改,移动,改名等。只有root和配置了CAP_LINUX_IMMUTABLE的进程才能操作该属性。
  2. a append属性,类似 i ,但文件可以追加

2 文件扩展属性

文件扩展属性是应用定义的属性,以 namespace.field=value 的形式存在,属性的含义由应用解释(rsync 通过 user.rsync.%stat 实现 fake-super功能)。namespace目前支持 user,system等,不能任意指定,key可以任意指定,但最好加上应用自己的标记,以免不同应用冲突。

  1. 设定属性 setfattr -n user.foo.favor -v apple test-xattr
  2. 获取属性 getfattr -d test-xattr

3 文件acl

除了chmod设定文件的读写权限,还可以通过acl控制,acl可以细粒度划分权限。 例如 root-test 文件仅让root和指定其它用户可读

  1. chmod 0600 root-file 此时只有root可读,zzyong没权限。
  2. setfacl -m u:zzyong:r root-file 给zzyong添加读权限
  3. getfacl root-file 查看,现在zzyong已经可读

4 如何备份文件

cp 能备份文件吗?是的,但必须是 cp -a --preserve=all ,其中 --preserve=all 用来复制acl。 此外可以用 rsync -a -A ,其中 -A 用来复制acl。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK