Привилегированный режим в ударе

Мой .bash_history обычно просто символьная ссылка на /dev/null (т.е., моя история никогда не сохраняется на диске). Следовательно, когда я запускаю оболочку, нет никакой истории к доступу. Однако история действительно накапливается, означая, что удар делает это в памяти, не в файле истории.Действительно? man bash говорит (в соответствии с ИСТОРИЕЙ):

На запуске история инициализируется из файла, названного переменным HISTFILE (значение по умолчанию ~/.bash_history). [...], Когда файл истории читается, строки, начинающиеся с символа комментария истории, сопровождаемого сразу цифрой, интерпретируются как метки времени для предыдущей строки истории. Эти метки времени являются дополнительно скидкой ‐ играемый в зависимости от значения переменной HISTTIMEFORMAT. Когда интерактивная оболочка выходит, последние строки $HISTSIZE копируются от списка предыстории до $HISTFILE.

Я оставил бит о метках времени в том, потому что это помогает объяснить формат файла истории при рассмотрении его (это - список простого текста). Основной момент здесь - то, что файл истории только используется, когда оболочка сначала запускается, и с другой стороны когда это выходит (для добавления новейшей истории).

Так как формат является просто списком команд, вкрапленных метками времени, и удар будет хорошо работать, даже если файл ничего не будет содержать (такой как со ссылкой/dev/null), то я не могу предположить там быть любыми негативными последствиями импорта того. Вы могли, вероятно, даже вручную добавить материал в него, опустив метки времени - по крайней мере, Вы могли попробовать его. Если оболочка завинчивает, просто выйдите и восстановите старую историю.

Необходимо также смочь использовать несколько историй в нескольких целях, если Вы хотите путем свопинга файлов или экспорта $HISTFILE перед запуском оболочки. Если Вы устанавливаете их только для чтения (или возможно сброс $HISTFILE впоследствии? Это зависит от того, проверяет ли оболочка, что переменная в конце, или использует начальное значение), затем они не будут добавлены к тому, когда оболочка выйдет также.

5
04.03.2014, 17:57
2 ответа
[115990] Без этого вы не можете использовать bash в качестве SUID-бинарника.[115991]
-1
27.01.2020, 20:38
[115992] С информационной страницы [116335]bash[116336]:
  • `-p'
  • Включите привилегированный режим. В этом режиме `$BASH_ENV' и Файлы `$ENV' не обрабатываются, функции оболочки - нет. унаследованные от окружающей среды, и `ШЕЛЛОПТОВ`, Переменные `BASHOPTS', `CDPATH' и `GLOBIGNORE', если они появляются в окружающей среде, игнорируются. Если оболочка начинается с идентификатора действующего пользователя (группы), не равного идентификатор реального пользователя (группы), и опция `-p' не предусмотрена, эти действия предпринимаются, и эффективный идентификатор пользователя установлен на настоящий идентификатор пользователя. Если опция `-p' поставляется при запуске, эффективный идентификатор пользователя не сбрасывается. Выключение этой опции приводит к тому, что эффективные идентификаторы пользователей и групп устанавливаются на реальный идентификаторы пользователей и групп. [12119] Это говорит о том, что опция [116341]-p[116342] позволяет bash сохранить эффективный userid, с которым он запущен, а без которого он будет устанавливать эффективный uid на фактический uid (ваш пользователь). Это позволит бит сетуидов быть эффективным, позволяя bash удерживать пользователя, для которого он запущен. Обратите внимание, что при использовании опции [116343]-p[116344] множество файлов и переменных игнорируются и не наследуются от родительской оболочки.[115997].

    7
    27.01.2020, 20:38

    Теги

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