Как с помощью grep найти запись в файле паролей без использования 'username'

cat (1) не «печатает» файлы, это инструмент, который берет последовательность входных файлов и объединяет их в выходные данные.

Что делает файл cat сам по себе, так это берет содержимое файла и выводит его на терминал. Если файл содержит текст, терминал покажет его как таковой. Файлы PDF не являются текстовыми и (как и любые другие файлы) отображаются как тарабарщина. Каждому типу файла нужна определенная программа для его понятного отображения.

Сегодня принтеры часто используют входной PDF-файл для отображения на странице, или инструменты, используемые для печати, автоматически переводят во все, что принимает принтер.

1
11.03.2015, 00:35
2 ответа

Возможно, что-то вроде этого:

who | awk '{print $1}' | grep -f - /etc/passwd

awk '{print $1}' выведет имена пользователей, которые передаются в grep с помощью опции -f -, указывающей ему брать шаблон grep из stdin. Это выведет /etc/passwd запись о вошедших пользователях:

aliaa@host:~$ who
aliaa    tty7         2015-03-10 13:02
root     tty1         2015-03-10 18:19
aliaa    pts/0        2015-03-10 14:39 (:0)
aliaa@host:~$ who | awk '{print $1}' | grep -f - /etc/passwd
root:x:0:0:root:/root:/bin/bash
aliaa:x:1000:1001:Alaa Ali,,,:/home/aliaa:/bin/bash
0
29.04.2021, 00:31

Да, вы можете создать такой сценарий:

for who_user in $(who|cut -f1 -d' '|uniq)
do
    getent passwd|grep ${who_user}
done

Если у вас достаточно прав, вы можете найти пароль в своем теневом файле следующим образом:

for who_user in $(who|cut -f1 -d' '|uniq)
do
    cat /etc/passwd|grep ${who_user}
    cat /etc/shadow|grep ${who_user}
done

​​Как упоминал @John WH Smith, grep не нужен:

for who_user in $(who|cut -f1 -d' '|uniq)
do
    getent passwd ${who_user}
done

Спасибо, Джон

2
29.04.2021, 00:31

Теги

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