你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

介绍一个命令,它将给你的重要文件加一把锁

[复制链接]
gaosmile 发布时间:2020-6-5 11:33
文件是我们在电脑里最珍贵的财富,我们经常工作了老半天,然后出来的成果就只是一个文件而已。特别是程序员,我们写了半天的代码,结果也就是一个个代码文件而已。
但是,我们都有过这样惨痛的经历——工作了老半天,结果不小心把文件删除了……
这时候,你的心情是怎样的?痛苦?自责?无奈?
今天良许就给大家介绍一个命令,它将给你的重要文件加一把锁,防止误删除或误修改,为你的宝贝文件保驾护航!
  chattr命令简介  

- ?, s& ]% z/ e* b
这里我们需要使用到一个命令是:chattr ,这个命令在大部分的 Linux 发行版里都有,所以对于它的安装就不赘述了。它的基本用法如下:
( E( P8 q5 h; ^$ D% U& V
$ chattr 操作符 属性 文件名
" l( A" B+ V* X% t
对于操作符,有以下三种:
  • + :给文件增加属性
  • - :去除文件属性
  • = :设置文件的仅有属性

    ; Q% _, p. u; G( A9 c' H
注意,这里讲的属性不是文件对应的系统属性,而是 chattr 给文件赋予的属性。本文要讲的属性有以下两个:
  • a - 允许给文件追加内容
  • i - 保护模式(不允许删除或修改)

      h  |$ O" \- w' a8 p; c6 B
但是,它的属性可以设置很多,有兴趣的小伙伴可以去看下它的 man 手册。
$ man chattr
5 _  Y& n4 x) U" l3 V- p3 t
  防止文件被误删除或修改  
7 g$ S3 T% N: \/ J$ W
假如我们现在有个国宝级重要文件 file.txt ,现在我们使用 chattr 对它进行保护。在这里,我们给文件增加 +i 属性:8 q5 M, Z5 @  u7 `
$ sudo chattr +i file.txt
. D: ^% \  ]7 B
然后,我们可以使用 lsattr 命令查看它的属性。类似的输出如下:
$ lsattr file.txt
' K6 m7 ^3 S- S& i6 M6 l3 ~----i---------e---- file.txt
2 J' x  i6 C; A$ b! k7 j/ n% @- w
微信图片_20200605113225.jpg
现在,我们来尝试一下,手贱去删除那个文件:
$ rm file.txt8 s- Z1 J' k- U, J( s  O
rm: cannot remove 'file.txt': Operation not permitted

9 G8 ?* X" w  M! Z6 M
咦?不允许删除?难道权限不够?
那好,我 sudo 一下!
$ sudo rm file.txt
" Z$ ^& E# }9 [8 l) h+ Zrm: cannot remove 'file.txt': Operation not permitted
4 I) U/ R, r- q3 \
我 X ,居然还是不能删除?
我们再来试一下,修改文件的内容。
$ echo 'hello world!' >> file.txt
4 Q3 ~0 V6 L& b' L) H/ fbash: file.txt: Operation not permitted

% T; v8 P& o2 [6 @
可以看出来,依然不能对文件进行修改了。
微信图片_20200605113228.jpg
而且,即使你从 GUI 界面手动去删除这个文件,也还是不能耐他几何。
微信图片_20200605113230.png
所以,可以看出来,现在这个文件得到了很好的保护,既不能被删除(各种方法都不行),也不能被修改。
那我们要怎么去除这个保护呢?很简单,只需加上 -i 这个选项。
$ sudo chattr -i file.txt* P- T+ |/ F% S+ l- E% R6 l
现在,文件又恢复原样了,我们想修改就修改,想删除就删除。
$ echo 'Hello World!' >> file.txt1 h/ x  n8 R) m' o; R9 Z- y
$ cat file.txt
  ^" x7 Z! s/ M0 [" U5 I3 @Hello World!
' u4 M: C4 Z* Y$ rm file.txt
5 a- l* {4 }' F* r
防止文件夹被误删除或修改  

. ?. h: Y. i& `$ r( t
上面讲到的是保护文件,那么文件夹要如何保护呢?
3 k+ _& D% ~1 X3 U# U+ m
其实也是一样,使用 +i 这个选项。假如我们现在有个 dir1 目录,里面有个 file.txt 文件。我们来对这个文件夹进行保护。
$ sudo chattr -R +i dir1
9 U  h) }" W1 C5 }
在这里,我们使用 -R 选项表示可以递归作用到目录里所有的文件(包括子目录)。
现在,我们同样测试一下是否可以被删除或修改。
$ rm -rf dir1& R8 b5 j- \- s; T0 a+ E
$ sudo rm -rf dir1' m$ q7 L5 c% I8 U
rm: cannot remove 'dir1/file.txt': Operation not permitted
' ?/ |& w) O/ C. B$ echo 'hello world!' >> dir1/file.txt) A- E: P$ K, D! C3 I! H! R9 v
bash: file.txt: Operation not permitted

) V+ [3 ~6 ?6 Q9 {
所以与文件一样,我们成功地对文件夹进行了保护。
  防止文件/目录被删除,但允许追加内容  
& r7 D7 [4 H* {/ H* [0 A$ v
现在我们知道怎么防止文件/目录被误删除或修改了,但是,假如我们不想要文件已有内容被修改,但允许别人在文件末尾追加内容,要怎么操作?
这时候我们就需要使用 +a 这个选项了。
对文件:
$ sudo chattr +a file.txt* T. s# q9 P! ]2 T+ @2 `, f
对目录:
$ sudo chattr -R +a dir1+ H0 k1 e. c8 p. ^) @1 X3 X
现在,我们来确认一下,文件是否可以被追加内容。
$ echo 'Hello World!' >> file.txt8 I$ Q8 h% [) j: M9 ?0 o2 O: a
$ echo 'Hello World!' >> dir1/file.txt
' W! V! ~3 z, V! g
我们再使用 cat 命令去查看一下内容:
$ cat file.txt3 w4 i, h9 H  M/ w! r2 A- v
Hello World!
. @1 h! [) ^2 W. G$ cat dir1/file.txt
" ?; Y# f- {" s8 V& W4 {5 VHello World!
  ^' b- Z# R1 }! W% z
可以看出来,文件都是可以被追加的。
微信图片_20200605113233.jpg
但是,file.txt 还有 dir1/file.txt 依然不能被删除。
如果你想去掉可追加的属性,可以使用 -a 这个选项。
对文件:
$ sudo chattr -R -a file.txt1 G" p) |9 p( ]4 O4 w$ M" \/ ^
对目录:
$ sudo chattr -R -a dir1/
% n6 ?! W/ V/ o% i5 Y6 L8 O/ V$ d
赞 收藏 评论0 发布时间:2020-6-5 11:33

举报

0个回答

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版