LINUX.ORG.RU
ФорумAdmin

Узнать, читали ли файл

 , ,


1

1

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

Перемещено hobbit из general



Последнее исправление: hobbit (всего исправлений: 1)

Читай про ionotify, настраивай.

kostik87 ★★★★★
()
Последнее исправление: kostik87 (всего исправлений: 1)

Ну… может примерно такой скрипт сделай:

Установи два пакета - «inotify-tools» и «mailx»

Задай свои переменные и запусти скрипт ./follow.sh -start

follow.sh

#!/bin/bash

LOG_FILE="/tmp/tmp.log"
USER_NAME="admin"
MONITOR_DIR="/opt/antivirus"

SECRET1="secret.txt"
SECRET2="secret2.txt"
SECRET3="secret3.txt"

MONITOR="monitor.txt"
MAILTO="admin@domain.ru"
MONITOR_FILE=("$MONITOR_DIR/$SECRET1" "$MONITOR_DIR/$SECRET2" "$MONITOR_DIR/$SECRET3")

case "$1" in

    -start)
    sh follow.sh -check &
    sh follow.sh -mail &

    ;;

    -check)

      inotifywait --recursive --monitor --format "%e %w%f" \
      --event open "${MONITOR_FILE[@]}" \
      | while read changed; do
          echo "$(date "+%d.%m.%H.%M.%S")-$changed" 2>&1 | tee "$LOG_FILE" >> $MONITOR
      done

      ;;

    -mail)

      CS=$(md5sum "$LOG_FILE" | awk '{print $1}')
      while true; do
      N_CS=$(md5sum "$LOG_FILE" | awk '{print $1}')
        if [ "$CS" != "$N_CS" ]; then
            echo "$(cat $MONITOR | tail -n1 | awk  -F " " '{print $2}')" | mailx -s "Файл прочитан! " $MAILTO
        fi
      CS="$N_CS"
      sleep 5

      done

      ;;

      -stop )
    xcmd="$(mktemp)"
    echo "$(ps aux | grep -w follow.sh | awk -F" " '{print $2}')" > "$xcmd"
    while read -r line; do
      kill -9 "$line"
    done < "$xcmd"
      rm -f "$xcmd"
    ;;

  * )
  echo "Usage: $0

    follow.sh { -start, -stop }
  "
    ;;

esac
exit 1
```
demo13
()

Как ты собрался отличать себя от кулхацкера? Предположим, он установил на твой компухтер вирос, который даёт ему удалённый рабочий стол. Вот он ночью заходит, открывает этот файл - от твоего имени, твоей программой. Как понять что это был не ты?

Gary ★★★★★
()

еще есть демон auditd инфу по нему хватает, настрой - запусти - пользуй.
дальше мудри с фильтрацией кулхацкеров от себя.

pfg ★★★★★
()

Где файл хранится? Как его читают (напрямую, через сеть, …)?

Может файл на флешке, флешка в кармане.

futurama ★★★★★
()
Ответ на: комментарий от Gary

Ну… может примерно такой скрипт…

:-)))

Вот он ночью заходит…

а я посмотрел свой e-mail - admin@domain.ru, и вдруг понял, что ночью, когда я спал, кто-то открывал этот файл!!! … и это точно не я!!!

:-)))

Допустим есть файл как узнать сколько раз его читали и сам факт чтения

скрипт это делает!

и ещё… это не решение проблемы, а пример в какую сторону можно посмотреть.

Вот и я задал бы теже вопросы, как и futurama, тогда и скрипт можно дальше пилить!

:-)))

demo13
()
Последнее исправление: demo13 (всего исправлений: 1)
Ответ на: комментарий от doomer

Ну может он откроет от nobody или ещё кого

как вариант - строку:

echo "$(cat $MONITOR | tail -n1 | awk  -F " " '{print $2}')" | mailx -s "Файл прочитан! " $MAILTO

исправить на строку:

echo "$(cat $MONITOR | tail -n1 | awk  -F " " '{print $2}')" && echo "$(lsof | grep $MONITOR_DIR)" | mailx -s "Файл прочитан пользователями!" $MAILTO

это покажет - кто открывал файлы…

:-)))

demo13
()
Последнее исправление: demo13 (всего исправлений: 1)

Проблему решаешь не стой стороны. Есть специальные системы доступа к файлам - купи/или возьми opensource и не изобретай велосипед

ivanich10 ★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.