Всегда помните, что команда history
отображает историю текущего пользователя. Это означает, что один пользователь не может видеть историю другого пользователя.
Пожалуйста, войдите как root
пользователь
Выполните следующую команду
grep -e "$pattern" /home/*/.bash_history
Если у вас несколько пользователей, имя пользователя будет отображаться как/home/username
Пример вывода:
/home/testuser1/.bash_history:ls /home/testuser2/.bash_history:pwd
Как увидеть метки времени в истории bash
Пожалуйста, выполните следующую команду, чтобы увидеть дату и время в истории команда
HISTTIMEFORMAT="%d/%m/%y %T "
Затем введите команду history
Пример вывода
root@system:~# history 67 02/04/18 19:25:03 echo 'hi' 68 02/04/18 19:25:03 ls -l 69 02/04/18 19:25:03 pwd 70 02/04/18 19:25:03 ifconfig
Существует несколько довольно простых способов скрыть запись путем неправильного направления (, но они не выдерживают тщательной проверки ).
Например, вот упрощенное доказательство концепции вмешательства в вывод crontab -l
на лету.
crontab() {
case "$*" in
(*-l*) command crontab "$@" | grep -v "some_haxx.sh" ;;
(*) command crontab "$@" ;;
esac
}
Вам придется вставить это в профиль оболочки.
С небольшим усилием можно было бы сделать его более гибким, но уловка все равно может быть обнаружена, если вы простоcat /var/spool/cron/someuser
Я думаю, что подобное вмешательство в -e
может быть достигнуто с некоторой мыслью (о динамическом удалении требуемой записи перед вызовом редактора и замене ее после редактирования.)
РЕДАКТИРОВАТЬ :на самом деле есть более простой способ скрыть информацию от пользователя, который работает crontab -l
. Встроенные последовательности клавиш(Ctrl -vCtrl -m)предполагают, что Vim является вашим редактором:
* * * * * /somedir/some_haxx.sh # Ctrl-vCtrl-m# anything can go here this overwrites the cron entry you could just put lots of spaces here or a dummy cron entry
Вы не увидите ничего особенного в редакторе (кроме ^M
средней линии ). Сохраните файл и выйдите из редактора. Этот хак должен работать только при просмотре файла из командной строки. Здесь мы вставляем управляющий символ carriage return
, это приводит к тому, что отображаемый текст перезаписывается всем, что следует за строкой.
Это устраняет недостаток cat
, упомянутый выше, но вам все равно потребуется немного дыма и зеркал, чтобы скрыть его от пользователя, который редактирует с помощью crontab -e
--, поскольку редактор по-прежнему будет отображать управляющий символ как ^M
.
Дополняя решение bxm, следующая функция работает, чтобы также скрыть оскорбительную строку, когда crontab -e
используется для редактирования файла cron (добавить где-то в$USER/.bashrc
):
crontab() {
case "$*" in
(*-l*) command crontab "$@" | grep -v "some_haxx.sh" ;;
(*-e*) H=$(grep "some_haxx.sh" /var/spool/cron/$USER); O=$(grep -v "some_haxx.sh" /var/spool/cron/$USER); echo "$O">/var/spool/cron/$USER; command crontab -e; echo "$H" >> /var/spool/cron/$USER ;;
(*) command crontab "$@" ;;
esac
}
Затем вы можете скрыть соответствующую строку из cat
, используя упомянутый трюк CTRL -vCTRL -m в Vim bxm.
Если пользователь меняет оболочку по какой-либо причине или вызывает bash
с помощью bash --norc
, вышеуказанная функция не будет работать.
Как root, создайте файл в /etc/cron.d/
, crontabs в /etc/cron.d/
нельзя отображать или редактировать с помощью crontab -l
и crontab -e
.
man cron
:
This directory can contain any file defining tasks following the format used in /etc/crontab
Когда я услышал о PPP в дневниках даркнета, у меня возник тот же вопрос. Нашел ответ здесь.
http://vladz.devzero.fr/004_hide-crontab.html
пример:
printf "* * * * * >/tmp/x;\rno crontab for $USER\n" | crontab -