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. 深入Spring之IOC之加载BeanDefinition

    本文主要分析 spring 中 BeanDefinition 的加载,对于其解析我们在后面的文章中专门分析. BeanDefinition 是属于 Spring Bean 模块的,它是对 spring ...

  2. 【Jenkins学习】【第二节】 jenkins构建触发器定时任务

    一.定时构建 Build periodically:定时执行构建任务,不管远程代码分支上的代码是否发生变化,都执行一次构建. 语法:* * * * *(五颗星,中间用空格隔开) 第一个:分钟,取值0~ ...

  3. Apache自定义404

    先用命令找到httpd.conf文件在哪 find -name 'httpd.conf' 默认配置文件: vim /etc/httpd/conf/httpd.conf 然后找到项目的路径 <Di ...

  4. python操作MySQL之pymysql模块

    import pymysql#pip install pymysql db=pymysql.connect(','day040') cursor=db.cursor() #创建游标 book_list ...

  5. 201771010128王玉兰《面向对象程序设计(Java)》第十二周学习总结

    第一部分:理论知识 1.AWT与Swing简介 (1)Swing用户界面库是非基于对等体的GUI工具箱. Swing具有更丰富并且更方便的用户界面元素集合. Swing对底层平台的依赖很少,因此与 ...

  6. 请求地址中出现中文或者URL作为参数,为避免含有特殊字符截断URL,需要编码

    URL中担心出现特殊符号!*'();:@&=+$,/?%#[] 从而截断完整的URL,需要对URL编码,服务端对URL再解码 参考: https://blog.csdn.net/aaaaazq ...

  7. docker file的基本使用-案例创建centos

    #基于镜像 FROM centos #作者 MAINTAINER xiaozhang #声明变量 ENV ROOT_PATH /usr/local/ #设置工作目录 用户进入容器之后终端默认路径 WO ...

  8. vue中 vue-awesome-swiper的使用

    在页面开发中,经常会碰到需要轮播,滑动等需求,特别是多元素滑动,此时,要么自己写,要么网上找轮子,不过自己写,其实还是有点难度的,一般就是网上找写好的库,本文就是针对vue-awesome-swipe ...

  9. Java集合(九)哈希冲突及解决哈希冲突的4种方式

    Java集合(九)哈希冲突及解决哈希冲突的4种方式 一.哈希冲突 (一).产生的原因 哈希是通过对数据进行再压缩,提高效率的一种解决方法.但由于通过哈希函数产生的哈希值是有限的,而数据可能比较多,导致 ...

  10. 中国电信中兴F412光猫——IPTV与网络单线复用

    标题: 中国电信中兴F412光猫--IPTV与网络单线复用 作者: 梦幻之心星 347369787@QQ.com 标签: [光猫, IPTV] 目录: 路由器 日期: 2019-2-30 目录 第一步 ...