Pull to refresh

Comments 55

Cтатья понравилась, в манах такого не встретишь.
мне как новичку в линуксе полезно было прочесть - в закладки !
поставил бы плюсег, если бы мог
UFO just landed and posted this here
да, про sed обязательно будет, в связке с awk, find и т.д.
Довольно популярный способ распространения троянов это вставки на сайты 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' '{}'
Часто пользуюсь следующей связкой
find -type d -exec chmod 755 {} \;
find -type f -exec chmod 644 {} \;
и ты сделаешь все внутри 755.

Показаный выше пример, папкам ставит 755, а файлам 644
делать chmod -R в данном случае неверно, т.к. права изменяться и на файлы и на каталоги, а если нужно, как писал посмотреть профиль Pokoinik изменить права только на файлы, тогда
find ./ -type f -exec chmod 644 {} \;
UFO just landed and posted this here
find — далеко не самый лучший "поисковик", если использовать его именно как поисковик. locate с этим делом справляется быстрее, индекс, все-таки.

А find удобен именно для того, чтобы перебирать файлы из конкретного участка дерева и с ними что-нибудь делать.
Если файлы часто обновляются, делать updatedb постоянно не лучший вариант. А так конечно намного быстрее.
верно, locate/slocate на несколько порядков быстрее (т.к.поиск по созданной базе)
но на боевых серверах файлы обновляются часто и запускать индексирование чаще, чем раз в сутки, имхо накладно
к тому же, я делаю упор не на сам поиск, а на выполнение действий с найденным.
как пример : -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 редко перемещают с места на места, так что инфа будет актуальной.
у меня есть "неизвестный" сервер? Откуда? Что мне делать на неизвестном мне сервере?
а на известных мне серверах, я знаю, где какие конфиги лежат
Если вы не видите надобности, это еще не значит, что ее нет. Если бы locate был совсем не нужен, его бы не написали в далеком 83 году.

Я, вроде бы, не блондинка, но таки не знаю что где именно находится из 678000 файлов на моем домашнем компьютере.
ИМХО: образцовая статья про использование консоли.
Спасибо!
наконец то кто-то понял что нужно писать в статьях для новичков линукса. спасибо.
спасибо за отзыв, значит дальше буду двигаться в данном стиле.
я бы не советовал начинать работать в консоли с этой статьи.
Может для начало надо было обьяснить новечку что вообще такое консоль?
Что такое 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. Согласен, но -h можно было и упомянуть :)

Вы молодец, завидую по-доброму: я вот не умею писать статьи такого уровня, чтобы доходчиво о простых вещах; как-то "серьезные" мануалы лучше получаются :)
2. ну для моего контекста она скорее мешала, поэтому и не описал.
почему мешала?
просто вывод du обрабатывается потом awk и мне там совсем ни к чему символы K,M,G и запятые ..
подумайте сами, как бы вы распарсили (с уклоном для новичка) вывод
du -sh|awk "??"
а du -k дает нам однозначные цифры, без "грязи"
Логично :) Не подумал как-то про этот момент. Мои извинения.
ничего, все ок ))
почему бы вам тоже не написать что-то более веское ? - знания, вижу у вас есть...
Я молчать не умею, карма страдает хроническим минусом :)
И придумать тему не получается такую, чтобы и полезно, и многим :)
ну карму мы вам поправим :), надеюсь, не только я...
а тем очень много - надо просто взглянуть на свою работу со стороны - попробуйте.
Спасибо, но... Работа администратора j2ee серверов приложений вряд ли интересна хабраюзерам. Попробую прикинуть, что из моего фрилансерского опыта может быть полезным широким массам. Спасибо за доверие.
а я бы с удовольствием прочел про администрирование J2ee серверов и приложений. серьезно.
ну и по фрилансу, думаю, всем интересно будт почитать
вы меня почти уговорили :)
попробую написать что-нибудь, если самому понравится - стукнусь вам за кармой :) не против?
и спасибо за поддержку - этого в таких вещах всегда не хватает...
более серьезные вещи тоже обязательно будут, не все сразу :)
>кавычки для агрумента -F не нужны

для новичка - это более наглядно, вы согласны?
Отлично :) Статья понравилась, и очень полезна не только для новичком, но и для обычным пользователей, который мало сталкивались с консолью лицом к лицу.

Еще очень рекомендую xargs. Возможно вам стоит упомянуть про perl (подавляющее число однострочников я пишу на нем).

Доступно и с примерами.
Спасибо за статью, в деле пригодится!
Есть хорошая, на мой взгляд, книга - Unix Power Tools - Shelley Powers, Jerry Peek, Tim O'Reilly, Mike Loukides. Будет полезна новичкам и не только.
Где-то слышал фразу: если бы люди умели пользоваться find, sed, awk и grep, то миллионы программ никогда не были бы написаны.
отлично сказано!
помню, в начале освоения линукса, уже администрируя несколько веб серверов, писал простыни на перле, хотя с помощью sed+find задача решалась в одну строку.
с другой стороны, это дало мне опыт программинга на перле :)
Спасибо за развитие темы.
Есть один общий вопрос касательно поиска ответов для начинающих пользователей, или КАК КУДА и Почему обращаться "по уму"
Суть вопроса в описании web-ресурсов и некоторых правил общения, гарантирующих адекватную реакцию на обращение за помощью.
В идеале хотелось бы иметь свои "желтые страницы" рунета по opensource.
Просто зачастую пара нерешенных вопросов заставляет многих возвращаться к окнам. У меня, к примеру, так и не работает сканер Canon Lide 90 и дровишек к нему пока не предвидется :(
и извиняйте за невольный офтоп
а как такое сделать %)
каждый из 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 ..
history|awk ‘{a[$2]++} END{for(i in a){printf “%5d\t%s\n”,a[i],i}}’|sort -rn|head
Как мне сделать поиск тех файлов в которых есть троян, с параметром в котором задан пример «вредного» текста, но без замены (удаления) такового?
просто grep:

$cd www_site_path
$grep -ri «some malware code» ./

Sign up to leave a comment.

Articles