自定义Linux操作日志配置

方案一:使用acct工具记录

步骤 1    通过设置日志文件可以对每个用户的每一条命令进行纪录,这一功能默认是不开放的,为了打开它,我们要确认已经安装了acct工具:

# Debian、Ubuntu、SUSE下叫acct

apt-get install acct
zypper install acct

# CentOS、RHEL、Fedora上叫psacct

yum -y install psacct

步骤 2    需要执行accton命令打开或关闭进程记帐,如:

#/usr/lib/acct/accton  /var/adm/pact
或
#systemctl start acct  或
#systemctl start psacct

步骤 3    acct服务开机自启动:

#chkconfig acct on
或
#systemctl enable acct  或
#systemctl enable psacct

步骤 4    执行读取命令

#lastcomm  [user name]

方案二:通过PROMPT_COMMAND环境变量设置(推荐)

1、配置PROMPT_COMMAND到/etc/profile

export PROMPT_COMMAND='user=$(whoami);user_id=$(id -ur $user);login=$(who -m | awk "{print $ 2\" \"$ NF}");msg=$(history 1 | { read x y; echo "$y"; });result_str="return code=[$?]";logger -t "[${SHELL}]" "[${msg}]" "${result_str}" "by [${user}(uid=$user_id)] from [$login]"' 
readonly PROMPT_COMMAND

2、source /etc/profile令其生效

(上述会有一个问题,空行回车会一直记录最后一次执行的命令到日志中)

方案三:创建/etc/profile.d/zzz-history.sh 并将以下内容拷贝进去,然后重新登录系统或source /etc/profile.d/zzz-history.sh 

 vi /etc/profile.d/zzz-history.sh 

function OpLog_history{typeset result=$?typeset result_str=""if [ ${result} -eq 0 ];thenresult_str="return code=[0], execute success"elseresult_str="return code=[${result}], execute failed"fihistory -atypeset user=$(whoami)typeset user_id=$(id -ur $user)typeset login=$(who -m | awk '{print $2" "$NF}')typeset msg=$(history 1 | { read x y; echo "$y"; })typeset num=$(history 1 | { read x y; echo "$x"; })if [ "${num}" != "${LastComandNum_for_history}" ] && [ "${LastComandNum_for_history}" != "" -o "${num}" == "1" ];thenlogger -t "[${SHELL}]" "[${msg}]" "${result_str}" "by [${user}(uid=$user_id)] from [$login]"fiLastComandNum_for_history=${num}
}
function OpLog_variable_readonly{typeset var="$1"typeset val="$2"typeset ret=$(readonly -p | grep -w "${var}" | awk -F "${var}=" '{print $NF}')if [ "${ret}" = "\"${val}\"" ]thenreturnelseexport "${var}"="${val}"readonly "${var}"fi
}export HISTCONTROL=''
#OpLog_variable_readonly HISTTIMEFORMAT ""
OpLog_variable_readonly PROMPT_COMMAND OpLog_history

扩展信息-EulerOS上的实现

华为EulerOS上就是通过方案三进行实现的,该系统上安装了一个叫security-tool的RPM包。

  • 在bash环境下主要是通过/etc/profile.d/zzz_euleros_history.sh进行的设置
  • 在csh/tcsh环境下通过/etc/profile.d/zzz_euleros_history.csh 进行设置

/etc/csh.precmd
/etc/euleros_security
/etc/euleros_security/security
/etc/euleros_security/security.conf
/etc/euleros_security/usr-security.conf
/etc/pam.d/password-auth-crond
/etc/pam.d/password-auth-local
/etc/pam.d/su-local
/etc/pam.d/system-auth-local
/etc/profile.d/zzz_euleros_history.csh
/etc/profile.d/zzz_euleros_history.sh
/usr/lib/systemd/system/euleros-security.service
/usr/sbin/security-tool.sh

扩展信息-关于acct记账工具包

# Debian、Ubuntu、SUSE下叫acct
apt-get install acct
zypper install acct

# CentOS、RHEL、Fedora上叫psacct
yum -y install psacct

描述:psacct package包含几个用于监控进程活动的实用程序,包括ac, lastcomm, accton和sa。ac命令显示用户登录时间的统计信息。lastcomm命令用来显示以前执行过的命令的信息。accton命令打开或关闭进程记帐。sa命令用来汇总以前执行过的命令的信息。

#讲真,记录的并不详细

ac   #显示登录账号的简要信息
accton    #打开或关闭进程记录功能
last      #显示曾经登录过的用户
lastcomm  #显示已执行过的命令
sa        #进程用户记录信息的摘要
dump-utmp   #输出utmp文件内容
dump-acct   #输出acct或pacct文件内容

扩展信息-关于 logger命令

logger -t 
 -t, --tag <tag>          向每一行添加指定标记
 -p, --priority priority_level
        指定输入消息的优先级,优先级可以是数字或者指定为 "facility.level" 的格式。比如:"-p local3.info " local3 这个设备的消息级别为info。默认级别是 "user.notice"

logger输出日志发送给哪个文件是通过/etc/rsyslog.conf中*.开头的行决定的,默认情况下是任何日志日志发送给/var/log/messages里,也可以指定发送给其他文件里。

表面上,上述说法并无问题,其实质是有-p 参数决定的,默认输出级别为"user.notice",由于rsyslog.conf中默认并没有配置此级别的日志输出,故,只能输出到*.开头的日志文件中;假如在rsyslog.conf做如下配置:
# operation log
user.notice                                             /var/log/operation.log
& stop
……
*.info;mail.none;authpriv.none;cron.none                /var/log/messages

则logger的输出只会记录到 /var/log/operation.log。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/50230.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

视觉SLAM第一讲

第一讲-预备知识 SLAM是什么&#xff1f; SLAM&#xff08;Simultaneous Localization and Mapping&#xff09;是同时定位与地图构建。 它是指搭载特定传感器的主体&#xff0c;在没有环境先验信息的情况下&#xff0c;于运动过程中建立环境的模型&#xff0c;同时估计自己…

TCP/IP面试三道题

针对TCP/IP的面试题&#xff0c;我将从简单到困难给出三道题目&#xff0c;并附上参考答案的概要。 1. 简单题&#xff1a;请简述TCP/IP协议族的基本组成&#xff0c;并说明每一层的主要功能。 参考答案&#xff1a; TCP/IP协议族是一个由不同层次组成的协议集合&#xff0c…

长效IP有哪些应用场景?

不同于经常重置的短效IP&#xff0c;长效IP以其长久稳定的特性&#xff0c;为各行各业提供了更为广阔的应用舞台。今天&#xff0c;就让我们一起探索极光http这一长效IP服务的魅力&#xff0c;看看它是如何成为众多领域首选的。 1. 远程工作的稳定后盾 在远程办公日益普及的今…

昇思25天学习打卡营第23天|LSTM+CRF序列标注

Mindspore框架CRF条件随机场概率图模型实现文本序列命名实体标注|&#xff08;一&#xff09;序列标注与条件随机场的关系 Mindspore框架CRF条件随机场概率图模型实现文本序列命名实体标注|&#xff08;二&#xff09;CRF模型构建 Mindspore框架CRF条件随机场概率图模型实现文本…

【Beyond Compare】Beyond Compare下载、安装与使用详细教程

目录 &#x1f33a;1 概述 &#x1f384;2 Beyond Compare 安装包下载 &#x1f33c;3 安装详细教程 &#x1f342;4 免费注册 &#x1f30d;5 使用详情 &#x1f33a;1 概述 Beyond Compare 是一款强大的文件和文件夹比较工具&#xff0c;广泛应用于软件开发、文档管理和…

枚举单例是怎么保证线程安全和防止反射的

枚举单例在Java中具有天然的线程安全性和防止反射攻击的特性&#xff0c;这是由于Java对枚举类型的特殊处理方式。以下是详细解释&#xff1a; 1. 线程安全性 Java 枚举类的特性 类加载机制&#xff1a;枚举类型在Java中是特殊的类&#xff0c;由JVM保证其线程安全性。枚举类…

Web动画(lottie篇)

一、Lottie简介 Lottie是一个库&#xff0c;可以解析使用AE制作的动画&#xff08;需要用bodymovin导出为json格式&#xff09;&#xff0c;支持web、ios、android和react native。在web侧&#xff0c;lottie-web库可以解析导出的动画json文件&#xff0c;并将其以svg或者canva…

linux time使用

关于linux内 时间获取的数据结构和api函数比较&#xff0c;看具体需要什么样的了 一般只是需要获取系统时间计算下时间差值&#xff0c; 毫秒的 static int time_flag 0; ktime_t time_now_ms ktime_get(); static ktime_t time_last_ms ktime_get(); ktime_t…

electron调试

electron 调试 electron 的调试分两步&#xff0c;界面的调试&#xff0c;和主进程的调试。 界面调试类似浏览器F12&#xff0c;可是调试不到主进程。 主进程调试有vscode、命令行提示和外部调试器调试。 本篇记录的练习是vscode调试。命令行和外部调试器的方式可以参考官网&a…

通过NPOI读取Excel内容导入到数据库

系统中经常用需要读取Excel文件中的数据&#xff0c;导入到数据库&#xff0c;下面是一个示例。 vs&#xff1a;2022 框架&#xff1a;abpvnext 3.1 把Excel中的数据导入到数据库 /// <summary> /// 导入 /// </summary> /// <param name"formFile"…

CJS与ESM:CJS

模块化方案 历史上&#xff0c;JavaScript 一直没有模块&#xff08;module&#xff09;体系&#xff0c;无法将一个大程序拆分成互相依赖的小文件&#xff0c;再用简单的方法拼装起来。其他语言都有这项功能&#xff0c;比如 Ruby 的require、Python 的import&#xff0c;甚至…

PEFT LoRA 介绍(LoRA微调使用的参数及方法)

一 PEFT LoRA 介绍 官网简介如下图&#xff1a; 翻译过来是&#xff1a;低秩自适应(LoRA)是一种PEFT方法&#xff0c;它将一个大矩阵在注意层分解成两个较小的低秩矩阵。这大大减少了需要微调的参数数量。 说的只是针对注意力层&#xff0c;其实我自己平时微调操作注意力层多…

nacos2.x作为配置中心和服务注册和发现以及springcloud使用

目录 一、nacos是什么 二、windows下安装配置nacos 1、准备 2、安装nacos 3、配置nacos 4、启动并且访问nacos 三、springcloud使用nacos作为配置中心 四、springcloud使用nacos进行服务注册与发现 五、springcloud使用nacos进行服务消费 六、nacos的一些高级配置 1…

Ubuntu上编译多个版本的frida

准备工作 Ubuntu20(WSL) 略 安装依赖 sudo apt update sudo apt-get install build-essential git lib32stdc-9-dev libc6-dev-i386 -y nodejs 去官网[1]下载nodejs&#xff0c;版本的话我就选的20.15.1&#xff1a; tar -xf node-v20.15.1-linux-x64.tar.xz 下载源码 …

AbutionGraph时序(流式)图数据库开发文档地址

AbutionGraph-时序(流式)图数据库&#xff0c;官方开发文档(API)地址&#xff1a; http://www.thutmose.cn

JavaSE从零开始到精通(九) - 双列集合

1.前言 Java 中的双列集合主要指的是可以存储键值对的集合类型&#xff0c;其中最常用的包括 Map 接口及其实现类。这些集合允许你以键值对的形式存储和管理数据&#xff0c;提供了便捷的按键访问值的方式。 2. HashMap HashMap 是基于哈希表实现的 Map 接口的类&#xff0c…

lua 游戏架构 之 游戏 AI (七)ai_dead

定义一个名为ai_dead的类&#xff0c;继承自ai_base类。这个类用于处理游戏中AI在死亡状态下的行为逻辑。以下是对代码的具体解释&#xff1a; 1. **引入基类**&#xff1a; - 使用require函数引入ai_base类&#xff0c;作为基础类。 2. **定义ai_dead类**&#xff1a; …

java算法day23

java算法day23 121买卖股票的最佳时机55 跳跃游戏45 跳跃游戏Ⅱ763划分子母区间 121买卖股票的最佳时机 最容易想的应该就是两个for暴力枚举。但是超时 本题用贪心做应该是最快的。 先看清楚题&#xff0c;题目要求在某一天买入&#xff0c;然后在某一天卖出&#xff0c;要求…

MarkTool集合篇

MarkTool目前包含以下几种工具 1、TCP客户端 2、TCP服务端 3、UDP客户端 4、Web客户端 5、Web服务端 6、串口网口 7、PLC 8、获取本机设备 9、Log 10、密钥 11、系统设置 11-1、基本设置 11-2、角色设置 11-3、用户设置 11-4、log记录 开启软件需要找我解密&#…

S7-1200PLC通过111报文和EPOS模式实现位置轴轴控功能(FB284封装)

EASY_SINA_POS的详细使用介绍请参考下面文章链接: S7-1200PLC使用标准报文111和EPOS模式实现V90 PN总线伺服定位(Easy_SINA_Pos)_西门子sinapos-CSDN博客文章浏览阅读132次。文章浏览阅读7k次。先简单说下如何获取FB284,一般有2种方法,Startdrive软件可以操作大部分西门子的…