什么是权限
在生活中总有许多视频软件,这些视频软件可以看电影诸如此类,但是有些电影需要Vip才可以观看,在一些音乐软件上,一些音乐只有Vip才能听,这就是因为权限的不足,换句话来说,权限就是权利在规则上的一些限制,权利并不是无限的,普通用户在平台上一样有着观看电影和听音乐的权利,但是没有观看Vip电影和听Vip音乐的权利,这就是权利的限制,权限;
Linux系统对于文件权限的管控十分的严格,用户如果需要对某个文件进行相应的操作,就必须拥有对该文件的对应的权限;
从这里可以看出:
在Linux中权限是伴生文件的
在Linux中共有两种用户:
- 普通用户
- 超级用户(root用户)
Linux权限管理
在Linux中应该以两个角度对权限进行分析,一个是访问者的权限,一个是原本文件具有的属性,为了方便理解可以简称为“人”与“事物属性”;
在Linux中,使用指令“ll” 或者指令 “ls -l”就能看到当前文件所对应的信息;
在Linux中,文件等于内容+属性,而该处使用指令所展示出的内容即为文件的属性;
文件访问者的分类(人)
文件访问者的分类共有三种,分别为拥有者(u)、所属组(g)以及其他人(o);
文件访问者的分类
拥有者u
所属组g
other
以该形式对文件的权限进行分类将更加有效的保证文件的安全性;
从上图可以表示一个文件对应的拥有者以及所属组(拥有者与所属组可以穷举);
但是这里出现了一个问题,拥有者即为该文件的拥有者,other指的是除了拥有者和所属组以外的其他访问者,那既然如此,所属组指的又是谁?为何Linux在设计角色划分时为何要带一个所属组?
这里的答案其实很明确,就是为了方便对权限的分配,举个例子,我是一个小组的组长,我的小组内共有50个组员,为了方便权限分配,是一个一个为组员进行权限分配更为方便还是将所有组员放置一个小组内并将整个小组进行授权会更为方便;
答案很明确,当然是后者,所以才会有着所属组的角色分配;
用户组即为一批用户的集合而所属组即为一批已经被进行权限分配的用户的集合
一个组内可以有很多人,在命名时应用组长的名字对组进行命名(在特殊情况下,一个组内可以是只有一个人);
文件类型和访问权限(事物属性)
一个文件最基本的属性是,能被读取( r ),可以被写入( w ),也可以被执行( x );但权限之所以是权限,说明该处的权限不止只与文件能否被读写执行有着全部的关系;
从图中可知文件的属性包含了文件的权限属性、连接数、文件的拥有者、所属组、文件大小、修改日期以及文件名。
文件的权限属性
从上文可知,“一个文件最基本的属性是,能被读取( r ),可以被写入( w ),也可以被执行( x )”,但是从图中却可以看到不同的r w x;再仔细看时发现其实除了第一个" - “以外其余的都可以三三为一组;
这里先抛开最前面的” - “符号,除了该符号以外后面的九个其实正好对应了三种访问者的权限,从左到右分别为拥有者( u )、所属组( g )、othere( o );
若是权限所在位置为” - "则表示该访问者不拥有该权限;
否则拥有该权限可以进行相应操作;
文件权限属性的修改
同时,作为root用户,可以对文件的访问权限属性进行修改;
通过
chmod x+rwx filename
指令可对文件的访问权限做相对应的修改;
以该处为例使用了chomd权限修改了拥有者,所属组以及other的所有权限;(普通用户的情况可以使用sudo提权进行操作);
格式:chmod [参数] 权限 文件名常用选项 :R (递归修改目录文件)
用户表示符+/-=权限字符:
-+:向权限范围增加权限代号所表示的权限
-:向权限范围取消权限代号所表示的权限
=:向权限范围赋予权限代号所表示的权限
用户符号:
u:拥有者
g:拥有者同组用
o:其它用户
a:所有用户
文件后缀类型
在我们平时使用的Windows系统中,文件有许多类型,例如txt、exe、zip等等;
在Linux中也同样拥有文件类型,但是Linux中的文件类型与平时所使用Windows中文件类型并不相同,换句话说,Linux内文件的运行并不与文件的后缀类型相关;
但是为什么再在此处对test.txt文件使用gcc进行编译时会报错?
原因是,我们提到“Linux中的文件类型与平时所使用Windows中文件类型并不相同”,但是在Linux中,gcc是作为一个软件而存在,在Linux中运行文件并不会因为文件的后缀类型而受到限制,但是文件会因为软件的类型检查而被不能运行;
举个例子,现在有一个test.c的文件,文件内容如下:
#include<stdio.h> int main() { printf("HelloLinux\n"); return 0; }
现在使用gcc对该文件进行编译,并将编译后的a.out文件重新命名为zzz,并执行该文件;
从该处可知,在Linux中,文件的运行与后缀类型无关;
Linux中文件的类型
从上文可知,在Linux中文件的运行与后缀类型无关,那Linux是如何分别不同的文件的?或者说,Linux是如何对文件进行分类的?
有一句话叫做“Linux中万物接文件”,这句话如字面意思相同,在Linux系统中,所有一切都可以看作是文件;而使用指令“ll” 或者指令 “ls -l”就能看到当前文件所对应的信息,包括这个文件的类型;
如图所示,红色区域即为Linux中的文件类型;
在Linux中,共有七种文件类型:
d:文件夹
-:普通文件
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如屏幕等串口设备)
s:套接口文件