linux sh 脚本 历史记录,shell脚本自动记录登陆后的IP地址和某用户名所操作的历史记录...

今天一台线上的服务器不知道被哪个活宝执行了chmod -R 700 /home,造成了文件权限不对,密钥认证就读不到密钥了,所有人账户都登陆不上服务器了。排查了一下原因,排除了安全问题。那剩下的就是同事的误操作了。但是!!!! chmod -R 执行这个可是很让人怀疑的!!!于是报着试一试的心态去last ,然后history。其实这时候通过查看历史记录查是没有什么意义了。笨蛋执行了命令之后还留着,肯定history -c 了、果然,全部查完了,依然不知道没有查出来是谁,有几个人历史命令就几条,这种也没法问,问也白问。

算了,这次反正没有丢什么重要的数据,服务器也没什么事情。饶恕了这个大神吧。但是,万一下次又有人误操作了怎么办,有一天因为某人误操作了删除了重要的数据怎么办..

现在从两个方面入手,第一服务器安装第三方记录工具,可以记录登陆的每个用户操作的日志,第二结合行政手段,最好有相关的规章制度,如果你是运维部的老大,可以定下。有奖有法。起到一个警示的作用。

查阅了下相关资料,还是下面这个方法好:

标题: 在/etc/profile中写一个shell脚本来记录登陆后的IP地址和某用户名所操作的历史记录!!!

PS1="`whoami`@`hostname`:"'[$PWD]' (Linux系统提示符是用系统变量PS1来定义的)

history

USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'` (who -u am i 会显示系统中登陆进来的用户及登陆从哪个IP登陆进来的,这里后面过滤了就取值一个登陆进来的IP)

if [ "$USER_IP" = "" ]

then

USER_IP=`hostname`

fi

if [ ! -d /tmp/ruige ]

then

mkdir /tmp/ruige

chmod 777 /tmp/ruige

fi

if [ ! -d /tmp/ruige/${LOGNAME} ]

then

mkdir /tmp/ruige/${LOGNAME}

chmod 300 /tmp/ruige/${LOGNAME}

fi

export HISTSIZE=4096

DT=`date '+%Y:%m:%d %r'`

export HISTFILE="/tmp/ruige/${LOGNAME}/${USER_IP} ruige.$DT"

chmod 600 /tmp/ruige/${LOGNAME}/*ruige* 2>/dev/null

会在系统的/tmp新建个ruige目录,在目录中记录了所有的登陆过系统的用户和IP地址,还有历史命令!我们还可以用这个方法来监测系统的安全性。

注意:最好再给ruige这个目录建议你加个t位!!

chmod o+t  ruige 或者chmod o+t  ruige

补充知识点:

一:linux系统中who am i 和whoami的区别!

who am i 显示的是实际用户ID即用户登陆的时候的用户ID!!

whoami 显示的是有效用户ID.!!!

95d55a9dc9ea1bfc7f5f0ec46db8d0aa.png

但在大多数情况下,实际用户ID和有效用户ID是一致的。

login:root

Pssword:

$who am i

root pts/0 2007-08-16 13:16 (:0.0)

$whoami

root

当切换用户后:

su   tongrui

#who am i

root pts/0 007-08-16 13:16 (:0.0)

#whoami

tongrui

也可以说who am i 显示的是切换用户前的实际登陆的用户ID,whoami是切换后的有效的用户ID,此时此终端具有切换后用户的访问权限,如本文中切换后则具有超级用户的访问权限。

who am i和whoami有何区别?

首先要说明uid和euid(effective user id)的区别。uid就是你login的时候使用的id,而euid则是你当前的有效id。因为登录后我们可以使用su切换用户身份,所以uid和euid可能是不同的,程序在运行的时候一般看的都是euid,当然也有特出的,who am i就是一个。

举个例子:用户用root登陆,使用su变成tongrui,用who am i看到的是root,使用whoami命令看到的是tongrui。

96dcd53435eb9eb9376f26327451e438.png

who am i与whoami的区别:

1.whoami显示effective current username(即通过su username1之后,

显示的是username1);

2.who am i显示的是original username(即在使用su命令之前的username).

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值