Linux 文件的属性

Linux 文件的属性
Photo by Maksym Kaharlytskyi / Unsplash

7/100

我被不同的面试官问到了同一个问题2次:"当你发现用rm -rf删除某个文件却删不掉时,你会怎么办?"

我以前从来没有遇到过这样的情况,心里想"真的会有这种情况吗?"第一次没有回答上来时我不以为然,但次二次被问及这个问题我又没回答上来,压力就来到了我这边...

了解了Linux上文件的属性后,我才知道这是怎么一回事.

Linux文件的权限和属性

当我们讨论Linux上的文件时我们通常会说它可读可写不可执行,或者赋予xx文件644的权限.这些讨论的都是文件的权限.

文件的属性也许以前只在大部头上潦草看过但从来没当回事,在工作中也几乎没有遇见应用了属性的文件.也一直以为控制文件的方式只有文件的权限.

无法使用rm -rf删除时怎么办?

发现用户已经拥有足够的权限但无法对文件进行删除时应该检查该文件的属性,lsattr命令可以帮我们做到这一点:

-l参数可以更友好的为我们展示文件所拥有的属性.

Immutable(-i)控制了文件无法被删除被删除:

解决办法也很直接:直接去掉文件的Immutable属性.chattr可以帮助我们做到这一点.

chattr +/- 表示对一个文件添加/删除属性.

除了Immutable属性之外,其他属性可以通过man attr获得.这里列出一些有趣的属性:

-i:immutable, 文件不可被修改,比如删除,重命名等.

-a:append, 只能以追加模式对文件进行写入操作,即也不能删除.

-s:secure delete, 彻底删除文件.通常删除文件(rm)只是删除了他的引用而数据仍然存留在硬盘上.使用s属性就可以彻底删除这些数据.

Summary

文件还有很多其他的属性,如果对文件的操作遇到了奇怪的现象,不妨记得看看文件的属性是不是有什么特别的地方.

这里有一个非常好的视频解释了Linux的这些属性.