Hello everybody!在介绍完Linux操作系统常用的基本指令后,咱们就要开始权限的讲解了。如果没有看过我之前文章的宝子们可以去看看呦!有比较系统的指令讲解!
回到正题,关于权限,实际上没有大家想象中的那么神秘,权限在我们的日常生活中几乎无处不在。
比如:在QQ群,微信群中,群管理员,群主的权限就要比普通的群成员大。QQ音乐有了绿钻就有权听VIP歌曲。腾讯视频有了会员就有权跳过广告等等。
那么在Linux中的权限也大体类似。
如果你买了云服务器,比如阿里云,华为云。那么你的账号的身份就是超级管理员,也就是root用户。
那么既然是超级管理员,它的权限和普通用户就是完全不一样的,自然有它特殊的地方。
比如说:
1.root用户可以创建普通用户。
2.root用户的家目录是/root。而普通用户的家目录是/home。
3.root用户的权利非常大,可以为所欲为,它几乎可以删除Linux系统中的全部文件,包括系统文件。而普通用户不可以。所以我们在使用root账号删除文件时务必小心谨慎。如果把Linux系统的根目录干掉了那么这个系统几乎报废了。
4.在Linux系统中,目前还没有发现root用户干不了的事情。
直接su 用户名就可以了。需要注意的是,执行该指令后,你所在的路径没有变化,仅仅是身份发生了变化。
然后敲ctrl d可将身份回到root。
如果我本来就是一个普通用户,需要如何变成root用户呢?
其中一种方法是执行su root命令,同时需要输入root账号的密码(屏幕中不会显示),即可将身份从普通用户变成root用户。当然,敲ctrl d同样可以变回普通用户。
另一种方法就是执行su -命令,这时不光身份可以变成root用户,所在的路径也直接跳转到了root的家目录。就相当于直接以root身份登录账号。
不过不管以哪种方法将身份切换成root,都需要root账号的密码!
从上述讲解中可以看出,root变成普通用户不需要密码,普通用户变成root需要密码。由此可以看出root的权限是很大的。
现在我以root的身份创建一个文件。既然是文件,那应该也有对应的权限,不然随便一个用户来把这个文件改一下或是删掉那岂不是乱套啦?
这一条信息就详细地说明了当前文件的具体信息:
1.file.txt表示文件的名称。
2.Feb 4 16:36表示该文件最近创建或是修改的时间。
3.0表示文件的大小,单位是字节。
4.接下来是root root。那么连续的两个root是什么含义呢?
其实在Linux操作系统中有三种人,一种是文件的拥有者,一种是文件的所属组,一种是其他。
而第一个root表示文件的拥有者,第二个root代表文件的所属组。如果有一个用户比如说user_111,既不是拥有者也不是所属组,那就是其他。
Linux系统设置这三种人是为了用权限更好的管理文件,如果在一个大公司中,有2-3个小组在一台Linux机器上同时独立的做同一个项目,最后做的比较好的小组的成果被推销到市场。那么这些小组就是竞争关系,组内的文件肯定是不能给其他小组的成员看的。因此,为了方便管理文件,Linux操作系统有了所属组这个概念。上文中的第二个root就代表file.txt属于root分组。
5.最后-rw-r--r--一共有是个字符,开头的一个-表示文件的类型,如果是普通文件就是-,如果是目录文件就是d
如果创建一个目录,那么第一个字符就是d。
剩下9个字符,它们每三个一组,分别表示拥有者,所属组,其他对该文件所拥有的权限。每一组均为rwx。
对于普通文件:
r:表示是否具有读权限,如果是就是r,否,就是-。
w:表示是否具有写权限,如果是就是w,否,就是-。
x:表示是否具有可执行权限,如果是就是x,否,就是-。
在修改文件权限之前,我们需要搞清楚谁能够修改文件的权限。
1.该文件的拥有者可以修改。
2.root可以修改。
修改权限可用chmod指令。
u代表拥有者,g代表所属组,o代表其他,a代表所有人。
chmod后跟的选项可任意搭配,可以修改一种人的一个权限,一种人的多个权限,多种人的一个权限,多种人的多个权限!
由于root是超级管理员,所以root不受权限限制,普通用户受权限限制。
下面我以普通用户的身份测试一下权限。
目前对于文件file.txt,user_111即是拥有者,也是所属组。对于拥有者,什么权限都没有。对于所属组,有读和写权限。
Linux系统在身份匹配的时候会优先匹配拥有者,然后才是所属组。若拥有者匹配成功且没有对应的权限,那么不会继续匹配所属组。
由此可以看出系统优先匹配拥有者,但没有读权限,所以系统直接拒绝打印文件内容。
同样的,没有写权限,系统拒绝往文件里写入内容。
同样也不可执行。
但是对于拥有者,我们加上了所有的权限,即可以写,也可以读。但奇怪的是,有可执行权限,为什么不可以执行呢?
注意可执行是有特殊要求的:
首先你要有可执行权限,其次你真的能够执行。
在我们举的例子中,file.txt是一个普通的文件,不是一个可执行文件,所以就算有了可执行权限也不可以执行!
下面我用root身份测试权限。
首先,root可以更改文件的权限。这里,root把该文件的所有权限全部关掉了!
对于file.txt,root既不是拥有者,也不是所属组,而是其他。那么root既没有读权限,也没有写权限,更没有可执行权限。但是root可以打印该文件的内容!也就是说读权限无法限制root。
同样的,写权限也无法限制root。
但是这里要强调的是,不是可执行权限限制了root,而是file.txt压根就不是一个可执行文件。如果file.txt是一个可执行文件,root同样可以执行它!
并且更不要脸的是,file.txt根本就不是root的文件,但是root可以删掉它!这里也可以体现出root的权限非常大。
在Linux系统中,root就好比一个“老流氓”\(0^◇^0)/,没有root干不出来的事情,它不受权限约束!!!
讲到这里,权限部分还没有讲完,这一篇文章只是介绍了普通文件的权限。我会在下一篇文章中接着介绍文件夹的权限和指令提权等内容,期待各位宝子们大驾光临!
总结一下权限存在的意义:
权限只是用来限制普通用户的,没有办法限制root。权限的意义是用来保证普通用户的文件的安全性。