Как получить историю командной строки другого пользователя?

But why does it not do the same until it finds the expected version rather than accepting the first instance of library irrespective of its version?

Да, насколько ему известно. zlib.so.1.2.7и zlib.so.1.2.8оба имеют soname zlib.so.1, поэтому ваши двоичные файлы alphaи bravoговорят, что им нужно zlib.so.1. Динамический загрузчик загружает первую найденную подходящую библиотеку; он не знает, что версия 1.2.8 предоставляет дополнительные символы, которые нужны bravo. (Вот почему дистрибутивы стараются указать дополнительную информацию о зависимостях, такую ​​как zlib1g (>= 1.2.8)для bravo.)

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

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

(Учитывая сонимы, я ожидаю, что ваш двоичный файл alphaбудет нормально работать с zlib.so.1.2.8.)

0
06.02.2020, 15:51
1 ответ

Создайте сценарий и сохраните его в папке PATH, доступной для всех пользователей. например. /binили/usr/bin

Скрипт

#!/usr/bin/env bash

HISTFILE=$HOME/.bash_history
history -r
unset HISTFILE
history

Сохраните его под именем, напримерprint_history

Теперь попробуйте

su - user_name -c 'print_history'

Вы сказали, что у вас есть формат времени в /etc/bashrc, поэтому я не отключал HISTTIMEFORMATв этом скрипте. Идея этого скрипта не моя, я лично использую переменную PROMPT_COMMANDдля захвата всех команд (и каждого пользователя в моей системе ), который вводит/запускает команды во время интерактивного сеанса, поэтому я не использую этот скрипт так что это все, что я могу сказать об этом сценарии. Конечно, все пользователи должны использовать bash в качестве журнала -в оболочке.

1
28.04.2021, 23:24

Теги

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