day5:对文件和目录我们能做什么?
对文件来说,就三种操作:
- 读:读取、查看文件内容。(对应cat、more等命令)
- 写:修改、写入、保存文件。(对应使用vim等编辑文件,向文件中存入数据等操作)
- 执行:运行一个可执行文件。(对应 ./script或者 /bin/bash/script这一类操作)
对目录来说,就下面三种操作:
- 罗列:列出目录下的文件或者子目录(如 ls 命令)
- 添加文件或目录:在当前目录下添加文件,或者创建新文件夹(如 touch 、mkdir)
- 进入目录:进入到目录下(cd命令)
文件和目录的权限管理是在做什么?
文件和目录的权限管理,就是给不同给的用户设置对文件不同的访问权限。
为区分文件或者目录所属于哪一个用户所有,文件上都会有特定的标识。
从用户访问文件的的角度来看,可以将用户分为三类:文件的所有者(属主),文件的所有组(属组),其他用户。
权限管理就是针对以上三种用户,对文件设置不同的读、写、执行权限。
afei@ubuntu:~/myWorkSpace$
afei@ubuntu:~/myWorkSpace$ ls -l getinfo.text
-rw-rw-r-- 1 afei afei 181 Oct 10 00:12 getinfo.text
afei@ubuntu:~/myWorkSpace$
排在权限前面的减号(-)是文件类型(减号表示普通文件),新手经常会把它跟“无权限”混淆。尽管在Linux系统中一切都是文件,但是不同的文件由于作用不同,因此类型也不尽相同(有一点像Windows系统的后缀名)。常见的文件类型包括普通文件(-)、目录文件(d)、链接文件(l)、管道文件(p)、块设备文件(b)以及字符设备文件(c)
以getinfo.text这个文件为例,使用 ls -l getinfo,text 可以查看文件的类型、权限、属主、属组、文件大小、文件最后修改时间、文件名信息。
权限标识位的意义:
权限项 | 读 | 写 | 执行 | 读 | 写 | 执行 | 读 | 写 | 执行 | |
字符 | r | w | - | r | w | - | r | - | - | |
用户 | 文件属主 | 文件属组 | 其他用户 |
以上标识位的意义解读为:
- 文件所有者具有读写权限,没有执行权限
- 文件所属组用户具有读写权限,没有执行权限
- 其他用户只有读权限
文件权限的数字表示法
该方法是基于字符(rwx)的权限计算而来,其目的是简化权限的表示方式。
例如,若某个文件的权限为7,则代表可读、可写、可执行(4+2+1);若权限为6,则代表可读、可写(4+2)。我们来看一个例子。现在有这样一个文件,其所有者拥有可读、可写、可执行的权限,其文件所属组拥有可读、可写的权限;其他人只有可读的权限。那么,这个文件的权限就是rwxrw-r--,数字法表示即为764。
数字表示法可以如下理解,以上面查看的 getinfo.text 文件为例,它的文件权限位转化成数字是如下标示的:
将每一组权限看成是一个二进制数字,将二进制数字转换成十进制之后,就得到了文件权限的数字表示:
getinfo.text 文件的 “rw-rw-r--” 权限使用数字表示之后就转换成了 664
权限项 | 读 | 写 | 执行 | 读 | 写 | 执行 | 读 | 写 | 执行 | |
字符 | r | w | - | r | w | - | r | - | - | |
每一位的二进制表示 | 1 | 1 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | |
二进制转换为十进制过程 | 4+2+0 | 4+2+0 | 4 ······ | |||||||
十进制 | 6 | 6 | 4 |
一些补充
后面我们将介绍这些权限之间有什么关系,如何修改,另外还会介绍一些特殊的权限,例如SUID,SGID,SBIT 和 ACL。