Comments 55
Cтатья понравилась, в манах такого не встретишь.
мне как новичку в линуксе полезно было прочесть - в закладки !
поставил бы плюсег, если бы мог
мне как новичку в линуксе полезно было прочесть - в закладки !
поставил бы плюсег, если бы мог
UFO just landed and posted this here
Оч. понравилось, жду продолжения.
Довольно популярный способ распространения троянов это вставки на сайты iframe блока указывающего на “вражеский сервер” с самим трояном. Перелопатить несколько тысяч страниц вручную, задача из разряда фантастических.
Еще полезная команда (чистка кода сайта от iframe вставок):
find ./ -type f -name \*.php -exec sed -i ’s/^.*iframe bla bla bla.*$//g’ {} \;
Еще полезная команда (чистка кода сайта от iframe вставок):
find ./ -type f -name \*.php -exec sed -i ’s/^.*iframe bla bla bla.*$//g’ {} \;
да, в следующий раз об этом как раз собираюсь рассказать
ваш пример очень показателен.
ваш пример очень показателен.
Написал бы тоже статейку, но где бы взять карму
Я не уверен, что после «Вы забыли: rm -rf /» и «Привык работать с root» имеет смысл писать статьи для новичков в Линуксе...
тоже часто приходится чистить сайты от троянских iframе-ов
типа ( <script...>..ndfc() {.... ),
мой вариант делает почти тоже самое, находит и удаляет строчку ndfc() плюс еще 6 строк ниже:
find ./ -type f -print0 | xargs -0 -I'{}' sed -i '/ndfc()/,+6 d' '{}'
типа ( <script...>..ndfc() {.... ),
мой вариант делает почти тоже самое, находит и удаляет строчку ndfc() плюс еще 6 строк ниже:
find ./ -type f -print0 | xargs -0 -I'{}' sed -i '/ndfc()/,+6 d' '{}'
Часто пользуюсь следующей связкой
find -type d -exec chmod 755 {} \;
find -type f -exec chmod 644 {} \;
find -type d -exec chmod 755 {} \;
find -type f -exec chmod 644 {} \;
UFO just landed and posted this here
find далеко не самый лучший "поисковик", если использовать его именно как поисковик. locate с этим делом справляется быстрее, индекс, все-таки.
А find удобен именно для того, чтобы перебирать файлы из конкретного участка дерева и с ними что-нибудь делать.
А find удобен именно для того, чтобы перебирать файлы из конкретного участка дерева и с ними что-нибудь делать.
Если файлы часто обновляются, делать updatedb постоянно не лучший вариант. А так конечно намного быстрее.
верно, locate/slocate на несколько порядков быстрее (т.к.поиск по созданной базе)
но на боевых серверах файлы обновляются часто и запускать индексирование чаще, чем раз в сутки, имхо накладно
к тому же, я делаю упор не на сам поиск, а на выполнение действий с найденным.
как пример : -exec в find + поиск по заданным критериям.
конечно, с locate такое тоже частично можно делать:
locate some_dir|xargs rm -fr
locate named.conf|xargs grep some_zone -A 20
но например вы удалили какой-то каталог, и чтобы у вас уже неверный индекс, его нужно перестраивать, чтобы данные были актуальны.
вобщем, тема для еще одной статьи ))
но на боевых серверах файлы обновляются часто и запускать индексирование чаще, чем раз в сутки, имхо накладно
к тому же, я делаю упор не на сам поиск, а на выполнение действий с найденным.
как пример : -exec в find + поиск по заданным критериям.
конечно, с locate такое тоже частично можно делать:
locate some_dir|xargs rm -fr
locate named.conf|xargs grep some_zone -A 20
но например вы удалили какой-то каталог, и чтобы у вас уже неверный индекс, его нужно перестраивать, чтобы данные были актуальны.
вобщем, тема для еще одной статьи ))
всегда думал, что locate для блондинок, не знающих, что у них на компе находится.
никогда не использовал, и не вижу надобности.
никогда не использовал, и не вижу надобности.
а вот смотрите:
есть у вас два десятка серверов (или даже просто неизвестный сервер)
и вам нужно поправить httpd.conf например - и совсем не факт, что он будет лежать в /etc/httpd/conf/httpd.conf
где вы будете его искать ? делать find / ?
а locate httpd.conf вам в этом случае сразу все покажет.
*httpd.conf редко перемещают с места на места, так что инфа будет актуальной.
есть у вас два десятка серверов (или даже просто неизвестный сервер)
и вам нужно поправить httpd.conf например - и совсем не факт, что он будет лежать в /etc/httpd/conf/httpd.conf
где вы будете его искать ? делать find / ?
а locate httpd.conf вам в этом случае сразу все покажет.
*httpd.conf редко перемещают с места на места, так что инфа будет актуальной.
Если вы не видите надобности, это еще не значит, что ее нет. Если бы locate был совсем не нужен, его бы не написали в далеком 83 году.
Я, вроде бы, не блондинка, но таки не знаю что где именно находится из 678000 файлов на моем домашнем компьютере.
Я, вроде бы, не блондинка, но таки не знаю что где именно находится из 678000 файлов на моем домашнем компьютере.
ИМХО: образцовая статья про использование консоли.
Спасибо!
Спасибо!
наконец то кто-то понял что нужно писать в статьях для новичков линукса. спасибо.
я бы не советовал начинать работать в консоли с этой статьи.
Может для начало надо было обьяснить новечку что вообще такое консоль?
Что такое STDIN, STDOUT, STDERR. Философию Unix в отношении консоли. Рассказать подробнее про pipe, про bg, fg. Также использование подстановочных символов, шаблонов. О том, что консоль рассматривается как файл.
Может для начало надо было обьяснить новечку что вообще такое консоль?
Что такое STDIN, STDOUT, STDERR. Философию Unix в отношении консоли. Рассказать подробнее про pipe, про bg, fg. Также использование подстановочных символов, шаблонов. О том, что консоль рассматривается как файл.
несколько комментариев.
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. -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.дело в том, что мой вариант более гибкий и я бы хотел, чтобы человек научился прежду всего именно ему.
3.опять вы правы, но как-то я побоялся втискивать в рамки статьи еще и cut, а про awk сказать хотелось.
вобщем, все это будет во второй части
2. Согласен, но -h можно было и упомянуть :)
Вы молодец, завидую по-доброму: я вот не умею писать статьи такого уровня, чтобы доходчиво о простых вещах; как-то "серьезные" мануалы лучше получаются :)
Вы молодец, завидую по-доброму: я вот не умею писать статьи такого уровня, чтобы доходчиво о простых вещах; как-то "серьезные" мануалы лучше получаются :)
2. ну для моего контекста она скорее мешала, поэтому и не описал.
почему мешала?
просто вывод du обрабатывается потом awk и мне там совсем ни к чему символы K,M,G и запятые ..
подумайте сами, как бы вы распарсили (с уклоном для новичка) вывод
du -sh|awk "??"
а du -k дает нам однозначные цифры, без "грязи"
почему мешала?
просто вывод du обрабатывается потом awk и мне там совсем ни к чему символы K,M,G и запятые ..
подумайте сами, как бы вы распарсили (с уклоном для новичка) вывод
du -sh|awk "??"
а du -k дает нам однозначные цифры, без "грязи"
Логично :) Не подумал как-то про этот момент. Мои извинения.
ничего, все ок ))
почему бы вам тоже не написать что-то более веское ? - знания, вижу у вас есть...
почему бы вам тоже не написать что-то более веское ? - знания, вижу у вас есть...
Я молчать не умею, карма страдает хроническим минусом :)
И придумать тему не получается такую, чтобы и полезно, и многим :)
И придумать тему не получается такую, чтобы и полезно, и многим :)
ну карму мы вам поправим :), надеюсь, не только я...
а тем очень много - надо просто взглянуть на свою работу со стороны - попробуйте.
а тем очень много - надо просто взглянуть на свою работу со стороны - попробуйте.
и спасибо за поддержку - этого в таких вещах всегда не хватает...
более серьезные вещи тоже обязательно будут, не все сразу :)
более серьезные вещи тоже обязательно будут, не все сразу :)
>кавычки для агрумента -F не нужны
для новичка - это более наглядно, вы согласны?
для новичка - это более наглядно, вы согласны?
Отлично :) Статья понравилась, и очень полезна не только для новичком, но и для обычным пользователей, который мало сталкивались с консолью лицом к лицу.
Еще очень рекомендую xargs. Возможно вам стоит упомянуть про perl (подавляющее число однострочников я пишу на нем).
Доступно и с примерами.
Спасибо за статью, в деле пригодится!
Спасибо за статью, в деле пригодится!
Есть хорошая, на мой взгляд, книга - Unix Power Tools - Shelley Powers, Jerry Peek, Tim O'Reilly, Mike Loukides. Будет полезна новичкам и не только.
Где-то слышал фразу: если бы люди умели пользоваться find, sed, awk и grep, то миллионы программ никогда не были бы написаны.
Спасибо за развитие темы.
Есть один общий вопрос касательно поиска ответов для начинающих пользователей, или КАК КУДА и Почему обращаться "по уму"
Суть вопроса в описании web-ресурсов и некоторых правил общения, гарантирующих адекватную реакцию на обращение за помощью.
В идеале хотелось бы иметь свои "желтые страницы" рунета по opensource.
Просто зачастую пара нерешенных вопросов заставляет многих возвращаться к окнам. У меня, к примеру, так и не работает сканер Canon Lide 90 и дровишек к нему пока не предвидется :(
и извиняйте за невольный офтоп
Есть один общий вопрос касательно поиска ответов для начинающих пользователей, или КАК КУДА и Почему обращаться "по уму"
Суть вопроса в описании web-ресурсов и некоторых правил общения, гарантирующих адекватную реакцию на обращение за помощью.
В идеале хотелось бы иметь свои "желтые страницы" рунета по opensource.
Просто зачастую пара нерешенных вопросов заставляет многих возвращаться к окнам. У меня, к примеру, так и не работает сканер Canon Lide 90 и дровишек к нему пока не предвидется :(
и извиняйте за невольный офтоп
а как такое сделать %)
каждый из 10 файлов в папке переместить в 10 создаваемых папкок названных как эти 10 файлов причем из названия файлов и папок убирать некую последовательность символов :)
получится такое 1 командой?
каждый из 10 файлов в папке переместить в 10 создаваемых папкок названных как эти 10 файлов причем из названия файлов и папок убирать некую последовательность символов :)
получится такое 1 командой?
$ls
. .. 10.log 1.log 2.log 3.log 4.log 5.log 6.log 7.log 8.log 9.log
$for i in *;do m=`echo $i|sed "s/\.log//"`;mkdir $m ;mv $i $m/$m;done
$ls -l
drwxr-xr-x 2 test1 test1 4096 Июл 18 03:17 1
drwxr-xr-x 2 test1 test1 4096 Июл 18 03:17 10
drwxr-xr-x 2 test1 test1 4096 Июл 18 03:17 2
drwxr-xr-x 2 test1 test1 4096 Июл 18 03:17 3
drwxr-xr-x 2 test1 test1 4096 Июл 18 03:17 4
drwxr-xr-x 2 test1 test1 4096 Июл 18 03:17 5
drwxr-xr-x 2 test1 test1 4096 Июл 18 03:17 6
drwxr-xr-x 2 test1 test1 4096 Июл 18 03:17 7
drwxr-xr-x 2 test1 test1 4096 Июл 18 03:17 8
drwxr-xr-x 2 test1 test1 4096 Июл 18 03:17 9
drwxr-xr-x 12 test1 test1 4096 Июл 18 03:17 .
drwxrwxrwx 11 root root 20480 Июл 18 03:13 ..
$ls -l 1
-rw-r--r-- 1 test1 test1 0 Июл 18 03:14 1
drwxr-xr-x 2 test1 test1 4096 Июл 18 03:17 .
drwxr-xr-x 12 test1 test1 4096 Июл 18 03:17 ..
$ls -l 6
-rw-r--r-- 1 test1 test1 0 Июл 18 03:14 6
drwxr-xr-x 2 test1 test1 4096 Июл 18 03:17 .
drwxr-xr-x 12 test1 test1 4096 Июл 18 03:17 ..
. .. 10.log 1.log 2.log 3.log 4.log 5.log 6.log 7.log 8.log 9.log
$for i in *;do m=`echo $i|sed "s/\.log//"`;mkdir $m ;mv $i $m/$m;done
$ls -l
drwxr-xr-x 2 test1 test1 4096 Июл 18 03:17 1
drwxr-xr-x 2 test1 test1 4096 Июл 18 03:17 10
drwxr-xr-x 2 test1 test1 4096 Июл 18 03:17 2
drwxr-xr-x 2 test1 test1 4096 Июл 18 03:17 3
drwxr-xr-x 2 test1 test1 4096 Июл 18 03:17 4
drwxr-xr-x 2 test1 test1 4096 Июл 18 03:17 5
drwxr-xr-x 2 test1 test1 4096 Июл 18 03:17 6
drwxr-xr-x 2 test1 test1 4096 Июл 18 03:17 7
drwxr-xr-x 2 test1 test1 4096 Июл 18 03:17 8
drwxr-xr-x 2 test1 test1 4096 Июл 18 03:17 9
drwxr-xr-x 12 test1 test1 4096 Июл 18 03:17 .
drwxrwxrwx 11 root root 20480 Июл 18 03:13 ..
$ls -l 1
-rw-r--r-- 1 test1 test1 0 Июл 18 03:14 1
drwxr-xr-x 2 test1 test1 4096 Июл 18 03:17 .
drwxr-xr-x 12 test1 test1 4096 Июл 18 03:17 ..
$ls -l 6
-rw-r--r-- 1 test1 test1 0 Июл 18 03:14 6
drwxr-xr-x 2 test1 test1 4096 Июл 18 03:17 .
drwxr-xr-x 12 test1 test1 4096 Июл 18 03:17 ..
history|awk ‘{a[$2]++} END{for(i in a){printf “%5d\t%s\n”,a[i],i}}’|sort -rn|head
Как мне сделать поиск тех файлов в которых есть троян, с параметром в котором задан пример «вредного» текста, но без замены (удаления) такового?
Sign up to leave a comment.
«примеры эффективного использования GNU утилит в Linux»