Я хотел бы изменить настройки истории для всех пользователей в системах, которыми я управляю. Я хотел бы, чтобы он содержал информацию от соединительного терминала, как изwho
sysadmin:/ # who
sysadmin pts/0 Mar 26 07:11 (sysadmin.doofus.local)
В настоящее время я изменяю свою историю следующими способами. Я знаю, что многие из этих настроек были рассмотрены здесь несколько раз. Однако я давно вытащил этот код из « Рецептов системного администрирования Linux»: Джульетта Кемп .
shopt -s histappend
PROMPT_COMMAND='history -n;history -a'
HISTSIZE=100000
HISTFILESIZE=100000
HISTTIMEFORMAT="%m/%d/%y %T "
shopt -s histappend
устраняет проблему, когда у вас есть несколько открытых терминалов, информация может быть потеряна.
PROMPT_COMMAND='history -n;history -a'
расширяется, чтобы в режиме реального времени добавлять в историю несколько терминалов.
HISTSIZE=100000
HISTFILESIZE=100000
продлевает срок history
хранения
HISTTIMEFORMAT="%m/%d/%y %T
«Предисловие каждой строки истории с отметкой времени
Что вы обычно получаете с history
835 ls
836 cd ..
Мои измененные текущие history
результаты
5853 03/26/12 07:16:49 ls
5854 03/26/12 07:16:50 ll
Возвращение из history
я хотел бы видеть
5853 03/26/12 07:16:49 sysadmin.doofus.local ls
5854 03/26/12 07:16:50 sysadmin.doofus.local ll
001 03/26/12 05:11:29 demo_user.doofus.local cd
002 03/26/12 05:11:30 demo_user.doofus.local ll
Я не "женат", чтобы увидеть DNS
имя. Я бы хотел, чтобы он был там только в том случае, если он извлекает его из who
другого места, не выполняя поиск или запрос любого рода. Я был бы счастлив с IP-адресом.
002 03/26/12 05:11:30 192.168.0.2 ll
Почему? Я управляю несколькими системами с идентификатором пользователя, который совместно используют несколько пользователей одной группы для выполнения своих повседневных задач. Это позволило бы мне соотнести их реальное местоположение и фактического пользователя в организации с тем, что они делали в истории.
Я знаю, что это не оптимально, и хотел бы изменить его, но, когда вы находитесь на корабле размером с круизный лайнер, вы не пытаетесь сделать крутые повороты. (Примечание: когда вы делаете это, пассажиры пытаются выбросить вас за борт)
В любом случае, пока я не смогу перевести их на лучшее решение, мне бы хотелось иметь эту возможность отслеживания.
Кроме того, если у вас есть какие-либо рекомендации относительно того, что я в настоящее время использую для своих history
модификаций, я хотел бы услышать это.
Спасибо,
Редактировать: 1
Я не хочу запускать другие программы или настраивать что-либо дополнительно «в пределах разумного».
Я хочу добавить 0
накладные расходы, если я должен добавить, он должен быть маленьким.
Я действительно доверяю своим пользователям. Я просто хотел бы (если что-то случится) увидеть, кто из, скажем, 10 пользователей, вошедших в систему с одним и тем же пользователем: пароль сделал это. Или, возможно, это был не пользователь, он мог быть забыт cron
в системе, которая выполняет подключение как пользователь, чтобы что-то сделать. Или приложение Ex: BMC Control-M
подключается ssh
и выполняет задачи. Это не столько поиск "плохих пользователей", сколько возможность найти его с минимальными усилиями.
Изменить 2:
Системы работают на SLES и RHEL
/proc
/dev
и пользовательские /home
каталоги. Это добавляет накладные расходы. Принимая во внимание, history
что уже записывается, и информация об их соединении известна системе, соединяющей IP и т. Д. ... Эта информация, если она еще не доступна "статически", может быть установлена таким образом или сохранена в переменной или файле и введена в history
записи и снижение производительности будет очень маленьким или 0.
auditd
. Я не уверен, что его журналы дадут вам достаточно информации. Сложность того, что вы хотите, заключается именно в том, почему общие учетные записи так осуждены.
auditd
очень похоже, что inotify
вы должны сказать ему, что следить за изменениями. Отдельные файлы, каталоги и т. Д. Я не хочу переходить на этот уровень конфигурации. На самом деле (я делаю), но по сути дела это не волнует. Я должен puppet
справиться с этим. auditd
поставляется с дополнительной нагрузкой и временем для настройки. Если учетная запись изменяет что-то, я все же хотел бы оглянуться назад в истории и посмотреть, кто или что входит в систему и пытается.
PROMPT_COMMAND=
просто запускает обычные команды перед следующим приглашением, вы не могли бы написать функцию, вызывающую sed / awk, которая работает в последней строке файла истории, чтобы добавить информацию. затем вызвать эту функцию, PROMPT_COMMAND=
чтобы добавить данные? это было бы хакерски, но надо делать работу.