修改Linux文件系统的文件属性(attribute):lsattr、chattr

通过lsattr和chattr命令,可以对Linux文件系统的一些功能进行管理,开关一些特性,以及控制文件的访问权限等。
chmod命令主要是修改文件或文件夹的mode bit,通过user/group/other的用户分组控制文件的访问权限,不同用户有不同的访问权限。
lsattr、chattr相对来说更底层一些,对用户一视同仁,如果设置禁止删除,即使root用户也不能删除,从file system层面直接控制。

通过一些例子理解这两个命令的功能:

# 有一个log文件,内容就一行log
$ ls -l
total 4
-rw-r--r-- 1 dev dev 477 227 11:04 log.txt

$ cat log.txt 
2023-02-23 03:38:05.202991 12624 12624 I b       : post exception : fragrance_state

# 查看log.txt当前的attribute
$ lsattr 
--------------e--- ./log.txt

# 修改attribute前,正常修改文件,追加一行文字
$ echo "before change attribute: +i" >> log.txt 
$ cat log.txt 
2023-02-23 03:38:05.202991 12624 12624 I b       : post exception : fragrance_state
before change attribute: +i

# +i,增加i属性(imutable),禁止修改。修改文件,提示不允许。
$ sudo chattr +i log.txt 
$ lsattr 
----i---------e--- ./log.txt
$ echo "after change attribute: +i" >> log.txt 
bash: log.txt: Operation not permitted

# -i,去掉i属性,正常修改文件
$ sudo chattr -i log.txt 
$ lsattr 
--------------e--- ./log.txt
$ echo "after change attribute: -i" >> log.txt 
$ cat log.txt 
2023-02-23 03:38:05.202991 12624 12624 I b       : post exception : fragrance_state
before change attribute: +i
after change attribute: -i

# +a,增加a属性,append,只能追加内容,不能删除文件和内容。
$ sudo chattr +a log.txt 
$ lsattr 
-----a--------e--- ./log.txt
# 替换文件内容,不允许
$ echo "after change attribute: +a" > log.txt 
bash: log.txt: Operation not permitted
# 向文件追加内容,OK
$ echo "after change attribute: +a" >> log.txt 
# 删除文件,不允许
$ rm log.txt 
rm: cannot remove 'log.txt': Operation not permitted

总结一下:

  1. chattr +/- 增加或删除某个属性,例如:chattr -i
  2. 部分常用属性参考:
    a: append only
    c: compressed
    e: extend format
    i: imutable
    j: data journalling
    s: secure deletion
    u: undeletable
  3. 部分属性和file system版本或kernel版本有关,可查询manual确认。

猜你喜欢

转载自blog.csdn.net/yinminsumeng/article/details/129238097