Протоколирование сеансов оболочки зашифровано?

  1. Да, !отрицает следующее условие, то есть -exec sh -c 'ls -1 "{}" | egrep -q "*.counts.txt"' \;. Поскольку это -execусловие, которое отрицается, мы должны помнить, что оно истинно, если выполняемая им команда возвращает статус 0 (и отрицание условия истинно, если статус не равен 0 ).
  2. Аргументы после -execне передаются в оболочку, а вместо этого выполняются напрямую, поэтому понятие канала отсутствует. Если бы вы поместили туда символ вертикальной черты, внешняя оболочка (, которая запустила поиск, )использовала бы его, и весь вывод из find пошёл бы в egrep.

Документацию по аргументам !и -execдля find см. в man find.

3
05.09.2019, 11:35
2 ответа

Вы можете поместить файлы журналов в зашифрованное хранилище вместо того, чтобы шифровать отдельные файлы.

Или, может быть, пусть scriptзаписывает в fifo, читает этот fifo с помощью gpg, и пусть gpg выполняет шифрование и записывает его в файл.

0
27.01.2020, 21:32

Если вы используете bash, вы можете использовать скрипт ~/.bash_logoutдля шифрования файла журнала scriptс помощью gpg или чего-то подобного.

.bash_logoutнеобходимо знать имя файла журнала. Например, вместо того, чтобы просто запустить script filename, запустите функцию myscript, определенную в вашем .bashrc.

function myscript() {

  # Very primitive option handling. This really needs to pass any script
  # command-line options on to script.
  # Left as an exercise for the reader and the getopts documentation :)
  if [ -n "$1" ] ; then
    SCRIPT_FILENAME="$1"
  else
    SCRIPT_FILENAME="$USER-$(tty)-$(date +%s)"
  fi
  readonly SCRIPT_FILENAME
  export SCRIPT_FILENAME

  script "$SCRIPT_FILENAME"
}

А затем в файле выхода.bash _:

  if [ -n "$SCRIPT_FILENAME" ] && [ -e "$SCRIPT_FILENAME" ] ; then
      gpg --batch --yes  -r 'YOUR-EMAIL-OR-ID' -e "$SCRIPT_FILENAME"
      shred "$SCRIPT_FILENAME" # or any other file secure-erase tool.
      rm -f ""$SCRIPT_FILENAME"
  fi

ПРЕДУПРЕЖДЕНИЕ О БЕЗОПАСНОСТИ:Это делает вашу систему уязвимой ко всему, (например. исходный сценарий ), который может установить переменную SCRIPT _FILENAME в среде вашей оболочки. Злоумышленник может установить его для любого файла, к которому у вашего идентификатора пользователя есть доступ для записи. (Конечно, злоумышленник может просто перезаписать этот файл, если он может запустить что-либо от вашего имени.)

Этого можно избежать, установив $SCRIPT_FILENAMEи сделав его доступным только для чтения в вашей ~/.bashrc, а не в функции myscript. Это сделало бы невозможным использование другого имени файла с функцией myscript.

Или вы можете хранить все свои машинописные тексты в одном каталоге (, например./home/username/typescripts/). Затем сценарий выхода.bash _может проверить, что:

  • имя файла начинается с абсолютного пути к этому каталогу,
  • имя файла не заканчивается на.gpg
  • в имени файла нет ../
  • имя файла не является символической ссылкой
  • количество инодов имени файла = 1
  • и т. д.

перед шифрованием, измельчением и удалением.

ДРУГОЕ ПРЕДУПРЕЖДЕНИЕ О БЕЗОПАСНОСТИ:

ОСТОРОЖНО. НЕ ИСПОЛЬЗУЙТЕ ПРИМЕРЫ КОДА ДАЖЕ НА СОБСТВЕННЫЙ РИСК.МОИ ПРИМЕРЫ ТОЛЬКО ДЛЯ ИДЕИ.

В то время как небольшие части этого были протестированы по отдельности, это не было проверено как полная, функционирующая система. Этот ответ НЕ предназначен для предоставления полного решения. Он предназначен для того, чтобы предоставить вам идеи для самостоятельного изучения и реализации.

0
27.01.2020, 21:32

Теги

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