Проблема заключается в том, записан ли ваш пароль в журнал аутентификации.
Если вы входите в систему с текстовой консоли под Linux, и вы нажали Ctrl + C в запросе пароля, то запись в журнале не будет сгенерировано. По крайней мере, это верно для Ubuntu 14.04 или Debian jessie с SysVinit и, вероятно, для других дистрибутивов Linux; Я не проверял, так ли это в системе с Systemd. Нажатие Ctrl + C завершает процесс входа в систему
до того, как он сгенерирует какую-либо запись в журнале. Итак вы в безопасности .
С другой стороны, если вы действительно попытались войти в систему, что произойдет, если вы нажали Enter или Ctrl + D в запросе пароля, то введенное вами имя пользователя отображается в журналах аутентификации в виде обычного текста. Все неудачные попытки входа в систему регистрируются; запись журнала содержит имя учетной записи, но никогда не содержит информации о пароле (только тот факт, что пароль был неверным).
Вы можете проверить это, просмотрев журналы аутентификации. В Ubuntu 14.04 или Debian jessie с SysVinit журналы аутентификации находятся в /var/log/auth.log
.
Если это машина под вашим исключительным контролем, и она не ведет журнал удаленно, и для файла журнала еще не было выполнено резервное копирование, и вы готовы и можете редактировать файл журнала, ничего не нарушая, тогда отредактируйте файл журнала, чтобы удалить пароль.
Если ваш пароль записан в системные журналы, вы должны считать его скомпрометированным и вам необходимо его изменить.Журналы могут просочиться по разным причинам: резервные копии, запросы о помощи… Даже если вы единственный пользователь на этой машине, не рискуйте.
Примечание: я не проверял, работает ли Ubuntu 16.04 по-другому. Этот ответ не может быть обобщен для всех вариантов Unix и, конечно же, не может быть обобщен для всех методов входа в систему. Например, OpenSSH регистрирует имя пользователя, даже если вы нажимаете Ctrl + C в запросе пароля (фактически до того, как он покажет запрос пароля).
Вероятно, вам понадобится флаг -w
- от man grep
-w, --word-regexp
Select only those lines containing matches that form whole
words. The test is that the matching substring must either be
at the beginning of the line, or preceded by a non-word
constituent character. Similarly, it must be either at the end
of the line or followed by a non-word constituent character.
Word-constituent characters are letters, digits, and the
underscore.
т.е.
grep -wFf patfile file
denovo1 xxx yyyy oggugu ddddd
denovo22 hhhh yyyy kkkk iiii
Чтобы обеспечить соответствие только в первом столбце, вам нужно будет изменить записи в файле шаблона, чтобы добавить привязку строки : вы также можете использовать \ b
привязка слова вместо параметра командной строки -w
, например в patfile
:
^denovo1\b
^denovo3\b
^denovo22\b
затем
grep -f patfile file
denovo1 xxx yyyy oggugu ddddd
denovo22 hhhh yyyy kkkk iiii
Обратите внимание, что вы должны удалить переключатель -F
, если файл содержит регулярные выражения вместо простых фиксированных строк.
можно также использовать awk:
awk 'NR==FNR{a[$0]=$0}NR>FNR{if($1==a[$1])print $0}' pattern_file big_file
вывод:
denovo1 xxx yyyy oggugu ddddd
denovo22 hhhh yyyy kkkk iiii