文章目录
  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. 参考资料