Linux下防止文件被误删除或修改

有时我们的一些重要的文件或目录,不希望被误删除或者修改,我们可以对其加上特殊的属性使其不可修改。。
如果遇到root权限下,删除文件也也被提示无权限“Operation not permitted”,那么你可以查看一下文件是否被设置为不可修改的属性。

chattr(Change Attribute 的缩写)命令就是Linux改变文件属性的命令。
对应地,lsattr 命令可以列出文件的属性。

chattr的用法如下:

chattr - change file attributes on a Linux file system

用法概要:
chattr [ -RVf ] [ -v version ] [ -p project ] [ mode ] files...

最常用的参数包括:
-R 对一个目录及其子目录的属性修改
操作符 +,追加指定属性到文件已存在属性中
操作符 -,删除指定属性
关键属性,我一般最常用的就是i(不可修改), A file with the 'i' attribute cannot be modified。

对于lsattr 就是更简单一些了,只是列出文件的属性。

实例操作

[jay@my-host:/tmp]
$touch a.txt

[jay@my-host:/tmp]
$sudo chattr +i a.txt

[jay@my-host:/tmp]
$lsattr a.txt
----i---------e---- a.txt
# 这里有一个 i 属性

[jay@my-host:/tmp]
$rm -f a.txt
rm: cannot remove ‘a.txt’: Operation not permitted
# 删除文件失败了

[jay@my-host:/tmp]
$sudo rm -f a.txt
rm: cannot remove ‘a.txt’: Operation not permitted
# root账号也删除文件失败了

[jay@my-host:/tmp]
$sudo chattr -i a.txt

[jay@my-host:/tmp]
$lsattr a.txt
--------------e---- a.txt
# 属性 i 应去掉了

[jay@my-host:/tmp]
$rm -f a.txt

完整属性

chattr 提供不同的属性,也就是 aAcCdDeijsStTu。每个字符代表一个特定文件属性。

    a – 只能向文件中添加数据
    A – 不更新文件或目录的最后访问时间
    c – 将文件或目录压缩后存放
    C – 不适用写入时复制机制(CoW)
    d – 设定文件不能成为 dump 程序的备份目标
    D – 同步目录更新
    e – extend 格式存储
    i – 文件或目录不可改变
    j – 设定此参数使得当通过 mount 参数:data=ordered 或者 data=writeback 挂载的文件系统,文件在写入时会先被记录在日志中
    P – project 层次结构
    s – 安全删除文件或目录
    S – 即时更新文件或目录
    t – 不进行尾部合并
    T – 顶层目录层次结构
    u – 不可删除

master

Stay hungry, stay foolish.

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

*