Bash 脚本用于维护访问文件的审计跟踪/日志

Bash 脚本用于维护访问文件的审计跟踪/日志

我搜索了 AskUbuntu 数据库,但找到的最接近的答案是关于如何记录错误的问题。

我正在寻找的是每次使用 sudo gedit / gksu gedit / pkexec gedit 时将其附加到日志文件/审计跟踪中。实际上,我将使用一个名为的包装器脚本,gsu该脚本调用pkexec gedit

我想要做的是将~/gedit-log以下内容附加到审计文件中:

YYYY-MM-DD hh:mm:ss Count /SystemDirectoryName/SystemFileName

请记住,我可能会导航到 /SystemDirectoryName 然后调用,gsu gedit SystemFileName因此第一个参数不能自动使用,因为必须添加路径。因此需要一个 bash 命令“这是文件名,请提供完整路径和文件名”。

当前日期和时间应采用人类可读的格式(而不是从 1970 年(纪元时间)算起的秒数)。示例中的日期和时间掩码可能不合适,而应符合行业标准。

需要一个命令将组合字符串 + CR/LF(回车换行符)附加到审计跟踪/日志文件。

将来,需要一个处理程序/脚本来统计某个文件被编辑的所有次数(/etc/default/grub 可能会有很多编辑),并将其放入“计数”字段中,然后删除多余的记录。这可能是一项cron日常工作?

有两个日期/时间字段可能比较合理。一个用于首次更改,一个用于上次更改。

希望此代码已经存在于 Linuxverse 中,或者可以轻松采用类似的代码。

代码本身可能会被放入单独的 bash 脚本中,因此它可以重新用于许多情况...例如,该用户编辑了该工资文件等。

答案1

对于我来说,最简单的答案不是使用journalctl衍生产品,而是使用“强力”编程/脚本。

这是代码。

~/bin/gsu

#!/bin/bash

# Usage: gsu gedit file1 file2...
#  -OR-  gsu natuilus /dirname

# & is used to spawn process and get prompt back ASAP
# > /dev/null is used to send gtk warnings into dumpster

COMMAND="$1" # extract gedit or nautilus

pkexec "$COMMAND" "${@:2}"

log-file "${@:2}" gsu-log-file-for-"$COMMAND"

/usr/local/bin/log-file

#! /bin/bash

# NAME: log-file
# PATH: /usr/local/bin
# DESC: Update audit trail/log file with passed parameters.
# CALL: log-file FileName LogFileName
# DATE: Created Nov 18, 2016.
# NOTE: Primarily called from ~/bin/gsu

ABSOLUTE_NAME=$(realpath "$1")
TIME_STAMP=$(date +"%D - %T")
LOG_FILE="$2"

# Does log file need to be created?
if [ ! -f "$LOG_FILE" ]; then
    touch "$LOG_FILE"
    echo "__Date__ - __Time__ - ______File Name______" >> "$LOG_FILE"
    #     MM/DD/YY - hh:mm:ss - "a/b/c/FileName"
fi

echo "$TIME_STAMP" - '"'"$ABSOLUTE_NAME"'"' >> "$LOG_FILE"

exit 0

gsu-log-file-for-gedit经过几次编辑后的日志文件内容:

__Date__ - __Time__ - ______File Name______
11/18/16 - 19:07:54 - "/etc/default/grub"
11/18/16 - 19:08:34 - "/home/rick/bin/gsu"
11/18/16 - 19:09:26 - "/home/rick/bin/gsu"

未来的增强功能

合并脚本将取出最后两行并将其合并为:

11/18/16 - 19:09:26 - "/home/rick/bin/gsu" (2 edits, first on 11/18/16 - 19:08:34"

相关内容