文章目录
  1. 1. 背景知识
  2. 2. 基本用法
  3. 3. 常用参数
  4. 4. 具体案例
  5. 5. 参考资料

背景知识

在ls命令中有出现过一个-O的选项,即列出文件的file flag。这个File flag所为何物?

File flag是在BSD Unix中的概念,跟Linux系统中的attr是差不多的一个概念,是文件的一些标志位来存放文件的某些属性。chflags就是来修改这个file flag的。这个文件属性是跟文件系统相关的,所以这个命令在不同的文件系统上的支持程度不一样,体现在某一些flag在一些特定的文件系统上没有。[1]

所有的属性都可以被超级管理员修改,有一些可以被文件的所有者修改。以下列出比较常用的几个属性[1]。

属性 ls中显示 chflags中使用 文件所有者能否修改? 详述
隐藏 hidden hidden 能 设置以后在GUI上看不到,ls依然可以看到d
系统级只能添加 sappnd sappnd, sappend 否 设置以后此文件不能够截断或者复写(overwrite),只能通过append模式添加内容
用户级只能添加 uappnd uappnd, uappend 能 设置以后此文件不能够截断或者复写(overwrite),只能通过append模式添加内容
系统级只读 schg schg, schange, simmutable 否 不能够重命名、移动、删除、更改内容
用户级只读 uchg uchg, uchange, uimmutable 能 不能够更改内容

基本用法

chflags [-fhv] [-R [-H | -L | -P]] flags file

常用参数

-R 递归修改参数中文件夹下面的所有文件和文件夹的属性

具体案例

为一个文件添加一个属性

chflags uchg file

为一个文件删除一个属性

chflags nouchg file

在属性名字前面添加no就可以将属性删除,如果这个属性本身已no开头(比如nodump)则去掉no。

将文件夹及其文件夹下所有文件属性进行修改

chflags -R uchg directory

参考资料

  1. chattr - Wikipedia
文章目录
  1. 1. 背景知识
  2. 2. 基本用法
  3. 3. 常用参数
  4. 4. 具体案例
  5. 5. 参考资料