大三了,学校终于开设了Linux课,虽然之前在操作系统课上已经了解了概念,但是实际上对Linux都是一直一知半解,因此自己希望通过写这样的一些学习笔记促进学习。在学习的过程中,主要参考了《鸟哥的私房菜》这本书,这本书写的足够详细,因此着重会参考这本书,但是不会过多重复课本中已有的概念,而是会总结一些重点,难点以及易错易考点。
文件权限与目录权限的意义以及区别
在学习Linux的过程中,老师经常重复的一句话就是“Linux下一切皆文件”。在Windows下,我们总要对各种执行程序,外设接口,目录等等有着比较清晰的区分,那么在“Linux下一切皆文件”的思想下,文件权限和目录权限有着什么样的意义或者区别呢?
文件权限
文件是实际含有数据的地方,包括一般文本文件,数据库内容文件,二进制文件等等,它的三个权限意义如下:
- r(read):简而言之就是读取文件内容
- w(write):编辑修改文件(但是不含删除文件)
- x(execute):文件可被执行,Linux下判断文件是否执行仅仅取决于是否有x权限,与文件名,后缀名(如.exe之类的无关,那些仅仅是提示作用)当然是否能执行还要取决文件本身,概括来说就是没有x权限一定不能执行,有了x权限才可能执行
记住:对于文件rwx权限来说,它们都是针对文件的内容,与文件是否存在无关(这个涉及到目录权限)
目录权限
文件是存放数据的所在,而目录则是记录文件名列表,文件名与目录有强烈的关系。
- r(read):表示可以读取目录结构权限,因此一旦你对这个目录有r权限,表示你可以查询该目录下的文件名数据,通俗的讲就是可以用ls展示出来。如下图
对于code文件一开始我给user权限为0,当我想要ls code时候,它提示无权限;然而一旦我们加上r权限,它就可以将目录下的hehe文件展示出来了(仅仅只是展示出来,并不能访问到hehe文件)
- w(write):写入权限,它表示具有更改目录结构列表的权限,这个十分强大,你可以
- 创建新文件或者目录
- 删除已存在的文件或者目录(不论文件权限是什么)
- 重命名已存在的文件或者目录
- 转移该目录下的文件或者目录
我们看到一开始让code权限是7,可以任意删除code目录下的a,一旦我们去掉它的w权限,使用rm b便会提示权限不足。
- x(execute):目录可被执行?不是这样子的,目录不可以被执行,但是这里的x权限代表的是用户是否能进入该目录成为工作目录的用途,所谓的工作目录就是你目前所在的目录。举例来说就是cd一个目录必须具有x权限,我们还是接着看上面那张图,对于code,user已经具有了r权限,我们试着cd code?
我们发现仅仅有r权限,cd code是没有权限,一旦我们加了上x权限就可以进入到code目录下了。
总结:
能不能进入一个目录只与该目录的x权限有关,一旦你在某目录下不具有x权限,那么你就无法切换到这个目录下,也就无法执行该目录下的任何命令,即使你有r权限(仅有r没有x时候,最多只能看到目录下的文件名,而不能正确查阅文件的内容)。
而如果想要在目录下创建/删除一个文件必须要有w权限,仅仅是显示的话只要r权限即可。