一些文件在Linux下看上去可能一切正常,但当您尝试删除的时候,居然也会报错,就像下边一样:

[root@linux236 root]# ls -l 1.txt
-rw-r--r-- 1 root root 0 Aug   5 23:00 1.txt
[root@linux236 root]# rm -rf 1.txt
rm: cannot unlink `1.txt': Operation not permitted
您是全能root用户,居然系统告诉您操作不允许,是Linux疯了么?
当然不是,如果您会用lsattr命令,问题就有了答案。
[root@linux236 root]# lsattr
---i---------- ./1.txt
-------------- ./weiqi.ldif
-------------- ./qi.schema

秘密终于暴露了,
在lsattr命令下,这个1.txt文件带有一个"i"的属性,所以才不可以删除。
您现在可以用下边的一系列命令:
[root@linux236 root]# lsattr 1.txt
---i---------- 1.txt
[root@linux236 root]# chattr -i 1.txt
[root@linux236 root]# rm -rf 1.txt
[root@linux236 root]#
成功了,这个属性专门用来保护重要的文件不被删除,
通常的情况下,懂得用这几个命令的通常系统管理员有能力判断这个文件是否可以被删除。
如果您想给一个文件多加点保护,可以使用下边的命令:
chattr +i filename  命令,
这样一来,想要删除这个文件就要多一个步骤。
同时,这样的文件也是不可以编辑和修改的。只有root用户才能使用chattr命令。
此命令可以在Linux ext2或ext3系统上使用。

类似于和Windows文件系统,不能随意删除的文件多半都有其道理,即使您知道如何删除,都应该三思而后行。
freebsd chflags
用法:chflags [参数] 关键词 档案
常用关键词:
schg 档案完全无法被修改(super-user only)。noschg(Anti)
sappend 档案內容只能用附加(append)的方式修改(super-user only)。nosappend(Anti)
sunlink 档案无法被刪除或者重命名(super-user only)。nosunlink(Anti)
uchg 档案完全无法被修改(super-user only 或者一般使用者)。nouchg(Anti)
uappend 档案內容只能用附加(append)的方式修改(super-user only 或者一般使用者)。uappend(Anti)
uunlink 档案无法被刪除或者重命名(super-user only 或者一般使用者)。nouunlink(Anti)
uchg 用于文件时,owner 不能修改文件,也不能删除文件或者对文件重命名;nouchg(Anti)
uappend 用于文件时,owner 只能以 append 的方式修改文件,不能删除文件或者对文件重命名;uunlink 用于文件时,owner 可以对文件进行修改,但不能删除文件或者对文件重命名。nouappend(Anti)
uchg 用于目录时,owner 不能删除目录或者重命名目录,可以修改目录中已有的文件,
但不能在目录中添加文件,也不能删除目录中的文件或者对其重命名;
uappend 用于目录时,owner 不能删除目录或者重命名目录,
可以修改目录中已有的文件和在目录中添加文件,不能删除目录中的文件或者对其重命名;
uunlink 用于目录时,owner 不能删除目录或者重命名目录,
可以修改目录中已有的文件和在目录中添加文件,也可以删除目录中的文件或者对其重命名。
结论:uchg>uappend>uunlink。

备注:随笔中内容来源于网上资料整理,仅供参考。

linux系统的文件保护的更多相关文章

  1. linux系统——etc下的passwd 文件

    etcpasswd 文件 在登陆时要求输入用户名和密码,就是根据这个来的. root::0:0:root:/root:/bin/bash bin:x:1:1:bin:/dev/null:/bin/fa ...

  2. 在Linux系统下运行微信Web开发者工具

    微信Web开发者工具只有window版本和mac版本,如果想要在Linux系统下运行微信Web开发者工具,需要花费很大周折. 注:带 * 的步骤或文件为不确定是否管用的步骤或文件.本人系统为Linux ...

  3. Linux实战教学笔记06:Linux系统基础优化

    第六节 Linux系统基础优化 标签(空格分隔):Linux实战教学笔记-陈思齐 第1章 基础环境 第2章 使用网易163镜像做yum源 默认国外的yum源速度很慢,所以换成国内的. 第一步:先备份 ...

  4. Linux系统中的Device Mapper学习

    在linux系统中你使用一些命令时(例如nmon.iostat 如下截图所示),有可能会看到一些名字为dm-xx的设备,那么这些设备到底是什么设备呢,跟磁盘有什么关系呢?以前不了解的时候,我也很纳闷. ...

  5. 玩转 Linux 系统的方法论

    Linus 说“Just for fun”,而我要说“Just for 折腾”.想知道我是怎样折腾 Linux 的,请看下面这个截图: 从这个截图可以看出,我为了“折腾” Linux 系统,在我的电脑 ...

  6. Linux 系统中发博客必备的五大图片处理神器

    发博客时,总免不了要用图片说话.经过长时间的磨合,在 Linux 桌面系统下有几款图片处理软件我已经用得比较顺手了.这几款软件在 Linux 世界使用广泛,各个 Linux 发行版的软件仓库中都有自带 ...

  7. 探索 Linux 系统的启动过程

    引言 之所以想到写这些东西,那是因为我确实想让大家也和我一样,把 Linux 桌面系统打造成真真正正日常使用的工具,而不是安装之后试用几把再删掉.我是真的在日常生活和工作中都使用 Linux,比如在 ...

  8. 在linux系统中安装VSCode(Visual Studio Code)

    在linux系统中安装VSCode(Visual Studio Code) 1.从官网下载压缩包(话说下载下来解压就直接可以运行了咧,都不需要make) 访问Visual Studio Code官网  ...

  9. 如何重置硬盘遭到“损坏”的Linux系统root用户密码

    传统印象下Linux是非常坚不可摧的,具有千年不更新,万年不重启的美名.而随着虚拟化的推进,很多跑在虚拟化上的Linux由于先前基础架构的脆弱,变得适应性“越来越不好”,体现在IP存储如果出现节点故障 ...

随机推荐

  1. 【MySQL】实现自增函数sequence

    前言 当前数据库为:mysql由于mysql和oracle不太一样,不支持直接的sequence,所以需要创建一张table来模拟sequence的功能,理由sql语句如下: 步骤 1.创建seque ...

  2. webbench(web性能压力测试工具)

    在运维工作中,压力测试是一项很重要的工作.比如在一个网站上线之前,能承受多大访问量.在大访问量情况下性能怎样,这些数据指标好坏将会直接影响用户体验.但是,在压力测试中存在一个共性,那就是压力测试的结果 ...

  3. The mook jong

    The mook jong Accepts: 506 Submissions: 1281 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65 ...

  4. 【ERP知识】一个VMI(供应商管理库存)实现方案

    VMI,Vendor Managed Inventory,供应商管理库存 是指客户不采购或尽量少采购物料,而是由供应商保证该物料有充足的数量,在客户需要的时候能按时提供. 这样可以降低客户方的库存成本 ...

  5. DCloud-MUI-JS:相关摘录

    ylbtech-DCloud-MUI-JS:相关摘录 1.返回顶部 1.JS initFun: function() { var oldBack = mui.back; mui.back = func ...

  6. python包导入

    https://www.cnblogs.com/foremostxl/p/9501663.html

  7. PAT_A1071#Speech Patterns

    Source: PAT A1071 Speech Patterns (25 分) Description: People often have a preference among synonyms ...

  8. Boosting Ensemble and GBDT Algorithm

    Boosting Ensemble: 机器学习中,Ensemble model除了Bagging以外,更常用的是Boosting.与Bagging不同,Boosting中各个模型是串行的.其思想是,后 ...

  9. js获取下拉框的value值

    var Resultstr=""; var param = { action: "MoneyList" };//参数拼接 $.ajax({ type: &quo ...

  10. maven scope 作用域

    1.test范围指的是测试范围有效,在编译和打包时都不会使用这个依赖 2.compile范围指的是编译范围有效,在编译和打包时都会将依赖存储进去 3.provided依赖:在编译和测试的过程有效,最后 ...