关键字:错误提示:E45 已设定选项’readonly’(请加!强制执行)

Linux对文件和目录有很好的权限管理,但今天遇到一个比较诡异的事情,普通用户对文件权限不可写,但可以强制保存该文件,这样就有问题了,其他用户可以修改别人文件,这不符合常识和安全要求,一时不明白原因。后来结合目录权限,终于搞清楚了这个问题。记录如下:

1 文件和目录的初始权限如下

所有者是root,其他用户无写权限

[root@localhost 桌面]# touch test.txt
[root@localhost 桌面]# ll
total
-rw-r--r--.  root root  Aug   : test.txt

目录权限如下:

drwxr-xr-x .  user user   Aug   : 桌面

2 使用user编辑并保存文件test.txt

编辑前先看下文件的修改时间

user@localhost 桌面]$ ls -al --full-time
总用量
drwxr-xr-x.   user user    -- :: .
drwx------.  user user  -- :: ..
-rw-r--r--.   root       root           -- :: test.txt

编辑保存时提示如下:

使用命令:wq!,竟然也能成功保存!!,如下:

[user@localhost 桌面]$ vi test.txt
[user@localhost 桌面]$ cat test.txt
readonly to save

再看下文件的修改时间

文件修改前的时间
drwxr-xr-x.   user user    -- :: .
drwx------.  user user  -- :: ..
-rw-r--r--.   root       root           -- :: test.txt
[user@localhost 桌面]$ vi test.txt
[user@localhost 桌面]$ cat test.txt
readonly to save
文件修改后的时间
[user@localhost 桌面]$ ls -al --full-time
总用量
drwxr-xr-x.   user user    -- :: .
drwx------.  user user  -- :: ..
-rw-r--r--.   user user    -- :: test.txt
[user@localhost 桌面]$

3 原因分析

用户user对文件test.txt没有write权限,但可以修改,再看下该文件的目录的权限,用户user有write权限。

再结合修改后test.txt文件的修改时间,得出:

用户user并不是修改了test.txt,而是首先强行删除了旧的test.txt文件(因为user有目录的write权限),

然后又重新创建了test.txt文件。那分析的对不对呢?看一下修改前后文件的属性吧:

修改前,文件owner和group分别是root,root
[user@localhost 桌面]$ ls -l --full-time
-rw-r--r--.   root       root           -- :: test.txt
修改后,文件owner和group已经全变成user,而文件更改owner和group必须由root或rootgroup成员操作,所以很显然
是新的文件替换了旧的文件,该命令类似mv 修改了权限。
[user@localhost 桌面]$ ls -l --full-time
-rw-r--r--.   user user    -- :: test.txt

note:错误提示:E45 已设定选项’readonly’(请加!强制执行)

Linux普通用户修改owner非本人文件为什么成功的更多相关文章

  1. Linux(CentOS)用户修改密码有效期(chage命令)

    Linux设置用户密码的有效期限 解决: 先查看密码过期时间,现在是90天 1 2 3 4 5 6 7 8 [root@01 ~]# chage -l testuser Last password c ...

  2. Mac普通用户修改了/etc/sudoers文件的解决办法

    1.开启 Root 账户 打开“系统偏好设置”,进入“用户与群组”面板,记得把面板左下角的小锁打开,然后选择面板里的“登录选项”.在面板右边你会看到“网络账户服务 器”,点击它旁边的“加入…”按钮,再 ...

  3. linux 给用户修改权限

    #添加一个用户 useradd xiaoming #设置密码 passwd xiaoming 回程 //设置密码就行了 #把用户修改成root权限 vi /etc/passwd #找到xiaoming ...

  4. linux下用户和组相关的文件及相关管理命令

    1.用户信息文件  /etc/passwd 示例root:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2: ...

  5. Linux篇:因为修改了/etc/sudoers 文件的权限导致的问题

    因为想要把sudo变成免密码所以就查了网上的教程.说是要修改/etc/sudoers文件,但是修改的时候发现这个文件是只读, 所以就 /etc/sudoers 结果就导致了接下来用sudo的时候提示如 ...

  6. [Linux/Unix]用户和用户组管理

    Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统的用户,都必须拥有自己的账号. 实现用户的管理,主要做: 用户账号的添加.删除.修改: 用户口令的管理: 用户组的管理. (一)用户的 ...

  7. linux中如何修改文件夹的用户权限 chown命令

    linux中,可以使用chown命令来修改文件夹的用户权限. 1.  以普通用户 A 登录linux,利用su -切换到root用户 2. 在root用户下,可以看到文件夹内容 3. 但通过文件系统, ...

  8. Linux跨用户copy文件

    foo用户home目录下有一文件file.txt,要将其copy至bar用户的home目录.Linux对用户home目录有严格的权限限制,非owner用户或者同group用户无权限读写,除非是root ...

  9. linux系统下修改文件夹目录权限

    linux系统下修改文件夹目录权限 文件夹权限问题 Linux.Fedora.Ubuntu修改文件.文件夹权限的方法差不多.很多人开始接触Linux时都很头痛Linux的文件权限问题.这里告诉大家如何 ...

随机推荐

  1. PHP正在进行时-变量

    在PHP中,变量是$+变量名,变量名遵循标识符的命名规则,可以以字母.下划线开头,可以由数字.下划线.字母组成合法的变量名. 变量声明 所有变量在使用之前应该进行声明,而且最好带上注释,虽然在PHP中 ...

  2. Excel生成guid、uuid

    1.Excel生成guid,uuid  格式:600d65bc-948a-1260-2217-fd8dfeebb1cd =LOWER(CONCATENATE(DEC2HEX(RANDBETWEEN(, ...

  3. React Native学习(二)—— 开始一个项目

    本文基于React Native 0.52 一.创建一个项目 1.初始化一个RN项目 react-native init RNDemo 2.连接一个设备或是打开模拟器 可以通过 adb devices ...

  4. C#要点补充

    1字符串与时间的互转 DateTime.TryParse将空字符串.为null或格式不正确,则转换为的DateTime所代表的值为:0001/1/1 0:00:00,此为DateTime.MinVal ...

  5. MATLAB R2017a 安装与破解

    第一步: 到我的百度网盘下载MatlAB2017a的原安装程序和破解补丁: 链接:https://pan.baidu.com/s/1jJz97DW 提取密码: d59m 第二步: 下载的两个iso文件 ...

  6. IntelliJ IDEA 17和Maven构建javaWeb项目

    前言 电脑又断电了,眼看着写好的东西就没有了,这是第二次犯这个错误了.很难受呀!还是回到正题吧,我们来使用IDEA和Maven构建一个JavaWeb项目 软件环境: IDEA:2017.2.1 JDK ...

  7. 51 Nod 1007 正整数分组【类01背包】

    1007 正整数分组 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 将一堆正整数分为2组,要求2组的和相差最小. 例如:1 2 3 4 5,将1 2 4分为1组, ...

  8. 1492: [NOI2007]货币兑换Cash

    Description 小Y最近在一家金券交易所工作.该金券交易所只发行交易两种金券:A纪念券(以下简称A券)和 B纪念券(以下 简称B券).每个持有金券的顾客都有一个自己的帐户.金券的数目可以是一个 ...

  9. 【经验总结】Java在ACM算法竞赛编程中易错点

    一.Java之ACM易错点 1. 类名称必须采用public class Main方式命名 2. 在有些OJ系统上,即便是输出的末尾多了一个“ ”,程序可能会输出错误,所以在我看来好多OJ系统做的是非 ...

  10. [bzoj3191] [JLOI2013]卡牌游戏

    概率DP. 首先由题解可得>_<,胜出概率只与剩余人数.与庄家的相对位置有关. 所以设f[i][j]表示剩下i个人,从庄家开始第j个人的胜利概率... 根据卡牌一通乱搞即可... #inc ...