Это вполне допустимая конфигурация, хотя вы можете упростить ее, используя DirectoryMatch
или включаемый файл, поскольку код одинаков в каждом
<DirectoryMatch "^/var/www/html/(folder1|folder2)">
...
</DirectoryMatch>
Чтобы отфильтровать удобочитаемые имена файлов, вы можете использовать [: print:]
( печатное ) имя класса символов . Вы найдете больше о таких классах в руководстве для grep
.
find . -type f -size 1033c -name "[[:print:]]*" ! -executable
С другой стороны, требование «удобочитаемости» может относиться к содержимому файла, а не к его имени. Другими словами, вы будете искать текстовые файлы. Это немного сложнее. Как предлагает @D_Bye в комментарии, вы должны затем использовать команду file
, чтобы определить тип содержимого файла. Но запускать файл
после канала было бы не очень хорошей идеей, потому что это усложнило бы задачу отображения имени файла. Вот что я предлагаю:
find . -type f -size 1033c ! -executable -exec sh -c 'file -b $0 | grep -q text' {} \; -print
Вкратце, как работает file
-part:
-exec
выполняет sh -c 'file -b $ 0 | grep -q text 'FILENAME
для каждого FILENAME
, который удовлетворяет всем предыдущим условиям (тип, размер, неисполняемый). sh
) запускает этот короткий сценарий : file -b $ 0 | grep -q text
, заменяя $ 0
именем файла. file
определяет тип содержимого каждого файла и выводит эту информацию. Параметр -b
предотвращает печать имени каждого проверенного файла. grep
фильтрует вывод, поступающий из программы файл
, ища строки, содержащие «текст» . (Убедитесь сами, как выглядит типичный вывод команды file
.) grep
не выводит отфильтрованный текст, потому что он имеет -q
(тихий) вариант. Он просто меняет свой статус выхода либо на 0
(что означает «истина» - найден отфильтрованный текст), либо на 1 (что означает «ошибка» - текст ] "текст" не появился в выводе из файла
). grep
, передается далее sh
в find
и действует как окончательный результат для всего » -exec sh -c 'file $ 0 | grep -q text' {} \;
"test. -print
(т.е. печатается имя проверяемого файла). Вам нужно только использовать:
find inhere -size 1033c
Это даст вам единственный файл, содержащий пароль.
bandit4@bandit:~$ ls
inhere
bandit4@bandit:~$ file inhere/*
inhere/-file00: data
inhere/-file01: data
inhere/-file02: data
inhere/-file03: data
inhere/-file04: data
inhere/-file05: data
inhere/-file06: data
inhere/-file07: ASCII text
inhere/-file08: data
inhere/-file09: data
bandit4@bandit:~$ pwd
/home/bandit4
bandit4@bandit:~$ cat /home/bandit4/inhere/-file07
koReBOKuIDDepwhWk7jZC0RTdopnAYKh
bandit4@bandit:~$
du --human-readable | find -not -executable -size 1033c
получите ваш результат
find. -type f -size 1033c ! -executable | xargs file | grep text
Вентилятор одного вкладыша
Просто выполните следующее для содержимого каталога:
$ file -- *
-file00: data
-file01: data
-file02: data
-file03: data
-file04: data
-file05: data
-file06: data
-file07: ASCII text
-file08: data
-file09: data
$ cat -- \-file07
<output>