Довольно популярный способ распространения троянов это вставки на сайты iframe блока указывающего на “вражеский сервер” с самим трояном. Перелопатить несколько тысяч страниц вручную, задача из разряда фантастических.
Еще полезная команда (чистка кода сайта от iframe вставок):
find ./ -type f -name \*.php -exec sed -i ’s/^.*iframe bla bla bla.*$//g’ {} \;
тоже часто приходится чистить сайты от троянских iframе-ов
типа ( <script...>..ndfc() {.... ),
мой вариант делает почти тоже самое, находит и удаляет строчку ndfc() плюс еще 6 строк ниже:
find ./ -type f -print0 | xargs -0 -I'{}' sed -i '/ndfc()/,+6 d' '{}'
делать chmod -R в данном случае неверно, т.к. права изменяться и на файлы и на каталоги, а если нужно, как писал Pokoinik изменить права только на файлы, тогда
find ./ -type f -exec chmod 644 {} \;
верно, locate/slocate на несколько порядков быстрее (т.к.поиск по созданной базе)
но на боевых серверах файлы обновляются часто и запускать индексирование чаще, чем раз в сутки, имхо накладно
к тому же, я делаю упор не на сам поиск, а на выполнение действий с найденным.
как пример : -exec в find + поиск по заданным критериям.
конечно, с locate такое тоже частично можно делать:
locate some_dir|xargs rm -fr
locate named.conf|xargs grep some_zone -A 20
но например вы удалили какой-то каталог, и чтобы у вас уже неверный индекс, его нужно перестраивать, чтобы данные были актуальны.
а вот смотрите:
есть у вас два десятка серверов (или даже просто неизвестный сервер)
и вам нужно поправить httpd.conf например - и совсем не факт, что он будет лежать в /etc/httpd/conf/httpd.conf
где вы будете его искать ? делать find / ?
а locate httpd.conf вам в этом случае сразу все покажет.
*httpd.conf редко перемещают с места на места, так что инфа будет актуальной.
я бы не советовал начинать работать в консоли с этой статьи.
Может для начало надо было обьяснить новечку что вообще такое консоль?
Что такое STDIN, STDOUT, STDERR. Философию Unix в отношении консоли. Рассказать подробнее про pipe, про bg, fg. Также использование подстановочных символов, шаблонов. О том, что консоль рассматривается как файл.
ну я тоже не советую эту статью, как первую или вторую
здесь наверно будет уместным еще раз сослаться на статью "Консоль для новичка.", написанную ISVir.
я же предполагаю, что человек уже изучил подобные вещи, но не совсем понимает что с ними делать ...как-то так.
несколько комментариев.
1. -exec есть зло, ибо выполняет действие отдельно над каждой строкой. xargs работает процентов на 30 быстрее.
2. >> find /var/www/ -type f -name "access.log*" -exec du -k {} \;|awk '{s+=$1}END{print s}'
с точки зрения производительности и читабельности ИМХО не самое лучшее решение. Предлагаю свой вариант:
find /usr/local/apache/logs/ -type f -name "*_log"|xargs du -csh
0 /usr/local/apache/logs/modsec_debug_log
2.2M /usr/local/apache/logs/access_log
1.0K /usr/local/apache/logs/audit_log
875K /usr/local/apache/logs/error_log
96K /usr/local/apache/logs/ssl_engine_log
3.1M total
где:
-c - "Итого"
-s - "display only a total for each argument"
-h - human-readable. Кому как, но лично мне не очень удобно переводить в уме кило в мега.
3. awk
>>по умолчанию, разделитель полей - пробел, но с помощью опции -F" " это можно переопределить
кавычки для агрумента -F не нужны - они слишком "въедаются" в мозг, и это приводит к некоторым неудобствам: тот же -F ":" не на всех системах корректно отрабатывает.
но это так, мелкая придирка :)
вообще, всю конструкцию
>>cat /etc/passwd|awk -F":" '{print $1}'
я бы заменил более короткой
cat /etc/passwd|cut -d : -f 1
В любом случае, успехов вам. Ждем продолжения про sed :)
1. верно, но не вспоминать про жту опцию тоже было бы плохо, не так ли?
2.дело в том, что мой вариант более гибкий и я бы хотел, чтобы человек научился прежду всего именно ему.
3.опять вы правы, но как-то я побоялся втискивать в рамки статьи еще и cut, а про awk сказать хотелось.
Вы молодец, завидую по-доброму: я вот не умею писать статьи такого уровня, чтобы доходчиво о простых вещах; как-то "серьезные" мануалы лучше получаются :)
2. ну для моего контекста она скорее мешала, поэтому и не описал.
почему мешала?
просто вывод du обрабатывается потом awk и мне там совсем ни к чему символы K,M,G и запятые ..
подумайте сами, как бы вы распарсили (с уклоном для новичка) вывод
du -sh|awk "??"
а du -k дает нам однозначные цифры, без "грязи"
Спасибо, но... Работа администратора j2ee серверов приложений вряд ли интересна хабраюзерам. Попробую прикинуть, что из моего фрилансерского опыта может быть полезным широким массам. Спасибо за доверие.
Отлично :) Статья понравилась, и очень полезна не только для новичком, но и для обычным пользователей, который мало сталкивались с консолью лицом к лицу.
отлично сказано!
помню, в начале освоения линукса, уже администрируя несколько веб серверов, писал простыни на перле, хотя с помощью sed+find задача решалась в одну строку.
с другой стороны, это дало мне опыт программинга на перле :)
Спасибо за развитие темы.
Есть один общий вопрос касательно поиска ответов для начинающих пользователей, или КАК КУДА и Почему обращаться "по уму"
Суть вопроса в описании web-ресурсов и некоторых правил общения, гарантирующих адекватную реакцию на обращение за помощью.
В идеале хотелось бы иметь свои "желтые страницы" рунета по opensource.
Просто зачастую пара нерешенных вопросов заставляет многих возвращаться к окнам. У меня, к примеру, так и не работает сканер Canon Lide 90 и дровишек к нему пока не предвидется :(
и извиняйте за невольный офтоп
а как такое сделать %)
каждый из 10 файлов в папке переместить в 10 создаваемых папкок названных как эти 10 файлов причем из названия файлов и папок убирать некую последовательность символов :)
«примеры эффективного использования GNU утилит в Linux»