2

linux防止文件和目录被意外删除或修改

 2 years ago
source link: https://segmentfault.com/a/1190000040853998
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.

为了防止在 Linux 系统中意外删除一些重要文件或目录,除了必要的备份之外,还有一个好方法,就是使用

chattr(Change Attribute)命令

在类 Unix 等发行版中,该命令能够有效防止文件和目录被意外的删除或修改。file 文件在 Linux 中被描述为一个数据结构,chattr 命令在大多数现代 Linux 操作系统中是可用的,可以修改file属性,一旦定义文件的隐藏属性,那么该文件的拥有者和 root 用户也无权操作该文件,只能解除文件的隐藏属性。

chattr [operator] [switch] [file]

operator 具有如下操作符:

  • 操作符 +,追加指定属性到文件已存在属性中
  • 操作符-, 删除指定属性
  • 操作符=,直接设置文件属性为指定属性

switch 常用属性指令如下

a:让文件或目录仅供附加用途;
b:不更新文件或目录的最后存取时间;
c:将文件或目录压缩后存放;
d:将文件或目录排除在倾倒操作之外;
i:不得任意更动文件或目录;
s:保密性删除文件或目录;
S:即时更新文件或目录;
u:预防意外删除。
  • -R:递归处理,将指令目录下的所有文件及子目录一并处理;
  • -v<版本编号>:设置文件或目录版本;
  • -V:显示指令执行过程

设置文件不能被改名,移动删除,增删数据

> lsattr rumenz.txt 
---------------- rumenz.txt

> chattr +i rumenz.txt
> lsattr rumenz.txt 
----i----------- rumenz.txt

尝试修改文件

> echo "rumenz.com" > rumenz.txt
-bash: rumenz.txt: Permission denied

提示没有权限

删除特殊i权限

> chattr -i rumenz.txt

设置目录不能建立,移动和删除文件

> mkdir rumenz && touch rumenz/1.txt
> tree 
.
└── rumenz
    └── 1.txt
> lsattr rumenz/
---------------- rumenz/1.txt
> chattr +i -R rumenz/
> lsattr rumenz/
----i----------- rumenz/1.txt

rumenz目录下创建目录

> mkdir rumenz/one
mkdir: cannot create directory ‘rumenz/one’: Permission denied

提示权限不足

rumenz/1.txt文件中添加数据

> echo "rumenz.com" > rumenz/1.txt 
-bash: rumenz/1.txt: Permission denied

删除特殊i权限

> chattr -i -R rumenz

设置文件只能添加数据,不能修改,删除,移动该文件

> lsattr rumenz.txt
---------------- rumenz.txt
> chattr +a rumenz.txt
> lsattr rumenz.txt
-----a---------- rumenz.txt

修改rumenz.txt文件内容

> echo "rumenz.com" > rumenz.txt
-bash: rumenz.txt: Operation not permitted
> echo "rumenz.com" >> rumenz.txt

修改覆盖rumenz.txt文件内容不行,向后追加可以。

修改文件名

> mv rumenz.txt one.txt
mv: cannot move ‘rumenz.txt’ to ‘one.txt’: Operation not permitted

提示权限不足

设置rumenz目录下只能添加目录,文件,但是不能对里面的文件夹,文件修改,移动,删除。

> chattr +a -R rumenz
> lsattr rumenz/
-----a---------- rumenz/1.txt

rumenz目录下创建one

> mkdir rumenz/one

rumenz/one目录重命名

> mv rumenz/one rumenz/tow
mv: cannot move ‘rumenz/one’ to ‘rumenz/tow’: Operation not permitted

rumenz目录下创建文件

> touch rumenz/3.txt
> ls rumenz/
1.txt  3.txt  one

不能删除rumenz/3.txt文件

> rm -rf rumenz/3.txt 
rm: cannot remove ‘rumenz/3.txt’: Operation not permitted

不能被删除

可以修改rumenz/3.txt文件内容

> echo "rumenz.com" > rumenz/3.txt
> cat rumenz/3.txt 
rumenz.com

原文链接:https://rumenz.com/rumenbiji/...
微信公众号:入门小站


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK