Linux记录用户执行命令

2023-05-16

#!/bin/bash
# By lumia98@vip.qq.com
# 记录用户执行命令及IP地址
# 登录提示权限不足可以忽略,因为这是禁止用户删除权限提示;
# Linux详细记录每个用户的执行命令
# 缺陷不能记录vim里的命令

# 文件存放在 /etc/profile.d 或者/etc/profile
# source /etc/profile 生效或者重启系统;

# 创建目录
hislog_dir="/tmp/hislog"
[ -d ${hislog_dir} ] || mkdir -p ${hislog_dir}

# 第一次请先赋予目录权限,方便普通用户也能记录
# chmod 777 ${hislog_dir}

# 创建存放日志文件
export HISTFILE="${hislog_dir}/$(date '+%F').his"
# 给这个文件最大权限,让普通账号的命令也能记录
# -x 判断文件是否有执行权限;-w 文件是否有写入权限; -r 文件是否有读取权限
[ -x  ${hislog_dir}/$(date '+%F').his  ] || chmod 777 -R ${hislog_dir}/$(date '+%F').his

# 权限(只能root用户可以查看),开启这个普通账号无法记录命令
#umask 000 $HISTFIE

#定义保存的命令日志文件
export HISTTIMEFORMAT='%F %T '
#定义命令日志格式
export PROMPT_COMMAND='user=$(who am i | sed "s/[ ][ ]*/ /g"); history 1 \
| { read x date time cmd; echo "${date} ${time} ${user} $(whoami) ${cmd}";} >> $HISTFILE'

# 禁止用户删除权限;取消sudo chattr -a
chattr +a -R ${hislog_dir}

# ${date} ${time} 当前操作命令时间
# ${user} 登录用户
# $(whoami) 当前执行命令的用户
记录的命令格式如下,截取了一小段
[root@test ~]# more /tmp/hislogs/2020-12-30.his 
2020-12-30 15:58:34 centos pts/1 2020-12-30 15:54 (12.21.13.24) centos su - root
2020-12-30 16:04:26 centos pts/1 2020-12-30 15:54 (12.21.13.24) centos ll
2020-12-30 16:04:26 centos pts/1 2020-12-30 15:54 (12.21.13.24) centos ll
2020-12-30 16:04:26 centos pts/1 2020-12-30 15:54 (12.21.13.24) centos ll
2020-12-30 16:04:36 centos pts/1 2020-12-30 15:54 (12.21.13.24) centos more /tmp/hislogs/2020-12-30.his
2020-12-30 16:04:44 centos pts/1 2020-12-30 15:54 (12.21.13.24) centos ls -ls
2020-12-30 16:04:45 centos pts/1 2020-12-30 15:54 (12.21.13.24) centos more /tmp/hislogs/2020-12-30.his
2020-12-30 16:04:49 centos pts/1 2020-12-30 15:54 (12.21.13.24) centos cd
2020-12-30 16:04:49 centos pts/1 2020-12-30 15:54 (12.21.13.24) centos cd
2020-12-30 16:05:09 centos pts/1 2020-12-30 15:54 (12.21.13.24) root ll
2020-12-30 16:05:15 centos pts/1 2020-12-30 15:54 (12.21.13.24) root vim /etc/profile.d/history.sh
2020-12-30 16:05:37 centos pts/1 2020-12-30 15:54 (12.21.13.24) root source  /etc/profile
2020-12-30 16:05:38 centos pts/1 2020-12-30 15:54 (12.21.13.24) root ll
2020-12-30 16:05:41 centos pts/1 2020-12-30 15:54 (12.21.13.24) root ll /tmp/
2020-12-30 16:05:43 centos pts/1 2020-12-30 15:54 (12.21.13.24) root ll /tmp/hislogs/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux记录用户执行命令 的相关文章

  • 如何通过替换为空页映射来取消映射 mmap 文件

    Linux 用户空间有没有办法用空页面 映射自 dev null 或者可能是一个空页面 重复映射到从文件映射的页面的顶部 对于上下文 我想找到这个 JDK bug 的修复 https bugs openjdk java net browse
  • 使用 grep 查找包含所有搜索字符串的行

    我有一个文件 其中包含很多与此类似的行 id 2796 some model Profile message type MODEL SAVE fields account 14 address null modification times
  • 如何使用 bash 锁定文件

    我有一个任务从远程服务器同步目录 rsync av email protected cdn cgi l email protection srv data srv data 为了使其定期运行并避免脚本 reEnter 问题 我使用 rsyn
  • 从 csv 文件中删除特定列,保持输出上的相同结构[重复]

    这个问题在这里已经有答案了 我想删除第 3 列并在输出文件中保留相同的结构 输入文件 12 10 10 10 10 1 12 23 1 45 6 7 11 2 33 45 1 2 1 2 34 5 6 I tried awk F 3 fil
  • 如何在 Linux 中编写文本模式 GUI? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 当我编写脚本 程序时 我经常想弹出一个简单的文本 gui 来提示输入 我该怎么做 例如 来自 Shel
  • 如何禁用 GNOME 桌面屏幕锁定? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 如何阻止 GNOME 桌面在几分钟空闲时间后锁定屏幕 我已经尝试过官方手册了在红帽 https access redhat com doc
  • Jenkins中找不到环境变量

    我想在詹金斯中设置很多变量 我试过把它们放进去 bashrc bash profile and profile of the jenkins用户 但 Jenkins 在构建发生时找不到它们 唯一有效的方法是将所有环境变量放入Jenkinsf
  • 如何根据 HTTP 请求使用 Python 和 Flask 执行 shell 命令并流输出?

    下列的这个帖子 https stackoverflow com questions 15092961 how to continuously display python output in a webpage 我能够tail f网页的日志
  • Linux中的CONFIG_OF是什么?

    我看到它在很多地方被广泛使用 但不明白在什么场景下我需要使用它 What is 配置 OF OF 的全名是什么 打开固件 这是很久以前发明的 当时苹果公司正在生产基于 PowerPC CPU 的笔记本电脑 而 Sun Microsystem
  • 无法从 jenkins 作为后台进程运行 nohup 命令

    更新 根据下面的讨论 我编辑了我的答案以获得更准确的描述 我正在尝试从詹金斯运行 nohup 命令 完整的命令是 nohup java jar home jar server process 0 35 jar prod gt gt var
  • 域套接字“sendto”遇到“errno 111,连接被拒绝”

    我正在使用域套接字从另一个进程获取值 就像 A 从 B 获取值一样 它可以运行几个月 但最近 A 向 B 发送消息时偶尔会失败 出现 errno 111 连接被拒绝 我检查了B域套接字绑定文件 它是存在的 我也在另一台机器上做了一些测试 效
  • 如何在数组中存储包含双引号的命令参数?

    我有一个 Bash 脚本 它生成 存储和修改数组中的值 这些值稍后用作命令的参数 对于 MCVE 我想到了任意命令bash c echo 0 0 echo 1 1 这解释了我的问题 我将用两个参数调用我的命令 option1 without
  • linux perf:如何解释和查找热点

    我尝试了linux perf https perf wiki kernel org index php Main Page今天很实用 但在解释其结果时遇到了困难 我习惯了 valgrind 的 callgrind 这当然是与基于采样的 pe
  • 无法使用 wget 在 CentOS 机器上安装 oracle jdk

    我想在CentOS上安装oracle java jdk 8 我无法安装 java jdk 因为当我尝试使用命令安装 java jdk 时 root ADARSH PROD1 wget no cookies no check certific
  • 如何在 Linux shell 中将十六进制转换为 ASCII 字符?

    假设我有一个字符串5a 这是 ASCII 字母的十六进制表示Z 我需要找到一个 Linux shell 命令 它将接受一个十六进制字符串并输出该十六进制字符串代表的 ASCII 字符 所以如果我这样做 echo 5a command im
  • CentOS:无法安装 Chromium 浏览器

    我正在尝试在 centOS 6 i 中安装 chromium 以 root 用户身份运行以下命令 cd etc yum repos d wget http repos fedorapeople org repos spot chromium
  • NPTL 和 POSIX 线程有什么区别?

    NPTL 和 POSIX 线程之间的基本区别是什么 这两者是如何演变的 POSIX 线程 pthread 不是一个实现 它是几个函数的 API 规范 纸上的标准 英文 其名称以pthread 以及定义在
  • Linux:在文件保存时触发 Shell 命令

    我想在修改文件时自动触发 shell 命令 我认为这可以通过注册 inotify 挂钩并调用来在代码中完成system 但是是否有更高级别的 bash 命令可以完成此任务 尝试 inotify 工具 我在复制链接时遇到问题 抱歉 但 Git
  • 使用 sh 运行 bash 脚本

    我有 bash 脚本 它需要 bash 另一个人尝试运行它 sh script name sh 它失败了 因为 sh 是他的发行版中 dash 的符号链接 ls la bin sh lrwxrwxrwx 1 root root 4 Aug
  • Linux 中什么处理 ping?

    我想覆盖 更改 linux 处理 ping icmp echo 请求数据包的方式 这意味着我想运行自己的服务器来回复传入的 icmp 回显请求或其他 数据包 但为了使其正常工作 我想我需要禁用 Linux 的默认 ping icmp 数据包

随机推荐

  • 从纹理中生成法线贴图

    概要 本为主要讲解生成法线贴图的基本方法 xff0c 并在 unity 中进行实现和测试 预备知识 法线贴图和基本的图形学知识 xff0c 基本的向量和极限的知识 高度图或灰度图 一张二维纹理有两个维度 u 和 v xff0c 但其实 xf
  • MySQL死锁产生原因和解决方法

    Mysql 锁类型 一 锁类型介绍 xff1a MySQL有三种锁的级别 xff1a 页级 表级 行级 表级锁 xff1a 开销小 xff0c 加锁快 xff1b 不会出现死锁 xff1b 锁定粒度大 xff0c 发生锁冲突的概率最高 并发
  • Flink 动态实时流计算

    xff08 先给个预告 xff0c 下一期关于Flink的文章会讲如何将机器学习融入Flink中 xff09 摘要 本文提供了一种在流计算中不停机动态加载代码来做到敏捷而快速的开发的思路 代码提供在 Lofka 的 lofka night
  • 通俗说Openvswitch

    Openvswitch xff0c 顾名思义 xff0c Open xff0c 开源的 xff0c v xff0c virtual xff0c 虚拟的 xff0c switch交换机 通俗的讲就是一款开源的软件 xff0c 可以创建虚拟的交
  • 人间还是仙界?聊一聊linux系统的用户空间和内核空间

    我们生活在人间 xff0c 但 西游记 里提到 xff0c 在天上还有一个仙界 人间不知道仙界的存在 xff1b 而仙界知道人间的存在 xff0c 神仙也可以从仙界下凡到人间 xff0c 但是被严格管控的 软件设计的灵感其实都来自于生活 x
  • 什么是实时数据库?

    实时数据库是数据库系统发展的一个分支 xff0c 它适用于处理不断更新的快速变化的数据及具有时间 限制的事务处理 实时数据库技术是实时系统和数据库技术相结合的产物 xff0c 研究人员希望利用数据库 技术来解决实时系统中的数据管理问题 xf
  • 带你阅读linux内核源码:linux内核源代码编程规范

    linux内核代码是许许多多遵循相同内核开发规范的牛人们的共同的创造的结晶 作为一名linux内核或者驱动开发工程师 xff0c 很有必要了解这些内核开发规范 好处有以下几个 xff1a 这些约定或者规范对我们阅读linux内核源码 了解设
  • linux进程上下文、中断上下文介绍,以及为什么软中断不能睡眠?

    linux内核的软中断处理程序中能不能睡眠 xff1f 这是一个值得讨论的问题 答案其实很简单 xff0c 那就是不能 因为Linux的软中断处理程序的运行上下文有可能是中断上下文 xff08 注意此处是有可能 xff0c 而并非一定 xf
  • VS2008用devenv.com命令行工具自动编译工程

    转自 xff1a http www cr173 com html 18500 1 html 在vs2008下面提供了devenv com命令行方式 我们可以从VS安装目录 MicrosoftVisual Studio 9 Common7 I
  • 使用ICMP协议检测网络状态

    ICMP xff08 Internet ControlMessages Protocol xff0c 网间控制报文协议 xff09 是TCP IP协议族的子协议 xff0c 是一种面向无连接的协议 xff0c 在IP和路由器之前传递控制消息
  • c++打印enum class

    span class token keyword enum span span class token keyword class span span class token class name A span span class tok
  • 使用strace查找Emacs启动阻塞的原因(exec-path-from-shell)

    原文地址 https www lujun9972 win blog 2019 09 26 使用strace查找emacs启动阻塞的原因 exec path from shell index html 之前就觉得我的Emacs启动好慢 xff
  • 为Linux安装虚拟PDF打印机

    原文地址 https lujun9972 github io blog 2020 04 11 为linux安装虚拟pdf打印机 index html 今天发现一个 CUPS PDF 项目 可以为 CUPS Common Unix Print
  • ubuntu系统启用shell远程登陆

    Ubuntu desktop系统安装后 xff0c 想使用shell远程登陆 xff0c 会提示 Connecting to 192 168 220 133 22 Could not connect to 39 192 168 220 13
  • 枚举类(ENUM)用法总结

    对于ENUM一直是比较陌生的 xff0c 在和某酷爱ENUM的大神合作时 xff0c 才慢慢接触到ENUM的用法 1 ENUM是什么 xff1f 首先ENUM是一个类 xff0c 不像String int之类的数据结构 xff0c 更类似于
  • Python循环结构练习2

    Problem A xff1a 循环结构 输出数列2 xff0c 5 xff0c 8 xff0c 11 xff0c 14 题目描述 输入正整数n xff08 n 100 xff09 xff0c 输出数列2 xff0c 5 xff0c 8 x
  • KVM网络模型之:PCI Passthrough

    目录 PCI Passthrough技术介绍和KVM中配置 案例 内核启用 重新启动虚拟机实例 PCI Passthrough技术介绍和KVM中配置 PCI Passthrough技术是虚拟化网卡的终极解决方案 xff0c 能够让虚拟机独占
  • 微信开放公众平台,扩展自定义类,定时提醒,定时发消息

    微信开放公众平台 xff0c 扩展自定义类 xff0c 定时提醒 xff0c 定时发消息 lt php class MyapiAction extends BaseAction public function index 微医疗 预约提醒
  • Ubuntu配置iptables规则

    Ubuntu配置防火墙 xff0c 并且开机iptables自启动规则 适用于CentOS 1 登录root账号 span class token comment 切换到root账号 span super 64 super span cla
  • Linux记录用户执行命令

    span class token shebang important bin bash span span class token comment By lumia98 64 vip qq com span span class token