Команды, которые пользователь может sudo
ограничить в конфигурации sudo
. Sudo не обязательно должен быть эквивалентом root.
В противном случае, я думаю, вы сами ответили на свой вопрос - если у меня есть ключи от курятника, а мистер Фокс получит мои ключи, то я смогу съесть всех цыплят. Для этого нет решения.
Однако есть как минимум такие инструменты, как tripwire
или ossec
, которые предупреждают вас об установке руткита. См. Здесь .
Вот обзор -образца, который вы предоставили.
awk
распечатывает столбцы и строки, которые вы можете указать. Я предлагаю просмотреть страницу man
и Google для получения дополнительной информации. В вашем случае разделителем является пробел, который будет разделять каждый столбец. Это будет варьироваться, потому что в том, что вы предоставили до сих пор, каждая строка имеет разный текст, что сделает позиционирование столбцов другим, но для ваших первых трех строк вы можете начать со следующего:
cat access_log | awk 'NR==1,NR==3 {print $7}' | sort -u
NR==1,NR==3
Вывод строк с 1 по 3
{print $7}
Распечатывает седьмой столбец с нужным вам именем файла. Имейте в виду, что это не всегда будет седьмой столбец, потому что текст в каждой строке может быть разным.
sort -u
Распечатка уникальных значений
Вывод:
/robots.txt
/~robert/class2.cgi
/~robert/class3.cgi
Последняя часть с sort
не повлияет на ваш образец, потому что в нем нет дубликатов, но если остальная часть вашего файла повлияет, то будут напечатаны только уникальные значения в конкретном столбце.
Если вы просто хотите напечатать имя файла, вы можете использовать аргумент substr
с командой awk
:
cat access_log | awk 'NR==1 {print substr($7,2,10)} NR==2,NR==3 {print substr($7,10,10)}'
Вывод будет:
robots.txt
class2.cgi
class3.cgi
Объяснить:
NR==1 {print substr($7,2,10)}
Для первой строки в поле 7, начиная со 2-й позиции, выводится 10 символов.
NR==2,NR==3 {print substr($7,10,10)}
Для строк со второй по третью в поле 7, начиная с десятой позиции, печатается 10 символов.
Вероятно, вам придется изменить столбцы и значения, так как остальная часть вашего файла, вероятно, отличается и не всегда будет выстраиваться в одном и том же месте, но это должно помочь вам начать работу.Кажется, что это довольно много, но небольшое исследование поможет вам двигаться в правильном направлении
альтернатива, которая даст вам подсчет каждого уникального обращения к файлу:
awk '{print $7}' access_log | sort | uniq -c | sort -rn
или, если вам нужны хиты в определенный день, вы можете сначала найти дату:
fgrep "14/Dec/2015" access_log | awk '{print $7}' | sort | uniq -c | sort -rn
несколько уместно, вы можете использовать приведенное выше, чтобы найти уникальных посетителей (по крайней мере уникальных IP-адресов в любом случае )для вашего сайта, изменив печать с 7 долларов на 1 доллар. Я лично использую те же команды, когда мои сайты подвергаются DoS-атаке, чтобы определить, какие IP-адреса блокировать сеть.