vim没有权限却可以强制保存时所引起的思考 ------ 文件夹权限对所属文件的权限影响
最近在拿着Linux 鸟叔私房菜对着Linux 系统学习一下基本操作,虽然已经使用Linux系统已经好多年不过却一直没有系统的学习一下。在用vim 编辑一个文件的时候出现了一个很神奇的事情,明明该文件是root创建的,而普通用户是没有写权限的,而我无意中用普通用户写了以后竟然可以保存,虽然是强制保存但是毕竟是保存了,这并不符合权限的操作要我感到疑惑,为此在晚上搜索了好久也没有找到什么靠谱的解答,最后还是在私房菜这本书中找到了答案,那就是文件所在目录的权限是可以影响目录内的文件的。
用户对某文件目录可读, r, 那么用户对目录下的所有文件都是可见的。
用户对某文件目录可写, w, 那么:
你可以在该目录之下新建文件和目录
你可以删除该目录下的任何文件及目录(不论该文件的权限如何)
将已经存在的该目录下的文件或目录进行重命名
转移该目录下的文件和目录的位置
基本上如果用户对某目录具有 w 权限 就可以对该目录下面的所有文件及目录进行 关于文件名的修改。

root 新建立了一个 txt 文件 , 123.txt

123.txt 所在目录的权限如上, 是普通用户的rwx

123.txt 文件内容如上。

修改文件内容:

强制保存成功, wq!
再次查看权限:

发现 vim 强制保存成功后,文件所属的用户及组都已经变化了。
个人观点:
vim 的强制保存 其实是新建了一个文件, 也就是说它把该原文件(可读)的内容,已经修改好的内容保存,并且删除掉原文件,并重新建立文件,再把内容写回去。
vim没有权限却可以强制保存时所引起的思考 ------ 文件夹权限对所属文件的权限影响的更多相关文章
- Linux常用命令,查看树形结构、删除目录(文件夹)、创建文件、删除文件或目录、复制文件或目录(文件夹)、移动、查看文件内容、权限操作
5.查看树结构(tree) 通常情况下系统未安装该命令,需要yum install -y tree安装 直接使⽤tree显示深度太多,⼀般会使⽤ -L选项⼿⼯设定⽬录深度 格式:tree -L n [ ...
- linux学习之(四)-用户、组的操作,给文件文件夹设置组,更改目录权限、文件权限
命令帮助查看: man 命令(查看一个命令的详细帮助信息) 例:man useradd 或者用 -h 格式 命令 -h(查看一个命令的简要帮助) 例:useradd -h 用户: 在user ...
- 文件夹添加 IIS 应用程序池用户权限
http://serverfault.com/questions/81165/how-to-assign-permissions-to-applicationpoolidentity-account ...
- [Ubuntu]修改文件夹及所有子文件夹权限
sudo chmod -R 777 FILE_NAME 使FILE_NAME文件或文件夹具有读写和执行的权限.
- 安装wampserver后,在www文件夹下面写php文件,而在网页里输入localhost而无法打开php文件时解决办法汇总
wampserver安装后,在www文件夹下面写入xx.PHP文件,然后在网页里输入localhost:xx.PHP. 你可能会遇到如下三种情况: 情形一:网页上显示空白,按F12,出现404的错误. ...
- 为web文件夹添加IIS应用程序池用户权限
在文件夹或文件右键属性—>安全——>编辑——>添加——>输入IIS APPPOOL\应用程序池名,确定即可将IIS 7或7.5.8的应用程序池虚拟用户添加到权限控制里面,然后再 ...
- linux下移动或者复制文件覆盖相同文件夹时,文件夹里面的每个文件都提示是否覆盖
链接地址:http://blog.chinaunix.net/uid-23683795-id-2391087.html # vi ~/.bashrc 如果你看到如下内容,以下命令都会用别名执行了, ...
- Inno如何在安装完成时删除指定的文件夹(下的所有文件及子目录)??
删除安装目录下的任意文件夹及下的所有文件及子目录,或者删除指定目录的文件夹,要如何做到呢?谢谢!! //删除文件 用 DeleteFile 只能删除一个文件,不能使用通配符来删除多个文件Dele ...
- 安装bootcamp时提示“找不到$winpedriver$文件夹,请验证该文件夹是否和bootcamp处于同一文件夹内?”
问题:我苹果系统是10.8.3的 装的win7 64位的! 这个bootcamp是我在别人那里拷贝的,我装的时候就这样了,但是别人装是好好的,还有我在MAC系统下载bootcamp的时候我的U盘格式是 ...
随机推荐
- (转)在GitHub多个帐号上添加SSH公钥
GitHub后台可以添加多个SSH Keys,但是同一个SSH Keys只能在添加在一个帐号上(添加时提示“Key is already in use”).理由很容易想到,SSH公钥使用时相当于用户名 ...
- Swagger2 生成 Spring Boot API 文档
Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务.本文主要介绍了在 Spring Boot 添加 Swagger 支持, 生成可自动维护的 A ...
- POJ2891:Strange Way to Express Integers(解一元线性同余方程组)
写一下自己的理解,下面附上转载的:若a==b(modk);//这里的==指的是同余,我用=表示相等(a%k=b)a-b=kt(t为整数)以前理解的错误思想:以前认为上面的形式+(a-tb=k)也是成立 ...
- Python中的MySQL接口:PyMySQL & MySQLdb
MySQLdb模块只支持MySQL-3.23到5.5之间的版本,只支持Python-2.4到2.7之间的版本 PyMySQL支持 Python3.0以后的版本 PyMySQL https://pypi ...
- Git: A分支上的commit提交到B分支上
1. 执行git log -3 --graph A,查看A分支下的commit: 注:commit 后面的hash值代表某个commit,这里把”82f1fb7138c5860cc775b4b5ea7 ...
- inline用法详解
(一)inline函数(摘自C++ Primer的第三版) 在函数声明或定义中函数返回类型前加上关键字inline即把min()指定为内联. inline int min(int first, int ...
- 使用MongoVUE无法添加Collection
说明: 问题MongoDB版本为3.2,MongoVUE 1.6.9 问题: 在数据库中添加集合不可用. 解决方法: MongoDB版本换成2 或者 切换存储引擎: 从MongoDB 3.2 版本开始 ...
- Linux内核分析 03
一,构造一个简单的Linux系统MenuOS 1.Linux内核源代码简介 回顾一下前面的三大法宝和两把宝剑. arch/x86目录下的代码需要重点关注 阅读代码的时候把除了x86以外的都删掉会有利于 ...
- 【Android】使用BaseAdapter实现复杂的ListView【转】
本文转载自:http://blog.csdn.net/jueblog/article/details/11857281 步骤 使用BaseAdapter实现复杂的ListView的步骤: 1. 数据你 ...
- Exception.StackTrace
Exception中的StackTrace属性 执行堆栈跟踪在给定时刻正在执行的所有方法. 对方法调用的跟踪称为堆栈跟踪. 堆栈跟踪列表提供了一种循着调用堆叠跟踪到方法中异常发生处行号的手段.Stac ...