Сценарий 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 так первый параметр не может автоматически использоваться, потому что путь должен предварительно ожидаться. Поэтому команда удара "вот является именем файла, дайте мне, полный путь и имя файла" требуются.

Текущая дата и время должна быть в человекочитаемом формате (не число секунд с 1970 (время эпохи)). Маска Даты и времени в примере является, вероятно, несоответствующей и должна соответствовать промышленным стандартам вместо этого.

Команда необходима для добавления строки комбинации + CR/LF (Перевод строки Возврата каретки) к журналу аудита / файл журнала.

В будущем программа массирования / сценарий был бы необходим для соответствия всем временам, данный файл был отредактирован (/etc/default/grub, мог получить много редактирований) в поле "количества", и удалите посторонние записи. Это, вероятно, было бы a cron ежедневное задание?

Могло бы иметь смысл иметь два поля даты/времени. Один в первый измененный раз и один в прошлый измененный раз.

Надо надеяться, этот код уже существует в Linuxverse, или что-то близко к нему может быть легко адаптировано.

Сам код мог бы быть помещен в отдельный сценарий удара, таким образом, он может повторно ставиться целью для многих ситуаций..., т.е. этот пользователь отредактировал тот файл платежной ведомости и т.д.

0
задан 19 November 2016 в 05:22

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"
0
ответ дан 28 September 2019 в 04:15

Другие вопросы по тегам:

Похожие вопросы: