多用户登录自动保存history到统一目录

 

场景:生产环境下,多个普通用户登录,登录后自动记录history操作到某个统一目录保存。

具体要求:

1) 每个用户登录后自动创建子目录及history记录文件;

2) 允许用户创建history记录文件并追加内容,不允许修改和删除;

3) 不允许用户修改和删除其他用户的子目录;

4) 不允许用户查看其他用户的子目录内容;

解决方案:

编写 /etc/profile 文件,添加下面内容

# securiry record history
# add by shenxiaoran

history
USER_IP=$(who am i 2>/dev/null | awk '{print $NF}' | sed -e 's/[()]//g')
if [ "$USER_IP" = "" ];then
    USER_IP=`hostname`
fi

if [ ! -d /tmp/user_history ];then
    mkdir /tmp/user_history
    chown root.root /tmp/user_history
    chmod 777 /tmp/user_history
    chattr +a /tmp/user_history
fi

if [ ! -d /tmp/user_history/${LOGNAME} ];then
    mkdir -p /tmp/user_history/${LOGNAME}
fi

export HISTTIMEFORMAT='%F %T '
export HISTSIZE='40960'
time=$(date '+%Y%m%d-%H:%M:%S')
export HISTFILE="/tmp/user_history/${LOGNAME}/${USER_IP}[$time]"
chmod 600 /tmp/user_history/${LOGNAME}/*history* 2>/dev/null

保存

# source  /etc/profile 生效

测试:

创建普通用户,passwd 用户口令,使用普通用户登录

普通用户登录后不会创建history记录文件,退出后立即生成,如下所示:

# ll /tmp/user_history/root/
total 8
-rw------- 1 root root   81 Apr  3 11:43 192.168.11.50[20150403-03:52:17]
-rw------- 1 root root 1239 Apr  3 11:45 192.168.11.50[20150403-11:39:11]

注意:经过修改/etc/profile文件以后,用户登录后输入history命令只能查看到本次登录的历史记录,若想看以前的可以cat ~/.bash_history文件。

用户每开一个终端都会在/tmp/user_history下面保存一个文件,记录当前终端的history信息。

查看文件内容 #cat 192.168.11.50[20150403-11:39:11]

#1428032352
history
#1428032387
cd /tmp/user_history/root/

说明:这里的#1428032352是以Unix时间表示的形式,如果想转换成human模式,可以使用date -d命令转换

# date -d @1428032352
Fri Apr  3 11:39:12 CST 2015

# date -d @1428032352 +'%F %T'
2015-04-03 11:39:12

转载于:https://my.oschina.net/lionel45/blog/386280

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值