
В настоящее время я прохожу курс Google Cybersecurity Coursera Cert. Сейчас я в разделе Linux и изучаю несколько команд Linux, я полный новичок в этом, но мне было интересно одно. Пока я учусь, я всегда пытаюсь думать о том, как защитник или злоумышленник может использовать эту команду, и недавно я узнал о echo >
команде и о том, как она может перезаписать все. Я проверил, что ее можно использовать злонамеренно, но, конечно, я не понял ее полностью.
Мой вопрос, предположим, что злоумышленник получает доступ к чьему-то компьютеру и хочет быстро нанести вред пользователю, зная, что у него много .txt
файлов. Сработает ли эта команда?
find /home/ -name "*.txt*" | echo "gg" > "*.txt*"
Просто интересно, правильно ли я это понимаю. Это по сути создаст команду, которая найдет все .txt
файлы под /home/
и затем echo
перепишет все .txt
файлы со словом gg
?
Если нет, то почему именно это не работает? Я хотел бы понять, почему это не работает, чтобы лучше понять это, и если идея технически работает, но команда написана неправильно, дайте мне знать, в какой части это неправильно.
решение1
Это не будет работать: echo
не получает параметры из канала. find
найдет все .txt
файлы и передаст их в echo
. Но echo
проигнорирует их и просто выведет gg
.
>
redirect просто попытается записать его в файл с именем, *.txt*
если у вас есть разрешение на это. Он будет перезаписан, если он существует, он будет создан, если он не существует.
решение2
По причинам, которые ThoriumBR уже объяснил, это не работает.
Вы ищете что-то вроде
shopt -s globstar
for file in **/*.txt
do
echo "rr" > "$file"
done
или
find . -name "*.txt" -print0 | while read -d $'\0' file
do
echo "rr" > "$file"
done