00:00
大家好,欢迎大家继续收看上硅谷的云计算课程,我是沈超老师。这节课呢,我们继续来学习呈现,那上节课我们讲了一下suidd的基本作用。那这节课呢,我们强调一下危险的。各位。这个东西极其危险,比之前的速度赋予权限还危险。最可怕的就是什么?如果你给一些你认为不太重要的命令或者工具附的这个权限,有可能会出现记录问题,比如说又是V。各位,这个比速度还要危险,为啥速度就算你负了边付错了,后边没有加文件名对吧?那你看这个执行的时候,最少还会让普通用户执行一下速度,还会让你输一下密码,我是不是还得确认一下你的身份才可以,而且呢,速度赋予的时候,你只要在VI后面加个文件名,这事就解决了。也没有什么太大问题。但是如果你真的给V负了。
01:04
SUID,那我们按照我们前面讲过了这个东西啊,就是说用户只要执行的是有SUID的权限,它就会变成root了。那root是不是就可以改任何文件了?而我们Linux都是建立在文件之上,所有的内容其实都是写入文件的,那这个东西就相当于你把服务器送给别人对吧?所以我们的建议是这样的,比如说你看啊,我们UB下的VM默认现在是一个普通文件。但是这个时候我非要给U加上S对吧,并下的VM,那这个时候你看一下他的权限,这个东西就会变得极其危险,危险到什么地步,我们的普通用户原先之前执行速度,我是不是还得确认一下你的身份?啊,然后如果你只要在后面加了文件,你是不是就不还不会有危险,那现在呢,好了,你只要干嘛user b下的VM好了,你就可以直接打开任何文件盘来看,你就是root可怕吗?也不需要在前面加任何的特殊符号,再有一个你手工指纹件面也没用,因为它不是速这个速度符杂,而是你给他给了一个SUID权限,任何人在执行这个命令的时候,身份都会变成root,我问你可怕吗?
02:19
所以啊各位,我们说像这样的实验做完扭头就把它改回来。减去啊,把那个S去掉,像这样的实验我们都说啊,说完啥最好不要,所以我们的建议是这样的。你首先其实我想说,首先你不应该自己来付S行线系统默认自带的SD的这个命令虽然很多,但都是他认为没有问问题,而且都是有保险机制的,比如说像他所有的他的保险机制就是在后面是不是普通用户执行的时候不许加用户名,加任何用户名都报错。对吧。那你自己设定的这个SG的命令呢,它可就没有这种。
03:03
保险机制,所以就不建议来做OK,所以最后你就不要再来这个手工赋予OK,那这里就给点建议,首先这些特殊的这些目目录的权限,你绝对不应该随便改,包括s sud权限,你坚决不能是无价,就默认不自带的就行,第二呢,你的密码一定要注意保护,严格遵守密码原则,第三呢,我想说。我觉得我们应该对系统中现有的或者说默认就有的suidd文件做一个列表,我定时检查这些文件有没有多的文件,有没有多余的文件被附了一个S元权线。各位,也就是说系统自带的suid权限我认为是没有危险的,但是如果只要系统下发现比这个不是自带的文件拥有了SUID,这个时候我就应该处理,那手工去写去检查肯定不现实,那这个时候我们就可以写一个脚本。
04:02
我们还没有讲脚本啊,没关系啊,视频这个东西呢,跟上课还不一样,我们后面录好的脚本大家可以先回头看,或者可以把这一段先放下,等到我们讲完了,看完脚本的内容回来再看,那我就简简单解释一下,我写的这个脚本其实并不复杂,我写了一个叫做。Suid的check的脚本文件,那这个脚本文件呢?我的脚本思路是这样的,我先找一个全新的Linux,没有被人操作过,没有动过手脚,比如说我们现在的系统,基本上系统文件都没有动过,然后呢,我在里面去找所有包含有suid。和SJD的权限的文件SJ。SJD的文件,把它找着之后呢,把它写入一个模板,文件写入一个模板。哎,这些文件里的suidd的文件,我就认为这是正常的,这是系统自带,然后呢。
05:01
我定时不定时的干吧。我定时不定时的干嘛再去执行这个脚本。哎,这个需要你手工先执行一遍,先把所有的SD文件找着,然后放入这个模板文件里,哎,先把它找着,然后呢,我定时不定时,我或者我定写的定时给我,以后每隔一个礼拜我执行一遍这个脚本,这个脚本干嘛?我在我的现有系统当中,现在的系统当中我也去找SUID。和SJD文件,我去找这些文件就具有这个权限文件,然后把它写在一个临时文件。把系统当中现有的这个东西写在临时文件里,临时文件,然后呢,拿临时文件去和模板。来对比。如果临时文件里的文件和模板是一样的,就证明系统中没有新出现文件。如果在临时文件里发现比它多了一个东西,那么就报结,或者把它记录下来,说某一个系统当中,这个系统当中,这次检测的时候发现了一个新的SD文件,管理员你赶快去看,这就是这个脚本的思路。
06:05
OK,各位。我们一直刷。说编程工程师、运维工程师在学编程的时候很困、痛苦,因为我们很难建立编程思想,所谓的编程思想其实就是这样。就是我写的这个东西,其实就是可以把我写的这东西当成伪代码。他,当然这个比伪战法还要简单,这只是个思路,换句话说,我要有思想来让系统,就是我应该怎么执行,实现这样一个功能,这就是连的思想。运维工程师其实一开始建立的时候很痛苦,但是反过来编程工程师他建立了运维思想,这个编程思想之后,他要想这个改成运维思想,其实也很痛苦。换句话说,其实就是啥,编程工程师和运维工程师就应该是两个岗位,我们有一个方向入门,另外一个方向作为辅助就行了,不一定非要你全部都会非常清松,OK,我们见过太多的这种,比如说是呃,编程技术非常好的这种工程师,其实他在运维上面理解也是很有问题的啊,所以我就说我们运维岗挺好啊,没问题,那这个就是我写这个东西的思路,好,那这个脚本我们看一下,现在呢,我已经把模板。
07:18
文件生效我已经保存好了,那然后呢,我就开始干嘛来范给讲过杠。逻辑货。两个条件,只要成立一个条件就生效,OK,减号讲过了,只要包含这一个权限就显示。换句话说。只要搜索整个根,只要在系统当中搜索到含有SSUID或者含含有SJD的文件,就把它保存在临时文件。我们脚本不一定看得懂啊,范德冰那是能看懂了吧,那我们干嘛?杠破去找包含4000这个减号,我们也是讲过了,只要有一个权限包含就行,或者呢,杠破包含2000这些文件看系统中有很多,其实不止一个。
08:06
哎,搜索整个根式稍微慢一点吧,咱们稍微等一下。哎,系统中肯定有好多啊,当然我再说这是干扰项啊,这些不是啊,那比如说我们找找帕的。有吗?啊,这是不是就能找到了,OK,那这些文件全部都是系统下拥有suidd和SJD的文件,那我把它搜一下,搜完之后呢,把它保存在临时文件。OK,然后呢,模板文件我之前已经建立过了,我在执行这个文件的时候已经建立了模板文件就是这个。嗯。啊,这是临时文件,那我干嘛用一个循环从这个临时文件当中读取出来,每一个文件名保存在电量I里。哎,这个格式我们后面可能会解释到啊,这个linus she的好处就是这些都非常简单,它默认保存的时候就是一行一个文件名一行,然后呢,这个放循环,就是后面有多少个数循环多少次,这种循环跟一般的循环不太一样,我们简单知道就行,就是说把里边每一个文件名都提取出来,保存在变量I里,然后呢。
09:13
拿这个变量去和模板文件来做对比。搜索字符串在这里面看能不能找到这个东西格。这个这就是模板文件了啊,两个文件里面,这是临时文件。这是事先建立好的模板文件,OK,那拿这个从临时文件里找到的文件名去和模板文件里去对比,哪怕如果不报错这个值,这就是不报错,证明这个文件找到了,那就证明这个文件没问题,那如果报错。否则,那么这个就是如果不报错,执行前面这个OK,如果在不报错,否则呢啊。如果文件名不在啊,这里加了取反是不在是不等于零,那就是说如果。
10:03
呃,不在,就说如果这个命令报错了,写了呢,就报一行错误,说这个文件名不存在文件里,把它写入在一个日志里,我们只要我每周,这就是这个文件的思路啊,这个文件里面我们牵扯太多还没有讲过的东西,所以大概说一下就行啊,那那我们只要干嘛把这个日志,把这个模板文件每个礼拜每周执行一次。然后呢,我每次登录看我日志写在了root下,我只要在root里发现出现的这样一个日志,我就打开,如果没没有找到这种新出现的D文件,这个文件就不建立。那只要找到这个文件有我一登录一哪些一登录我一看,诶突多出一个文件,那好我进去一看,然后这里面写了这个文件是不在历史的文件里了,不在这个模板文件里了,那这个时候我就要去看这个文件是不是新出现了,这就是这个脚本的这个作用,各位我跟你讲。善尔脚本就是干这个事的。
11:02
啥事?这个减轻管理员的重复工作。那你想我如果要不写脚本,我是不是就自己在每周执行这个手动去找,然后保存进去,然后自己来对比。对不对,我们有时候是不是都来找对吧,那如果有了脚本呢,就可以让他全自动执行,所以事儿就是干,这个就是什么,这个减轻管理员重复劳动,所以呢,绝大多数的12脚本都不会非常复杂,都是在工作脚本就是像这样十来行二三十行就撑死了,就能完成这样一个功能就可以了。哎,所以我一直说事是最简单的程序里面最简单的,那这里面其实有很多解释不了的东西,暂时比如说这个,这其实是命令返回值,如果等于零。则代表这个命令正确,如果不等于零,则代表这个命令报错,那那也就是说,如果这个到拉在这里找到了,那他就正确,就是零,那就不用没没有任何事,如果到了没在这里没找到,那这个名令报错,报错了就干嘛,就把这个文件名保存在日志里来,就这就这样一个作用。
12:11
OK。好这个脚本啊各位,其实很简单。那咱们现在看不懂,原因是12编程还没学对吧?那等我们后面讲完12编程,你回来再看这一段小就非常简单了,OK,好了,那我们通过这样的脚本来做啊,当然我这里说把临时文件再删掉啊,这样来做就行了,如果发现比如说看我给VS附了个us,要附了个S权限,只要一检测就会发现这个日志出现了,里面会写这个文件。后面这段内容是我自己写的,这个字符串我说不存在于列表当中,你要嫌麻烦是你就可以不写,只要在这里看见文件表就是报错了,OK,那这个脚本我就先不执行了,为啥呢?主要还是大家我看不一定看得懂,非常简单的一个脚本,如果你们学完12编程之后,自己有兴趣自己可以写一下,当然我写的只是基本功能,如果你愿意,可以在我这上上面再改写,加入更多的你认为实用的功能,OK。
13:10
好。今天讲的这个东西呢,其实反复都在强调一件事,就是啥。坚决不允许手工给系统的两付学习。系统自带的默认的,但是没办法,或者说我可以认为那个东西它都是系统经过检测的,做了一些限定手段的,没有风险。而如果你手工去付这些东西是极其危险的,所以说白了就一件事,坚决不许手工赋予S权线,所以这个东西就了解就行了,你就知道这是什么就行,你别说你碰到命令,你没见过这样的颜色的就料就坏了,对吧,知道是什么东西就行,其次呢,强调了一下这个脚本,这个脚本啊,我还是说。如果你真的是一个生产服务器这种脚本,检测脚本还是必须的,当然这只是检测了其中某一个功能,你可以写更多的功能往里加,对吧?比如说检测一下CPU的占有率啊,硬盘的占有率啊,只要出现问题就随时给我发发发邮件啊,都是可以的,OK。
14:09
好各位,那这节课呢,就是这样,我们把SUID是什么,我们讲完了,好,我们下节课再见。
我来说两句