一、本章重点
1、文件类型
2、文件访问者分类
3、文件访问权限
4、文件访问权限相关命令(chmod、chown、chgrp)
01 文件类型
linux系统不以后缀区分文件类型,它的类型区分依靠文件属性的第一个字符。
如:
test的第一个字符是d,代表它是目录。
test.c的第一个字符是-,代表它是普通文件。
上述这两种文件类型是最常见的,其他文件类型:
l :软链接(类似 Windows 的快捷方式)b :块设备文件(例如硬盘、光驱等)p :管道文件c :字符设备文件(例如屏幕等串口设备)s :套接口文件既然Linux不区分文件类型,那么是否可以使用gcc编译test.cccccc文件呢?答案是不能,因为Linux不区分文件类型,但是gcc是区分文件类型的。虽然Linux不区分文件类型,但还是建议我们对文件命名的时候带上文件后缀,这方便我们后期维护与操作。
02 文件访问者类型
文件访问者主要分为三种:拥有者、所属组、其他如上:拥有者和所属组都是ds,其他是除拥有者和所属组以外的用户。
拥有者还好理解,为啥有所属组呢?
举个场景:
当公司只有一台服务器的时候,有多个小组都得使用该服务器,同时小组之间构成竞争关系,你写的代码不想让另外小组的人看到,只想让同组的成员看到,那么只有拥有者是不行的,该文件必须让内部小组拥有权限,因此就有了所属组的概念。
03 文件访问权限
以test文件为例,前十个字符为drwxrwxr-x,第一个字符是d,代表文件类型是目录文件,其他9个字符,3个为一组,分别是rwx、rwx、r-x,对应的权限角色的拥有者、所属组、其他。
r:代表可读
w:代表可写
x:代表可执行
对于一个普通文件很好理解rwx的意义,如下面的这个文件
读取test.c
写入test.c
执行test.c
如果给test.c加上可执行权限,然后执行一下会发生什么呢?
这里暂时省略了如何给文件添加对应的权限,会在chmod命令详细讲解。
我们发现即使给test.c加上可执行权限也无法执行,毕竟test.c不是一个可执行文件,只是一个.c源文件,Linux不给执行也合乎情理。
目录文件也是文件,那么它的r、w、x分别代表什么意义呢?
这里是复习,就直接揭晓答案了。
r:代表可读取目录文件的内容
w:代表可写入目录文件的内容
x:代表可进入目录文件
目录文件的内容是什么呢?
上述目录文件的内容就是包含的文件属性
当目录文件test有w权限时,我们可以在它的目录下创建文件。
当我们去掉目录文件test的x权限时,就不能cd进入test目录了。
趣问:当我们没有test目录的r权限时,但我们知道test目录下有个a.c文件,那么我们是否可以进入test目录,然后cat a.c呢?
居然能够打印出a.c文件的内容,其实在操作系统层面应该不会出现这样的情况,因为打印a.c的时候必然要读取该目录的内容查看a.c是否存在,遇到这种情况,暂时先不深究了。
04 chomod指令
功能:用于修改权限角色对应的文件访问权限
例一:给test.c的拥有者添加x权限
例二:给test.c的所属组去掉读权限
例三:给test.c的其他添加r、w、x权限
还可以使用3位8进制数来改变角色权限
例一:给u、g、o全部添加上rwx权限
例一:给u设置为rw、给u设置为rw、给o设置为r
05 chown指令
功能:改变文件的拥有者
如上文件的拥有者是ds,如何把它给temp用户?
如果一个普通用户改变文件的拥有者需要用sudo提升权限。
06 chgrp指令
功能:改变文件的所属组
例一:将文件的所属组变为temp