Linux文件目录权限及chmod命令简析
整理了关于 Linux 目录权限的一些基础知识,希望可以帮助一些刚接触 Linux 的朋友,比如使用 VPS 的博友等。
下图直观的展现了 Linux 系统中文件目录权限信息,有了它,应该能很快的算出,主机后台管理中类似于 755、604、664 等数字代表的具体权限。这类三位数,分别表示下图的 r w x 的值(红色说明)的求和。
chmod
如果是在终端环境,可以使用 ls -al 命令列出当前目录所以文件、文件夹以及相应的权限情况。当然,直接使用 ll 命令也是一样的效果啦!如下图所示:
ll
结果中,d 打头的表示是一个目录,也就是文件夹;-横杆打头的表示是一个文件,当然还有其他打头的,比如 l 打头表示一个链接文件等等,这里就不细说了。下面介绍 rwx 代表的详细意义。
目录的 【读权限位】意味着可以列出其中的内容。【写权限位】意味着可以在该目录中创建文件,【执行权限位】则意味着搜索和访问该目录(cd)。
r– 权限:单独有读权限不能执行 ls 命令,ls dir 需要同时有这个 dir 的 r-x 权限。
-w- 权限:光有写权限什么事也不能干。创建文件要有-wx 权限。
–x 权限:光有 x 权限可以进入该目录,可以 cd path,
如果对某一文件有读权限,可以 ls path/xfile cat path/xfile.
如果对某一文件有写权限,可以 vi path/xfile,(没有读权限的时候)可以以覆盖的形式保存。
如果对某一文件有执行权限,可以 path/xfile 执行该文件。
假设 path 路径下有一个文件 file,某用户对 file 的文件的权限为 rwx ,而 path 为 –x,那么用户可以通过路径的方式 ……/path/file 执行该 file 文件,通过 vi 编辑该文件,因为该目录是可以访问的。
但是该用户 cd 该目录后不能 ls,但是可以 ls path/file.
假设 path 下有一个文件 file,某用户对 file 的文件的权限为 rwx, 而 path 为 rw-,那么该用户无法通过路径的方式 ……/path/file 执行该 file 文件,无法通过 vi 编辑该文件,因为该目录是不可以访问的(无法 cd 进入该目录)。同时也不能在该目录下建立新文件,虽然看起来已经有 w 的权限。
如果某个用户对文件夹/AA/BB/CC 有 rwx 的权限,如果想正常操作 CC 文件夹,对 AA 和 BB 都必须有 x 权限。
所以目录对组合其他用户一般都设为 r-x.
对于文件来说,如果要想一个文件的 x 权限起作用,同时必须有 r 权限。
对于目录设 w 权限给别的用户的危险性:在用户 Locke 拥有的目录…/treaties 下有一个文件叫 twotreatiesOnGrv,然后 Locke 给这个文件限制为别的用户不能写,但是别的用户对 treaties 目录却有写权限,那么别人,比如说,Plato 还能不能写 twotreatiesOnGrv 这个文件呢,答案是,不能但又能,Plato 不能直接,比如 vi 来改这个文件(但是 w! twotreatiesOnGrv 也可以覆盖这个文件),但是他可以通过 mv 将一个别的文件到 treaties 目录下覆盖这个 twotreatiesOnGrv.
对于没有写权限的文件,如果对所在目录有写权限,这个文件可以被删除。
那如何变更权限呢?在终端中,可以直接使用 chmod 来改变权限:
比如,给文件 xfile 赋上可执行权限,可以
chmod +x xfile
如果是文件目录,想遍历赋权呢?那你可以使用 -R 参数,比如,给 /data/www 目录赋 755 的权限,你可以:
chmod -R 755 /data/www
所以,想赋什么权,只要根据第一个图查下对应的数字,然后 chmod 下就可以了!就是如此简单!
沈唁志|一个PHPer的成长之路!
原创文章采用CC BY-NC-SA 4.0协议进行许可,转载请注明:转载自:Linux文件目录权限及chmod命令简析
- 【Python环境】利用 Python、SciKit 和文本分类来实现行为分析
- LJMM平台( Linux +Jexus+MySQL+mono) 上使用MySQL的简单总结
- 判断两个单链表是否相交(有环、无环两种)
- 【数据科学家】SparkR:数据科学家的新利器
- KMP算法浅析
- Bug修复问题
- Java基础——IO流
- 来一点反射和Emit,让ORM的使用极度简化
- Java基础——集合框架
- Java基础——clone()方法浅析
- 【Python环境】matplotlib - 2D 与 3D 图的绘制
- 左求值表达式,堆栈,调试陷阱与ORM查询语言的设计
- Java基础——序列化
- 【Python环境】使用 scikit-learn 进行机器学习的简介
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- pytest文档51-内置fixture之cache使用
- pytest文档53-命令行实时输出错误信息(pytest-instafail)
- pytest文档52-命令行参数--setup-show查看fixture的执行过程
- pytest文档54-Hooks函数terminal打印测试结果(pytest_report_teststatus)
- SAS-免费的描述性统计程序自动化创建
- Godot游戏开发实践之四:搬运Unity的Pluggable AI教程
- TypeScript 4.1 新特性:字符串模板类型,Vuex 终于有救了?
- 使用 Node.js 定制你的技术雷达:上篇
- 使用 Node.js 定制你的技术雷达:中篇
- 大点干!早点散----------Redis从入门到精通!!!
- Python入门摘要
- 这些 ECMAScript 模块知识,都是我需要知道的
- 微信小程序【事件绑定】入门一篇就搞定
- 一个后端狗的 Vue 笔记【入门级】
- 这才是现代C++单例模式简单又安全的实现