首页 > 编程知识 正文

linux运维面试题,java代码调用shell命令

时间:2023-05-05 00:20:15 阅读:140135 作者:2634

http://www.Sina.com/http://www.Sina.com /

Linux 利用script命令审计运维安全

大家对于Linux的history命令想必都十分熟悉,这个命令所生成的命令记录可以帮助我们审计运维时的操作,但,生成的记录周期是从登陆系统直到退出登陆才会生成。虽然可以通过调用系统环境变量给记录增加一些内容,比如命令执行时间,在哪个IP登陆的等等这样的信息,不过,并不是实时的。简单来说,缺点太多,1,不实时,2,无法控制整体流程。3,记录的信息并不算完整,即使通过变量改造后。

那么,运维安全审计的利器Linux系统内置的scrip命令基本就可以达到我们的需求了。

script命令启动的时候会自动录制Linux终端的所有命令(文本编辑的内容并不会录制,指的是vim或者vi编辑文本,这可能也是出于一种安全考虑吧,具体的文本内容变动都记录的话,对安全方面也是一个考验了),总的来说,script命令就像在Linux系统内置了一个摄像机,所有的动作都可以通过scriprereplay命令读取script命令生成的记录文件还原所记录的操作。

如标题所说,设计这么一个审计系统,首先要考虑的是需要确定运维安全审计的范围(运维安全审计指的是对运维期间的各种操作的审查),对服务器的操作可能不是一个人运维,有的时候需要多人同时协作,那么就可能需要开启多个终端,并且可能很多操作是远程操作,比如xshell,putty连接,涉及的用户也可能不是单一的,也可能有root用户,或者普通的oracle等等用户,多空间,多维度,多层次的复杂运维环境。

[ root @ centos9~~] # script-- help usage : script [ options ] [ file ] options 3360-a,--append append the output -c - commandcommandruncommandratherthaninteractiveshell-e,--returnexitcodeofthechildprocess-f, - flushrunflushaftereachwrite-- forceuseoutputfileevenwhenitisalink-q,--quiet be quiet -t,- timing [=file ] outputtttttte

a,初识script命令

script命令基本Linux的发行版都内置有,因此基本不需要安装,开箱即用。先看看这个命令的帮助吧。

[ root @ centos9~ ] # scriptscriptstarted,fileistypescript 3358 www.Sina.com /

style="text-indent:33px;">c,

[root@centos9 ~]# script -aScript started, file is typescript[root@centos9 ~]# df -ahFilesystem Size Used Avail Use% Mounted onsysfs 0 0 0 - /sys中间省略了tmpfs 396M 0 396M 0% /run/user/0[root@centos9 ~]# exitScript done, file is typescript[root@centos9 ~]# script -a Script started, file is typescript[root@centos9 ~]# lsanaconda-ks.cfg bash-5.0 bash-5.0.tar.gz createrepo.sh typescript[root@centos9 ~]# exitScript done, file is typescript

此时,是添加了一个a参数,追加,两个命令一个df 一个是ls命令,是分开执行的,先启动script,录制了df命令,然后停止了script命令,在启动script命令录制了ls命令看看typescript里记录了这两个命令没有?

可以看到,两个命令都录制进去了,也就是追加效果有了。

d,

script -t 参数是指定时序文件,时序文件记录了命令的执行时间,从而在使用scripreplay的时候能根据这个时序文件准确还原前面的录制。-f实时更新文件内容,下面例子还是使用的typescript这个名字,当然,任意的名字都可以,你只要知道意思就可以了。-t后面加不加空格都行,指定时序文件的名字,在这我使用的是myfirst.time 这个名字

[root@centos9 ~]# script -tmyfirst.time -f typescriptScript started, file is typescript[root@centos9 ~]# ls -alh typescript -rw-r--r-- 1 root root 7.6K Feb 12 20:55 typescript[root@centos9 ~]# ls -alh typescript -rw-r--r-- 1 root root 7.7K Feb 12 20:55 typescript[root@centos9 ~]# ls -alh typescript -rw-r--r-- 1 root root 7.9K Feb 12 20:55 typescript[root@centos9 ~]# ls -alh typescript -rw-r--r-- 1 root root 8.0K Feb 12 20:55 typescript

可以看到,文件在不停的执行ls命令时,文件在不断增大,如果查看内容,当然,也会实时的显示出来,在此不演示了。

f,

scriptreplay的使用:前面是script命令生成了两个文件,一个时序文件,一个内容记录文件,需要注意的是 这两个文件是一对文件,必须都有才可以回放哦。

[root@centos9 ~]# scriptreplay -t myfirst.time typescript

录制的时候可以看到script这个命令的进程,直到Ctrl+d 结束script这个命令。回放的时候,如果你在开一个终端,并执行ps命令,你可以看到scriptreplay的进程,直到回放结束,该进程自动结束。

生成的这一对文件必须是同一个script命令生成的才可以回放哦,这一点需要牢记~!!!!!

g,

前面演示的都是使用root账号,那么,登陆别的账号的运维安全可以审计到吗?当然,可以,将命令写在 /etc/profile 这个全局环境变量文件里即可。

打开  /etc/profile  末尾添加 script -t -f -q 2>~/script.time -a ~/script.his

这一句的意思是在 /mnt 这个文件夹下生成两个文件,script.time 和script.his 这两个文件,追加,实时写入,静默,文件存放在用户家目录下,普通用户登陆后录制的文件在普通用户的家目录,root自然在root的家目录。

只要登陆就立刻开始录制所有的命令内容。如果要查看回放,命令为  :scriptreplay -t script.time script.his

总结: script可以看做一个实时的录屏软件,只是回放的时候不能够选择性的回放,录屏的时候时序文件和内容文件最好取一个自己能记得住并理解的文件名,并且这两个文件是一对的,要配对的才可以回放。

 

 

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。