root用户也没法用rm随意删除文件?
 

前言

在你的印象中,是不是root用户就可以为所欲为呢?随便一个rm -rf *,一波骚操作走人?可能没那么容易。
先来个示例,创建一个文本文件test.txt
$ touch test.txt
将其权限位修改为777
$ chmod 777 test.txt
$ ls -al test.txt
-rwxrwxrwx 1 root root 13 Aug 31 15:03 test.txt
然后做一点暂时不告诉你的小操作。最后尝试删除:
$ rm test.txt
rm: cannot remove ‘test.txt’: Operation not permitted
咦?root用户,777权限位,为什么还删不掉?

i属性

那么我在中间做了一个什么操作呢?实际上只是执行了一条命令:
chattr +i test.txt
就导致了前面我们看到的效果。Linux中的文件除了我们能看到的内容外,还有一些文件属性,其中,i属性用于防止文件被修改,重命名,删除。在执行前面的命令之后,我们可以通过下面的方式查看其属性:
$ lsattr test.txt
----i--------e-- test.txt
如果想要移除该属性,只需要执行;
chattr -i test.txt
这个时候就可以删除啦。当然了,仅有超级用户可以对这个属性进行修改。所以说,root用户为所欲为还是可以的,不过得加点小操作。

文件属性

实际上除了前面说的i属性,还有其他属性,包括:
  • a 只能以追加的方式打开文件写(适用于日志文件)
  • A 不更新文件的atime,即访问时间
  • d dump命令运行时,不进行备份操作
  • S 文件有更新时便写磁盘,等同于对文件使用sync
还有其他属性就不一一列举了,有兴趣的可以参考man手册。

总结

所以如果你发现有的文件权限位是777,但是用root用户也没法删除,不如使用lsattr看看是不是有i属性。
 

chattr +i 用户也没法随意删除的更多相关文章

  1. Nodejs之MEAN栈开发(九)---- 用户评论的增加/删除/修改

    由于工作中做实时通信的项目,需要用到Nodejs做通讯转接功能,刚开始接触,很多都不懂,于是我和同事就准备去学习nodejs,结合nodejs之MEAN栈实战书籍<Getting.MEAN.wi ...

  2. linux添加超级管理员用户,修改,删除用户

    useradd一个用户后,去修改/etc/passwd文件中的这个用户这一行,把其中的uid改为0,gid改为0(其中****代表一个用户名)这样****就具有root权限了 如:root2:x:0: ...

  3. Linux用户查询、新增&删除

    1.查询用户tail -1 /etc/passwd 2.新增用户&用户组groupadd testgroup #组的添加useradd testuser #创建用户testuserpasswd ...

  4. MySQL创建用户、授权、删除

    1.在MySQL中创建新用户 使用具有shell访问权限的root用户登录MySQL服务器并创建名为“rahul”的新用户.下面的命令只允许从localhost系统访问用户rahul的MySQL服务器 ...

  5. chattr和lsattr命令的使用(对于root用户也无法修改删除的操作问题)

    1.chattr命令的用法:chattr [+-=] [ASacdistu] File/Directory 参数说明: +-= :分别为 [+ 增加] [- 减少] [= 设定] 属性的意思 A :当 ...

  6. 详解centos用户&组权限&添加删除用户

    1.Linux用户操作系统 Linux操作系统是多用户多任务操作系统,包括用户账户和组账户两种: 细分用户账户(普通用户账户,超级用户账户)除了用户账户以为还有组账户所谓组账户就是用户账户的集合,ce ...

  7. Linux 下添加普通用户,登陆并删除

    adduser 命令.LINUX创建用户的命令useradd -g test -d /home/test1 -s /etc/bash -m test1注解:-g 所属组 -d 家目录 -s 所用的SH ...

  8. ThinkPHP 3 的CURD管理用户信息 修改和删除

    本节课大纲: 一.ThinkPHP 3 的CURD管理用户信息 http://localhost:8080/thinkphp/index.php/User/index 访问User类的index方法 ...

  9. mysql基础:登录退出,修改用户密码,添加删除用户

    今天刚开始学习mysql,最先接触用户管理,给大家分享下 注:mysql中命令的大小写都可以的 ==========登录退出相关=================== root@jack-deskto ...

随机推荐

  1. 我的.emacs配置

    我不是大神,使用vim和emacs只是兴趣,打发空闲时间. 上代码: ;; Added by Package.el. This must come before configurations of ; ...

  2. ql的python学习之路-day9

    前言:本节主要学习装饰器 一.装饰器 定义:本质上是个函数,用来装饰其他函数:(就是为其他函数添加附加功能) 原则:1.不能修改被装饰的函数的源代码 2.不能修改被装饰的函数的调用方式 以上两点可以总 ...

  3. Js运算符和逻辑结构

    1.运算符 (1)赋值运算符 =  +=  -=  *=  /=  %= (2)三目运算符 一目  一个运算符连接一个数据   --  ++  ! 二目  一个运算符连接两个数据   + - * / ...

  4. 安装OPENCTI

    应业务需求,需要安装OPENCTI.很无奈的配了一下午. 首先是安装需求: 1. Ubuntu 2. Docker version 19.03.5 + docker-compose version 1 ...

  5. IDEA图标大全

      IntelliJ IDEA 2019.3版本以来各种小图标的含义 Common Icon Description Class Abstract class Groovy class Annotat ...

  6. Istio-架构

    读书笔记整理 工作机制:分为控制面和数据面 控制面:Pilot, Mixer(接收来自Envoy上报的数据), Citadel(证书和密钥管理) 数据面:Envoy 工作流程: 自动注入 应用程序启动 ...

  7. [Android应用开发] 04.页面跳转和数据传输

    *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...

  8. 二、React初体验之React组件创建

    (中间因为应付各种考试,处理其他事情,隔了好时间没更新,现在终于有时间了,续上!) 本文为React初始体验,因此先不考虑文件如何组织,尽量以最简单的方式让大家了解React其中的原理. 在创建组件( ...

  9. echarts的时间轴的提示内容写在轴下方

    echarts的时间轴的提示内容写在轴下方 在echarts中横坐标的拖动轴dataZone的提示内容在两端,并且没有相关配置让其显示在轴下方或者其他位置. 解决方式: 在图标下方添加dom并且监听拖 ...

  10. IDEA 插件推荐 —— 让你写出好代码的神器!

    概述 今天介绍的插件主要是围绕编码规范的.有追求的程序员,往往都有代码洁癖,要尽量减少代码的「坏味道」. 代码静态检查是有很多种类,例如圈复杂度.重复率等.业界提供了很多静态检查的插件来识别这些不合规 ...