Полная очистка истории Bash из сценария оболочки (sysprep)

Расширенные разрешения, такие как списки контроля доступа, установленные setfaclи флаги возможностей, установленные setcap, хранятся в том же месте, что и традиционные разрешения и флаги set[ug]id, установленныеchmod:в индексном узле файла.

(На самом деле они могут храниться в отдельном блоке на диске, потому что индексный дескриптор имеет фиксированный размер, в котором есть место для традиционных битов разрешений, но нет места для потенциально неограниченных расширенных разрешений. Но это имеет значение только в редких случаях, например, если нужно позаботиться о том, чтобы setcapне хватило места на диске. Но даже chmodможет закончиться место на диске в системе, использующей дедупликацию!)

GNU ls не отображает атрибуты setcap файла. Вы можете отобразить их с помощьюgetcap. Вы можете перечислить все расширенные атрибуты с помощьюgetfattr -d -m -; атрибут setcap называется security.capabilityи закодирован в двоичном формате, который getcapдекодирует для вас.

1
06.12.2019, 22:16
2 ответа

Самое близкое, что я могу придумать, это:

sysprep.sh

#!/bin/sh
# other steps
cp /dev/null ~/.bash_history
shutdown -h now

Далее следует:

# exec /path/to/sysprep.sh

... вместо прямого вызова /path/to/sysprep.sh. Использование execзаменяет вашу текущую оболочку сценарием оболочки, который позволяет текущей оболочке записать свою историю и выйти. Затем сценарий sysprep может удалить (или очистить )ваш файл истории.

3
27.01.2020, 23:17

История текущей оболочки добавляется к $HISTFILEпри выходе из оболочки. При выполнении unset $HIST_FILEэтого не происходит, поэтому история этого экземпляра оболочки теряется при выходе из оболочки.

Итак,пока:

  1. исходный код сценария -ed или exec -ed из интерактивной оболочки или вызывается напрямую без интерактивной оболочки
  2. скрипт сбрасывает $HISTFILE перед выходом

Он может стереть файл истории или заменить его любой историей, которую вы хотите просмотреть позже.

1
27.01.2020, 23:17

Теги

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