00:01
大家好,欢迎大家继续收看上硅谷的云计算课程,我是沈超老师。这节课呢,我们继续来学习这个window这个权限。那这节课我们来讲一个叫做特殊权限的东西,那它分为三个权限,Set u ID set JD和这个static bit。那这三个权限我们一般也会简称为suidds JD和SBI。那。这三个权限呢,这是Linux下的一个三个特殊权限,那么各位。这仨玩儿可不是太安全。这个东西是Linux应对这个特殊情况所准备的权限,主要是给Linux一些特殊命令来用。不建议或者说不推荐,咱们用户手动来设置不推荐,尤其是S。这个家伙是有极其危险的危险性的,盲目的设置这个东西有可能会出现严重的安全后果。
01:02
我们一直说这个攻击其实不是说是就是外来攻击为主的,外来攻击只在只占咱们所有的这种,比如说是造成重大损失的事件当中,占比只是个位数。而990以上的这个90级以上的这个东西都是其实内部员工误操作来造成的,那像这样的东西其实就有可能会造成一些非常严重的安全事事故,所以这个权限基本上除没有太大的危险性,那就这两个东西,尤其是这两个。不允许手工赋予系统默认自带,它是被迫他,这是代价最小的方法让他拥有,对吧?一定会透露权限的,所以大家这个东西了解就好,不建议手工富余,OK。那好,那说了这么多啊,说了这么危险,那这到底是啥?你还记得一件事吗?我们一开始讲u must时的时候,咱们发现权限是不是四个类。而我们说后两位,后三位是不是才是我们的权限第一位,我说是不是暂时放下对吧,那为啥暂时放下。
02:07
第一位这个数字就是这三个特殊权限所用于进去这三个特殊权限,那我们也就是说现在我们就来解释这权限,比如说0755,这第一位是什么?哎,那我们先来看看SUISUID是什么,我们先看一下事啥事。我问你一件事,什么普通用户能不能改自己的密码,我拿UC1的能吗?这个我们是不是都是演示的,演示过了普通用户是能够改自己密码的,但是。有一个小问题,我不知道你们注意过没,这是pass的文件。这是pass的文件。这是杀的文件,我们知道密码最终是不是放入的是杀的文件对吧,密码是不是最终是放在了这里,对吧。但是这个文件的权限是000。
03:03
那也就是说UC用户对这个文件来讲是没有任何权限的。那理论上来说,UC用户是对这个文件就啥都干不了,不能看,也不能打开,也不能写,对吧。但是我们都知道,密码的更改最终是不是就是写入到了沙豆这个。文件当中,我说系统密码最终就是放入这里,那用户既然对他没有权限对这个文件,那他怎么是把怎么可以把自己的密码写在这个文件里了。哎,我们都知道普通用户是能改自己密码对吧,他虽然改不了别人,但是他能改自己的呀,那他是怎么做到的各位。这个奥秘在哪儿啊,在这个。在这个passor的命令当中,诶,Pass的命令在这儿,首先啊,这不是一个东西啊,上面这是配置文件,用户信息文件,我们讲过了,里边是七列,这是pass做的这个程序脚本的位置,OK啊,那我们可以看到看。
04:05
这个文件颜色看起来极其鲜艳,红底的一种字体,那我们说过linus是这样的,颜色越鲜艳,代表这个文件就越危险,那这还真不是报错,那原因为什么?是这个红色的,你仔细看。在权限这里多出来了一个S,那各位所谓的SUID啊,指的就是如果在所有者这个位置有S均线,那么它就是Su。而如果是在所属组这里有S权限,那它就是SJ。哎,各位他是这样分的,那如果是在其他人这里,当然其他人这里不是S权限,是这个气权限,如果有气权限就是SBS。OK,那其实这都一样的,这个作用是一样的,跟这俩S是一样的,也就是说它是来判断你这个家伙是在哪个位置,来判断这是Su还是SJD,那我们现在可以看到这个SV是在所有者的位置,那这个文件就是一个拥有suidd的。
05:12
命令格外。那为什么要给这个家伙设置suidd?我说这东西很很危险对吧?目的其实就是为了干嘛?普通用户UC在执行这个命令的时候能够修改这个文件,目的就是让普通用户可以设密码。OK,那他是怎么做到的呢?我们来看一下,那么SD如果要想正确知行,它有这样几个条件,那么第一个它必须针对只可执行文件才能设定suit权限。各位小心,必须,当然不一定非是二进制程序,二进制程序就是系统并列经过编译之后的临界定一的,你自己写的脚本也可以。换句话说,只要是执行文件,只要是执行文件,那它都可以设定Sui矩。
06:03
那如果给不是执行文件的负SD会有什么情况,我们看一下来。我们在这里有一个做touch,一个测试文件ABC。怎么负简单,U加S就是负S,看U加S我说了是不是就是S,那这加S就是SBSJ,如果是那个O加T,那就是。看懂了吗?S是不是就代表S这个S权限的意思,这是不是就是所有者所所有者所属组其他人对吧,那这个时候看啊,我们。给ABC付了权限,看颜色是一样的,但是你会发现件事啥事。这个S是大写S。啊,跟前面我们看他做的不太一样,Pass做的是小写S,各位这个大写S是什么意思呢?其实是个报错,它代表这个文件没有作用,为啥呢,我们强制要求。
07:04
如果要想给一个文件附suid权限,这个文件必须是可执行的,那我们说这只是个普通文件,是没有执行权限,所以系统用大S的方式告诉你,这个权限用不了,这个权限不太对,不准这个权限,这个权限是错的,或者说你可以这样理解。小写的S权限代表的是大S权限加执行权限,也就说这里如果是小写的,代表它既有S又有执行,如果这里是大写的,那就代表它只是S没有执行,那这个文件是不能用的,这个S原意,所以啊,第一件事。Suid只针对可执行文件才会拥有suid权限啊,不一定商业性制的就执行的就行。那那如果这样说,我尝试给这个文件附直行线ABC,我们看一下。来我们就可以看到啊,对不不对,ABC把这个覆盖掉了,这个权限没有了,那要想覆呢,用数字覆呢,就可以在这前面干嘛加个四也行。
08:04
哎,我说过了,权限是四位,最前面的这个代表呢,是不是就是特殊权限,那四代表我们往后看啊,这个后面会说一下,我们就怎么设在后面。四代表的是SUID,二代表是SJD,一代表的是SBD,也就是说前面在这设,设四就是s suidd,设二就是S这个债,那设一就是SBG。当然如果设七,前面这位是七,那就代表全都有,那更麻烦了,这个不会出现啊,那就是三一分开。嗯。那也就是说。回来。我刚刚付权限的时候,因为前面没有写数,它默认就是零,所以把我这个权限给覆盖掉,这个时候要不然就可以在这儿U再加S,或者就像我这样四千五就可以了,回车,那这个时候差你会发现S正常了吧。看到了吧,是小S了吧,所以说s suid权限是必须是要有直权限的,那也就说没有执行,它就会变成大S,会变成大写SOK,小心这个事啊,当然这个文件虽然有SD平行了,但是里面是没有代码的,是空的,所以它同样不能执行,那也就没有风险,OK。
09:21
那这样的测试文件我用完把它去参删掉啊。好。那我们解释的第一句话,它必须针对执行程序才能设定权限。第二句话,代表命令的执行者要对这个程序拥有执行权限才可以用。啥意思啊,我们看一下。有并下的爬了。这是帕索的那令这是沙子对吧?那我现在问你。我U41要想改密码,我是不是就要用这个命令,用的是不是也是这个命令,那我问你,我U41对这个命令有执行权限吗。
10:02
那我们可以看到U对这个文件来讲是其他人的权限,因为所有者所属组都是root。No。这个命令其他人是有执行权限的,可以看到吧,没错吧,所以各位那代表UC是对这个文件执行权限的,OK,啥意思啊。Suid权限它必须是在执行的时候,用户执行它的时候,它才能生效,所以呢,它有个前置条件,一个必须这个文件是可以执行的。第二个就是用户可以有权限来执行这个文件,用户也能执行。这个时候这个D才会生效,这就是前两句话的意思,看明白了吗?第一个就是必须是一个执行文件本能执行才能生效,第二个就是我的用户,普通用户U,我要对这个文件得有执行权限,我得能够执行它D才会生效。OK,这两个是前提条件,前提条件有了之后呢,那SUID呢,它的作用就生效,它的作用是。
11:03
命令的执行者,也就是U。在执行该命令的时候,他获得他的成这个身份,他或者说他的角色会变成文件的所有者的身份。隔断啥意思啊?UCE本来是UCE,那UCE本来对这个文件,对杀毒密码文件是没权限,它是改不了密码,但是呢,因为他做的命令。是有Su选项,所以呢,当UC执行他做的时候,他的身份会从UC1变成这个文件命令的所有者,那所有者是谁?所有在这里是root吧,对吧,那各位所有者是root,那root对这个文件杀毒文件有权限了吗。有写入了权限了吗?Root,我说了忽略这个读写执行权限,零权限也能写入,那所以就是由于他做的有这个S权限,所以UC在执行他的时候身份会升级成。
12:04
Root,那root是有权限来改密码,哎,这就是这个权限Su权限的作用啊,画个示意图啊看。普通用户,比如说LA或者是UC都一样,那么我想要去修改这个文件。那这个文件权限是000,那如果我要是用,比如说普通命令,没有SD的命令,比如说cat命令。那T命令的权限是普通的读写执行,那么那这个时候用户执行这个普通命令,普通命令因为没有特殊权限,所以他还是他的身份还是还是烂普,那烂普是没有权限访问它,所以是禁止访问。而如果我用的是他的命令。来访问他,哎,各位你就可以看到吗?看。我普通用户U1,我要访问这个文件,我得通过命令时才能访问,如果用杀漏访问这个cat命令是普通权限,普通文件,普通命令没有suidd,所以不能访问,没权限就是没权限,但是如果我要是用passord来回车呢?我是不是用passord,是不是在访问这个文件,那passor是有s suidd权限的。
13:12
OK,那这个时候他在执行,就是任何普通用户在执行这个命令的时候,他就灵魂附体了,他在命令的执行过程当中,就变成了这个命令的所有者,那这个命令的所有者是root。所以它在命令执行过程中变成了root。诶,而root是有权限操作杀毒文件,他就可以改密码了。看明白了吗?看明白了吗?哎,这就是第二句话的意思,命令了执行者在执行该程序的同时,或者这个程序文件所有者属主,就是所有者,所有者的身份,哎,也就是这个时候,你可以理解为就灵魂父亲,父亲变为root。那root是可以操作最后一句话。这个身份转变,也就说灵魂附体不是永久的,这个是临时了,就跟这个咱们看动画片必须要什么,穿个衣服啊,或者拿个道具喊一句咒语,他才能就比如说。
14:10
诶,这个叫啥奥特奥特曼对吧,它只必须得那样才会变身,而且是有时间限制的,什么时间呢?只有在程序的运行过程当中有效,一旦程序结束。这个身份就会又变回来,就是又会又会恢复,就变成普通人了,哎,他是这样一个情况。OK。那好,各位为什么用这么复杂的一个东西。来进义了,原因就是什么各位,就是我说的是。系统是备课吧。我必须是要让U色一可以改自己的密码,这是一个常规需求,对吧,自我改不了别人的密码,我改自己的密码就行吧,对吧,那我问你,那我如果要想要由此一改,那我是不是就得把这个,要不然就是得把这个权限开大,把其他人权限是不是得给写。我是不是才能把它写进去,我问你为什么。
15:02
任何人如果都能写这个文件,那这个root的密码也保存在这个文件里啊,我要能改我的密码,我就能改root。那与其这样危险,还不如干嘛,我设计那个D。你只有在执行这个命令的时候,你才会变为root。才会变为root,而root才能改成文件。其次啊,他还给这个UC在执行普通用户在执行这个家伙的时候给了个限制条件是吧,你看普通用户如果后面加用户名,他会报错。为啥?如果我要允许你加用户名,那你加us色可以,那你加root是不是也是可以的?对吧,所以我干脆就限制普通用户,不允许在他做的后面加用户名,你只能趴座的直接回车,这就是修改你当前用户的地方,修改UC,你是谁就改谁。所以呢,这样做系统认为风险最低,给他做的来设S。那实际情况下啊,如果是给系统自带的这些程序来设计suidd,其实风险确实不太大,但是我们怕的是你给你自己的手工,给一些定律来给这个S元女行,这就要了命了,好了。
16:18
各位。这就是suidd的基本的这个作用,OK,那这张图呢,其实就可以基本反映出来SUID。它在这个执行过程中,它的这个变化,OK,那这就是SYD的基本作用,那我们再强调一遍,这个系统自带的其实一般都没有风险,但是不建议你手工赋予好,能看懂就行,他是被迫是为了让系统当中部分功能是正常的,他被迫给的。好了,那这节课的内容就是这样,我们下节课再见。
我来说两句