Поиск файла по содержимому может включать команду -exec и конвейер 2> - PullRequest
0 голосов
/ 05 сентября 2018

В настоящее время я изучаю Linux через погружение в виртуальную среду, и мне было поручено найти файл по содержимому. Пользователь root, права rwx для всех (777, я считаю). Я перепробовал многие вещи безрезультатно, но все они в основном коренятся в вариации

~$ find / -user root -perm 777 | grep "phrase to be found"

До сих пор я успешно получал тонны сообщений об отказе в разрешении. Я не могу использовать команду sudo, поскольку у меня нет пароля sudo (виртуальная среда). Вполне возможно, что может быть какое-то обязательное использование флага выполнения и / или трубопровода 2>, но я не смог поиграть с ними и надеялся, что кто-то с лучшей проницательностью сможет помочь.

Ответы [ 2 ]

0 голосов
/ 06 сентября 2018

Как указал shellter , в вашем примере вы просите grep выполнить поиск фразы по именам файлов, а не по содержимому этих файлов. Я думаю, что вы ищете:

grep -Rsl "phrase to be found" /

Выводом будет список имен файлов, в которых есть фраза, которая будет найдена где-то в их содержимом, но только для файлов, для которых у вас есть разрешение на чтение. Чтобы прочитать все файлы, вам нужно запустить ту же команду, что и root.

0 голосов
/ 05 сентября 2018

Сообщение «Отказано в доступе» записывается в stderr на find, поэтому вы можете отказаться от сообщений от stderr, перенаправив их на /dev/null.

find / -user root -perm 777 2> /dev/null | grep "phrase to be found"

должен сделать трюк, где 2> - перенаправление для stderr.

...