Система Orphus

среда, 24 декабря 2008 г.

Дом для spam-check'ера


Решил сделать не большой сайтег для своего скрипта spam-check.


Адресог: http://spamcheck.angel2s2.googlepages.com/

RSS пока не прикречивал, да и не знаю, буду ли вообщем его прикручивать. Все новости скрипта всегда будут в блоге и на сайте.

Сайт пока в тестовой стадии, многое еще предстоит добавить, но это уже по мере возможности и времени...

Жду комментов, мнений, критики =)


ЗЫ: После нового года планирую обновить скрипт, добавить кое чего...



UPD: Последнюю версию скрипта можно взять тут -> https://code.google.com/p/spamcheck/

понедельник, 22 декабря 2008 г.

Флешка без вирусов

Очень часто бывает такая ситуация:
Пришел к другу фильм/прогу/музон/etc перекачать, воткнул в USB порт флешку/жесткий, слил... Пришел домой втыкаешь в свой комп эту же флешку/жесткий и... А там вирусяга сидит...
Не порядок...

Значит шастался я не давно по хабру... А там как раз тема была такая: Защита флэшки от Autorun-вирусов...
В общем аффтар предлагал создать флешку отформатированную под NTFS и запретить доступ на запись в корень флешки, а в корне предварительно создать папку, в которую и будут писаться все файлы.
Способ хорош, но он не лишен недостатков, а именно:
1. Нельзя закинуть файл/папку на флешку через контекстное меню "Отправить";
2. Нельзя выдергивать флешку, предварительно не размонтировав ее, т.к. файлы могут стать битыми (на NTFS данные пишутся не сразу, в отличии от FAT);
3. Нам, линуксоидам, не очень то и удобно будет :) (ntfs-3g при монтировании хорошо нагружает проц, что не есть гуд);
4. А если флешка еще и бутовой является (читай, загрузочной)?


Многие уже знают, что на FAT32 можно просто создать папку autorun.inf и вирусы пойдут лесом, точнее они не будут запускаться, но их тело попадать на флешку все равно будет, что уже не так критично, т.к. они все равно не запустятся, к тому же зачастую они имеют аттрибут "скрытый". Но время не месте не стоит. Вирусописатели умнеют (эх... жаль, что не тупеют). Уже сейчас есть вирусы, которые сносят эту папку в пух и прах и создают файл с таким же именем и нужным содежранием.
Встает вопрос: А как можно защитить флешку на FAT32? О чем я и хочу рассказать =)

На том же хабре, в комментах той же темы один добрый человек с ником bNN предложил такой способ:
1. Cоздать *.bat (*.cmd) файл, со следующим содержанием (также его можно скачать тут):
attrib -s -h -r autorun.*
del autorun.*
mkdir %~d0\AUTORUN.INF
mkdir "\\?\%~d0\AUTORUN.INF\.."
attrib +s +h %~d0\AUTORUN.INF

2. Скопировать этот батник на флешку и запустить (ЗАПУСКАТЬ ИМЕННО С ФЛЕШКИ).
3. Все =)

Теперь в корне флешки будет скрытая системная папка AUTORUN.INF. Если теперь в консоле выполнить команду
dir X:\AUTORUN.INF

то увидим, что в папке AUTORUN.INF есть 2 подпапки (спецфайла) с именем "..", поэтому эту папку (AUTORUN.INF) удалить нельзя :)
Теперь все вирусы со своими autorun.inf идут лесом :) (правда тело вируса попадет на флешку, но как правило этот файл скрытый и обычный юзер его не знапустит)

Я уже обработал всем коллегам флешки этим скриптом и вам советую :)

пятница, 19 декабря 2008 г.

База данных оборудования, совместимого с Linux

Многие, наверняка, сталкивались с ситуацией, когда в магазине боязно брать то или иное оборудование, потому что неизвестно будет ли оно работать в Linux! Попытки поиска нужной информации в Интернет часто заканчиваются ничем: либо нет никаких упоминаний о нужном вам оборудовании, либо данные противоречивы - одни говорят, что работает, другие, что нет!

Поэтому предлагаю, каждому кто на своём опыте убедился в том, что та или иная модель оборудования точно работает или точно не работает в Linux сообщить об этом другим! Таким образом вы сильно облегчите жизнь других, а кто-то, вполне вероятно, также облегчит жизнь и вам! Вместе мы сила!

Я начал с себя и сделал первые записи в базу. Формат базы не догма - обсуждаем здесь.

Источник.



От себя:
Я полностью поддерживаю эту идею :) Хотя т.ж. знаю, что существуют и другие сайты аналогичного направления.

Например:
http://www.linux-drivers.org/
http://www.linuxcompatible.org/compatlist3.html
http://freesource.info/wiki/HCL
http://www.leenooks.com/
http://loll.sourceforge.net/linux/links/Hardware/
http://www.linuxtested.com/
http://hardware4linux.info/

И кночено же Google, куда же без него :)
http://www.google.ru/search?q=linux+hardware+database

Профессиональные заболевания компьютерщика

Коллектив немецкого Федерального института Профессиональной безопасности и здоровья провел ряд опросов, составив по их результатам список наиболее распространенных заболеваний рыцаря мышки и клавиатуры, то есть компьютерщика. В общем-то, заболевания эти широко распространены среди людей, подолгу работающих на ПК - и медики поставили цель рассказать начинающим программистам, дизайнерам, операторам о возможном вреде долгой работы за компьютером, а тем, кому не посчастливилось избежать эти заболеваний специалисты рассказывают, как можно избавиться от напасти.

В общем-то, выделяют три основных заболевания компьютерщиков: зрительный синдром, туннельный синдром, ожирение и все, что с ним связано.
Зрительный синдром заключается в постепенном ухудшении зрения в результате постоянного напряжения глаз. Каким бы качественным не был бы монитор, все равно компьютерщик смотрит в одну точку - и никакие ухищрения производителей тут не помогут, все дело в физиологии. При переутомлении глаз мы забываем моргать, мышцы глазного яблока "отвыкают" от быстрой фокусировки взгляда на каком-либо предмете. В результате зрение может значительно упасть.
Кстати симптомы зрительного синдрома очень характерны: затуманивание зрения, затрудненная фокусировка, быстрая утомляемость. Кроме того, можно также выделить жжение в глазах, покраснение глазных яблок, боли при движении глаз.
Туннельный синдром заключается в травме кисти руки, которой мы работаем с мышкой. Поскольку движения мышкой приблизительно одинаковы в течение долгого времени, кости немного "стягиваются", травмируя так называемый срединный нерв. В результате возникают крайне неприятные болевые ощущения в кисти руки: возникают боли в руке, вы чувствуете неудобство, пытаясь поднять тяжелый предмет, сжатие кулака тоже может сопровождаться болями.
Ожирение. Тут все ясно - неподвижный образ жизни, употребление фастфуда или других типов высококалорийной пищи приводит к постоянному увеличению массы тела, в результате чего человек за короткое время поправляется настолько, что его трудно узнать.
Конечно, осторожный компьютерщик может не допустить возникновения ни одного упомянутого заболевания, но для этого придется изрядно потрудиться: записаться в атлетический зал, купить витамины для глаз, посещать офтальмолога, следить за своим питанием. Эти же советы подходят и тем, кто уже страдает одним из упомянутых заболеваний. Все-таки правильно говорит старинная пословица: "Лучше поздно, чем никогда".

Источник: http://www.mhealth.ru/health/healthnews/408214/index.php

пятница, 12 декабря 2008 г.

Определение пиратского диска с помощью лазерной указки

Пятеро физиков из испанского Университета Гренады разработали простой метод, с помощью которого можно отличить лицензионный диск от пиратского, сообщает журнал Science. Он основан на разнице в технологии записи лицензионных и пиратских дисков. Для того, чтобы определить лицензионный диск или нет, ученые использовали обыкновенную лазерную указку, которой светили на зеркальную поверхность диска. Когда свет от указки попадал на поверхность лицензионного диска, то была видна лишь яркая точка. Если диск пиратский, то сверху и снизу этой точки появлялись параллельные линии. Исследователи подчеркивают, что провели подобный эксперимент со ста оптическими дисками. Они содержали различный контент и были изготовлены разными производителями. В итоге физики пришли к выводу, что их метод является абсолютно точным. Американский физик Чуньле Го (Chunlei Guo) из Университета Рочестера, штат Нью-Йорк, подтверждает эффективность метода, позволяющего определить контрафактный диск или нет при помощи лазерной указки. Он считает, это открытие должно быть использовано для усиления борьбы с пиратством.

Источник: http://sciencenow.sciencemag.org/cgi/content/full/2008/1210/1
Перевод взят тут: http://www.uinc.ru/news/sn11159.html

четверг, 20 ноября 2008 г.

Автоматизация проверки своего IP по спам базам. Вершин ту.


Не так давно я выкладывал собственноручный скрипт для автоматической проверки своего IP по спам базам. Там было всего 11 баз. Да и работал он через http, что естественно не очень хорошо...
Но есть способ получше =)


И заключается он в том, чтобы обращаться к DNSBL напрямую. =)
Делается это просто, вот пример:
host -t TXT 4.3.2.1.xbl.spamhaus.org

тут 4.3.2.1 - это IP адрес задом наперед, а xbl.spamhaus.org - один из многочисленных DNSBL =)
В результате получим ответ:
Host 4.3.2.1.xbl.spamhaus.org not found: 3(NXDOMAIN)
что говорит о том, что хост с IP адресом 1.2.3.4 в этой базе не числится.
А если сделаем такой запрос:
host -t TXT 79.35.217.90.xbl.spamhaus.org
то получит ответ:
79.35.217.90.xbl.spamhaus.org descriptive text "http://www.spamhaus.org/query/bl?ip=90.217.35.79"
что явно указывает, что это IP адрес числится в спам базе. Даже ссылку дают, куда надо сходить в гости, чтобы тебя пожалели и удалили твой IP из этой спам базы :)

Человек по "имени" darkk (http://darkk.net.ru/) поделился со мной замечательной ссылкой http://www.robtex.com/. Замечательна она тем, что этот сайт знает более 100 DNSBL и, естественно, позволяет проверить свой IP. Но кому будет оходта заходить каждый день на этот сайт, вбивать свой IP и ждать результатов? Естественно хочется этот процесс как можно лучше автоматизировать и забыть про это дело. А вспоминать, только тогда, когда IP, какого-то фига, попал в какую-то спам базу.
Вот для этого я и написал этот скрипт.

Вот что он умеет:
Использование:
spam-check [-u] [[-e] [-g] [-s]] | [-v] | [-q] -p IP [IP2 [... [IPn]]]
spam-check -i input_file [-u] [[-e] [-g] [-s]] | [-v] | [-q] -p IP [IP2 [... [IPn]]]
spam-check -a dnsbl [-u] [[-e] [-g] [-s]] | [-v] | [-q] -p IP [IP2 [... [IPn]]]
spam-check -d [-u]

-u - Разрешить запуск скрипта от root'а
-e     - Показывать сообщения об ошибках
-g     - Показывать успешные проверки (НЕ СПАМ)
-s     - Не показывать не успешные проверки (СПАМ)
-v     - Выводить все
-q     - Ничего не выводить
-p     - IP адрес (можно указывать несколько IP, через пробел)
-i     - Файл со списком dnsbl-серверов
-a     - Проверить по указанному dnsbl
-d     - Вывести список всех dnsbl-серверов
-V     - Вывести версию
-h     - Показать справку

Особенности:
1. По умолчанию выводятся только не успешные проверки (СПАМ)
2. -g, -e и -s можно комбинировать.
3. -g, -e и -s нельзя использовать одновременно с -v и -q.
4. -v и -q одновременно использовать нельзя.
5. -p IP [IP2 [... [IPn]]] должен быть последним параметром.
6. -q абсолютно ничего не выводит.
7. Скрипт всегда возвращает следующие коды звершения:
0   - данного IP в спам базе нет;
1   - данный IP присутствует в спам базе;
255 - ошибка в параметре, запрошена справка/версия;
ошибки ответов от серверов не влияют на код завершения.
8. Если задано несколько IP и хоть один из них окажется хоть в кой-то спам базе, то код завершения будет равен 1.


В общем думаю тут и так все понятно. Скажу только, что ключ "-i" сделал на случай, если сервер http://www.robtex.com/ по какой-то причине откажется отдавать скрипту список DNSBL-серверов. А сохранить этот список предварительно можно так:
spam-check -d > dnsbl.list
или взять тут. А скрипт можно взять тут.

Если будут просьбы, сделаю порт для винды.



ЗЫ: Хочу выразить благодарность:
slash - указал на досадную ошибку с psbl.surriel.com (0.1.x)
Tenno Seremel - помог с правильным запросом для wget (0.1.x)
ramok - помог многими советами (wget, sed, dnsbl, printf) (0.1.x & 0.2.x)
darkk - помог с документацией по dnsbl и поделился ссылкой на сайт http://www.robtex.com/, указал на mktemp (0.2.x)


UPD: Добавил mktemp и защиту от запуска под рутом, а т.ж. опцию -u для разрешения запуска под рутом.



UPD: Последнюю версию скрипта можно взять тут -> https://code.google.com/p/spamcheck/

вторник, 18 ноября 2008 г.

Автоматизация проверки своего IP по спам базам


Кто-то админит локальную сеть, кто - веб-сервер, а кому-то, как и мне, приходится админить почтовый сервер... Такие админы знают каково бывает не сладко, когда их компания делает рассылку своим клиентам, т.к. очень часта в таких случаях их сервер (точнее IP сервера) попадает в спам базы...


Вот нам и приходится периодически проверять свой IP по спам базам, чтобы письма ходили всегда хорошо. Но проходить вручную по десятку спам-баз и вводит везде свой IP для проверки очень даже утомляет... Поэтому я решил автоматизировать этот процесс bash-скриптом.

Работа скрипта проста:
spam-check 22.22.22.22

В результате мы увидим следующее:
[OK]  - spamcop.net  - 22.22.22.22 not listed in bl.spamcop.net.
[OK]  - njabl.org  - 22.22.22.22 not found in the list.
[OK]  - www.five-ten-sg.com - 22.22.22.22 is not listed here.
[-No Lookup-] - junkemailfilter.com - ERROR - Reverse DNS Lookup Failed for [22.22.22.22]. 22.22.22.22 is NOT LISTED in any Hostkarma list.
[OK]  - mail-abuse.com - The IP address entered was not found on any database managed by Trend Micro's Network Reputation Services.
[OK]  - apews.org  - We found no entry matching your search. 
[OK]  - psbl.surriel.com - The host 22.22.22.22 has never been listed in PSBL.
[OK]  - psbl.surriel.com - We have no spamtrap mail on record for 22.22.22.22.
[OK]  - wpbl.info  - 22.22.22.22 not found in database.


Поле
[-No Lookup-] - junkemailfilter.com - ERROR - Reverse DNS Lookup Failed for [22.22.22.22]. 22.22.22.22 is NOT LISTED in any Hostkarma list.
говорит о том, что сервер не смог разрешить IP в доменное имя. Это единственный сервер из этого списка, который делает такую проверку, поэтому я ее включил.


Если же IP в спам базе, то мы увидим следующее:
$ spam-check 90.217.35.79
[+++SPAM+++]    - spamcop.net           - 90.217.35.79 listed in bl.spamcop.net (127.0.0.2).
[OK]            - njabl.org             - 90.217.35.79 not found in the list.
[OK]            - www.five-ten-sg.com   - 90.217.35.79 is not listed here.
[+++SPAM+++]    - junkemailfilter.com   - Your reverse DNS is correct! - 5ad9234f.bb.sky.com. 90.217.35.79 is Black listed.
[+++SPAM+++]    - mail-abuse.com        - The IP address 90.217.35.79 does appear on the following databases managed by Trend Micro's Network Reputation Services.
[OK]            - apews.org             - We found no entry matching your search. 
[+++SPAM+++]    - psbl.surriel.com      - Currently listed in PSBL?  Yes.
[+++SPAM+++]    - psbl.surriel.com      - Received spamtrap mail for 90.217.35.79.
[+++SPAM+++]    - wpbl.info             - Total spam sightings (last 90 days) - 4.


Возможно, некоторые удивлятся, что в этом списке нет довольно известной спам базы http://www.spamhaus.org/, но дело в том, что у меня не получилось сделать работу с ней через скрипт. Дело в том, что сервер http://www.spamhaus.org/, скорее всего, проверяет поле UserAgent браузера, я пробовал воспользоваться параметром -U утилиты wget, но результат это не дало. Буду очень признателен, если кто-нибудь поможет и с ним разобраться.


Ну и конечно-же сам скрипт, как же без него :)


Вот и все, чем я хотел поделиться с вами на этот раз, коллеги :)

ЗЫ: Если кто найдет ошибки, прошу меня уведомить, в комментах или по мылу на saimon.ghost [гав-гав] Гмыл0 [тут_точка] ком (защита от спама :-Р ).


UPD: Сделал новый скрипт, на много лучше, подробности тут.



UPD: Последнюю версию скрипта можно взять тут -> https://code.google.com/p/spamcheck/

[]

вторник, 11 ноября 2008 г.

Выводим VirtualBox в локальную сеть

На днях понадобилось вывести гостевую систему крутившуюся в VirtualBox в локальную сеть, т.е. чтобы можно было получить доступ к гостевой системе из локальной сети.
Долго парился пока не прочитал доки, а оказалось все легче некуда.


Я использовал VirtualBox OSE 1.5.6 из репозитория на Ubuntu 8.04.1 Desktop.

Для начала запусти сам VirtualBox, выбери из списка нужную тебе виртуальную машину и открой ее свойства. В левой части окна свойств выбери пункт "Сеть". В правой части выбирает "Хост-интерфейс" в поле "Присоединен к". А ниже в поле "Имя интерфейса" пишем "vbox0" (естественно, без кавычек ;) ). В общем как на скриншоте ниже.




Далее ставим пакет bridge-utils:
sudo apt-get install bridge-utils


И добавляем в /etc/network/interfaces:
auto eth0
iface eth0 inet manual

auto br0
iface br0 inet dhcp
bridge_ports eth0 vbox0


Теперь редактируем /etc/vbox/interfaces:
vbox0 ИмяЮзера br0
тут ИмяЮзера - пользователь, под которым ты работаешь в системе.

Т.ж. нужно настроить права для /dev/net/tun, чтобы VirtualBox не ругался при запуске гостевой ОС:
sudo chown root:vboxusers /dev/net/tun
sudo chmod g+rw /dev/net/tun


Чтобы не выполнять это каждый раз при запуске Ubuntu открываем файл /etc/udev/rules.d/20-names.rules и ищем строчку (у меня она была в самом низу файла)
KERNEL=="tun", NAME="net/%k"
и дописываем в ее конец
, GROUP="vboxusers", MODE="0660"
т.е. должна получиться такая строчка
KERNEL=="tun", NAME="net/%k", GROUP="vboxusers", MODE="0660"


Теперь настало время перезапустить сеть и демон виртуалбокса:
sudo /etc/init.d/networking restart
sudo /etc/init.d/virtualbox-ose restart

Все готово. Осталось только запустить гостевую систему в VirtualBox'е и убедиться, что все работает. :)

Т.к. IP мы получаем динамически, то надо в гостевой системе сделать соответствующие сетевые настройки, чтобы она получала IP от DHCP сервера из нашей локальной сети.
Если же ты не хочешь или не можешь по какой-то причине использовать DHCP сервер, то измени файл /etc/network/interfaces след. образом:
auto eth0
iface eth0 inet manual

auto br0
iface br0 inet static
address 192.168.0.100
netmask 255.255.255.0
gateway 192.168.0.1
bridge_ports eth0 vbox0

Теперь твоя гостевая система будет иметь IP 192.168.0.100. Т.ж. не забудь соответствующим образом изменить сетевые настройки гостевой системы.


И... никогда не забывай делать резервные копии, перед внесением изменений в какие-либо конфигурационные файлы!!! ;)


ЗЫ: Можешь на свой страх и риск заюзать нижеприведенный скрипт. Но тебе все равно придется вручную изменить настройки в свойствах виртуальной машины (как это описывалось выше).
Скрипт нужно запускать от root'a. Если ты изменишь значение переменной $ISDHCP на 1, то тебе нужно будет изменить значение следующих трех переменных на свой вкус, хотя можешь и ничего не менять, а оставить как есть.
Еще раз предупрежу: используй этот скрипт исключительно на свой страх и риск, я не несу никакой ответственности если ты запустишь этот скрипт на своей системе.


#!/bin/sh

# Запускать от root'а

ISDHCP=0 # 1 = Использовать DHCP | 0 = Не оспользовать DHCP

ADDRESS=192.168.0.100
NETMASK=255.255.255.0
GATEWAY=192.168.0.1

USER=`whoami`


# Устанавливаем пакет bridge-utils
apt-get install bridge-utils

NODHCP="auto eth0"
NODHCP+="iface eth0 inet manual"
NODHCP+=""
NODHCP+="auto br0"
NODHCP+="iface br0 inet dhcp"
NODHCP+=" bridge_ports eth0 vbox0"

YESDHCP="auto eth0"
YESDHCP+="iface eth0 inet manual"
YESDHCP+=""
YESDHCP+="auto br0"
YESDHCP+="iface br0 inet static"
YESDHCP+=" address $ADDRESS"
YESDHCP+=" netmask $NETMASK"
YESDHCP+=" gateway $GATEWAY"
YESDHCP+=" bridge_ports eth0 vbox0"

# Делаем бэкап /etc/network/interfaces
cp /etc/network/interfaces /etc/network/interfaces_`date +%Y%m%d`

# Настраиваем /etc/network/interfaces
if [ $ISDHCP=0 ] ; then
echo "$NODHCP" > /etc/network/interfaces
else
echo "$YESDHCP" > /etc/network/interfaces
fi

# Настраиваем /etc/vbox/interfaces
echo "vbox0 $USER br0" >> /etc/vbox/interfaces

# Настраиваем права для /dev/net/tun
chown root:vboxusers /dev/net/tun
chmod g+rw /dev/net/tun

# Делаем бэкап /etc/udev/rules.d/20-names.rules
cp /etc/udev/rules.d/20-names.rules /etc/udev/rules.d/20-names.rules_`date +%Y%m%d`

# Заменяем нужную строчку
grep -v 'KERNEL=="tun"' /etc/udev/rules.d/20-names.rules > /etc/udev/rules.d/20-names.rules
echo 'KERNEL=="tun", NAME="net/%k", GROUP="vboxusers", MODE="0660"' >> /etc/udev/rules.d/20-names.rules

# Перезапускаем демон виртуалбокса
sudo /etc/init.d/virtualbox-ose restart

# Перезапускаем сеть
sudo /etc/init.d/networking restart


понедельник, 29 сентября 2008 г.

Самый маленький в мире компьютер






Этот крошечный компьютер-кубик Space Cube уже какое-то время продается в Японии, но за пределами страны он пока еще в новинку. По заявлению производителя, это самый маленький, полностью функциональный компьютер.

При размерах 52 х 52 х 55 мм в нем умудрились уместиться 300 МГц процессор VR5701, 64 Мб DDR SDRAM памяти, 16 Мб встроенной памяти и карта CompactFlash на 1 Гб, один USB-порт, кард-ридер, VGA-выход, Ethernet. Работает этот компьютер на специальной версии Red Hat Linux.

В Японии он продается по весьма адекватной цене в 325 долларов, но европейским жителям рано радоваться – по предварительной информации его стоимость в Европе (если он сюда попадет) составит 1500 фунтов стерлингов, что уже звучит далеко не так заманчиво.

Источник: http://www.epochtimes.ru


Найдено тут: http://liberatum.ru/news/samyi-malenkii-v-mire-kompyuter

четверг, 28 августа 2008 г.

Регуляторы трафика


В связи с увеличением потребления трафика в локальных сетях встречаются ситуации, когда одни приложения монополизируют весь сетевой канал. Решить эту проблему можно с помощью сетевого оборудования, позволяющего контролировать или регулировать поток трафика.




Конкуренция трафика: возможен ли компромисс?

В настоящее время все больше решений в области коммуникаций самого разного масштаба используют IP-протокол и локальные сети Ethernet. При этом есть возможность минимизировать затраты благодаря использованию уже имеющегося оборудования, существующим программным решениям и даже приобретенным знаниям и опыту местных специалистов. Упрощает работу включение в общий проект уже имеющихся коммуникаций. IP-трафик, обеспечивающий работу программ, будет передаваться по каналам LAN и шлюзам, соединяющим сетевые сегменты. В качестве примера можно привести вариант организации информационного сообщения между разнесенными офисами путем реализации VPN.

Одна из проблем IP-сетей – это эффективный контроль трафика. Методы решения этой проблемы основываются на применении политики, позволяющей гармонично распределить информационный поток. Ведущие разработчики сетевого оборудования пытаются воплотить идею использования политики контроля трафика в технические решения. Как правило, реализуются методы QoS (Quality of Service) и CoS (Class of Service), которые, впрочем, связаны между собой.

Но в каких же случаях проблема управления трафиком является действительно критичной? И может ли достаточно широкий канал, соединяющий сети, решить все вопросы?

Необходимо учитывать, что протокол IP, созданный для передачи данных в интернете, не гарантирует доставку данных. Этот же протокол, работая в локальной сети Ethernet, не приобрел дополнительного качества, также полагаясь на принцип best effort service (негарантированная доставка данных). Если сеть компании используется только для обмена данными, то, наверное, заметного постоянного наростания трафика в ней не наблюдается, а возможные задержки при работе в сети или незаметны пользователям, или малозначимы. Даже в случае добавления новых пользователей в группу необходимо только пропорционально увеличить пропускную способность каналов, чтобы обеспечить необходимое качество сетевых сервисов.

Совершенно другая ситуация складывается при использовании приложений, для работы которых критичны задержки и скорость потока данных. Расширение пропускного канала сети сделает скорость обмена данными только более высокой, но не предотвратит внезапного увеличения до критического значения потока пакетов. При этом может наблюдаться переполнение буфера роутера или коммутатора. В такой ситуации происходит разрушение части сетевых пакетов. Также есть возможность потери пакетов второстепенных программ, а не приложений межсетевого обмена, например e-mail. Чтобы обеспечить эффективную работу всех приложений, следует изменить логику функционирования сети. Необходимо отказаться от негарантированной доставки данных, не дающей никаких привилегий программам. В тех случаях, когда объем трафика или задержки в локальной сети могут возрастать в пределах 10–30%, разумно будет задействовать QoS/CoS-политику как способ контроля трафика. Если организация планирует использовать видеоконференцию или систему групповой работы, в локальной сети обязательно нужно закрепить необходимый ресурс за определенными приложениями. Кстати, разработчики предлагают несколько схем, позволяющих эффективно применить схему QoS/CoS в локальной сети.

Проще всего использовать схему приоритезации сетевого трафика. IEEE и Internet Engineering Task Force поддерживают восемь одинаковых уровней приоритета IEEE в спецификации 802.1p(802.1d), а IETF использует специальные биты в IP-заголовке. Компания 3COM одной из первых реализовала поддержку данной спецификации в своих коммутаторах и роутерах под фирменным названием 3Com Transcend Policy Manager. Важно, что ведущие производители сетевого оборудования, в частности 3COM и Cisco, сотрудничали с разработчиками основных ОС для достижения совместимости обработки битов приоритета в заголовках IP-пакета.

Политика приоритетов создает что-то наподобие дорожных развязок. Она, например, может определить, что пакеты, относящиеся к приложениям CRM, имеют превосходство по доставке перед пакетами других типов – обмена файлов или интернет-пейджеров. Если же возникнет ситуация, когда часть пакетов в результате перегрузки будет отброшена, то в первую очередь это случится с пакетами с низким приоритетом. Надо сказать, что наряду с обеспечением достаточной полосы пропускания схема приоритетов позволяет осуществить доставку необходимого трафика в пункт назначения.

В рабочих группах, где необходимо обеспечить определенный уровень задержек сетевых передач, оптимальным будет использование схемы QoS, реализованной в стандарте ATM и RSVP (Resource Reservation Protocol). Данная схема позволяет получить контроль над пропускной способностью, задержками и точностью соблюдения приоритетов (над тем, какие пакеты будут отброшены в ситуации переполнения очереди).

Так, RSVP способен гарантировать то, что задержка сетевой передачи не превысит определенного максимума, а ATM к тому же предлагает контроль за дрожанием – колебанием задержек и временем движения пакетов от одной критичной точки LAN до другой.

Даже если компания не нуждается в системе управления трафиком сегодня, вполне возможно, что такая необходимость возникнет в будущем. Необходимо обращать внимание на то, чтобы приобретаемое сетевое оборудование, например коммутаторы, устанавливаемые на границе сети, поддерживали второй уровень и могли использовать схему приоритезации по стандарту 802.1p(802.1d).

Механизм дифференцированных услуг

С целью формализации описанных проблем и решений в 1998 году IETF создала рабочую группу по созданию дифференцированных услуг (DiffServ). Основная задача дифференцированных услуг – совместить требования по качеству обслуживания данных с принципом негарантированной доставки пакетов. В этой модели происходит разделение трафика путем его разбивки на классы с различным приоритетом.

Принцип приоритезации трафика прост: преимущества в сети отдаются более важным данным. При этом возникает несколько вопросов: какой трафик может быть дифференцирован? Кто и как наделяет данные приоритетом?

Приоритезация, называемая также CoS, разделяет трафик по нескольким категориям: высокая, средняя и низкая, а также самая низкая, пакеты которой могут быть отброшены. E-mail и вэб-трафик зачастую относят к самой низкой категории, и в случае полной загрузки сети они будут отброшены в первую очередь.

Сервисы, ориентированные на доставку пакетов, работают по аналогии с CoS, то есть можно отметить те пакеты, которые нужно доставить в первую очередь, во вторую и т.д. Такая схожесть не случайна, ведь CoS можно рассматривать как подкласс QoS. Но в отличие от нее, приоритезация трафика не гарантирует того, что данные будут доставлены в определенное время.

Приоритезация предписывает только обработку одних пакетов до того, как будут обработаны другие. Для реализации гарантированной доставки доставочный механизм должны поддерживать все звенья сети, принимающие участие в обработке данных.

Сегодня только ATM имеет все механизмы поддержки QoS. Для локальных сетей существует RSVP. Он является IETF-стратегией поддержки QoS в сетях TCP/IP и есть нечто большее, чем приоритезация и CoS. RSVP предусматривает распределение полосы пропускания и ее резервирование под определенный вид трафика. Это достаточно сложный для реализации протокол. Существует и другой механизм реализации QoS в IP – MPLS (Multiprotocol Label Switching).

Одной из проблем сетей, в которых реализована приоритезация, является задержка пакетов с самым низким приоритетом в нагруженной сети и передача всей полосы пропускания пакетам с высоким приоритетом. Таким же образом часть привилегированных пакетов будет задерживаться, когда нагрузка сети приобретет крайнюю степень.

Пожалуй, сегодня одним из рациональных путей управления трафиком (требующим значительно меньших затрат, чем реализация политики QoS) может служить разделение полосы пропускания на несколько частей для конкретных нужд. В случае, когда возрастает нагрузка, пакеты начинают буферизироваться сетевым оборудованием, что приводит к задержкам. Если буфер маршрутизатора (коммутатора) переполняется, некоторые пакеты вообще могут быть потеряны.

При возникновении проблем буферизации схема приоритезации поможет отправить первоочередные пакеты или пакеты, чувствительные к задержкам, раньше других. При этом необходимо, чтобы такие пакеты были правильно классифицированы и помещены в очередь с соответствующим уровнем обслуживания. Для этого порт сетевого устройства должен уметь классифицировать пакеты, а также читать метку класса входящего пакета и помещать его в очередь стека, которая отсортирована по значимости пакетов. При этом пакеты, находящиеся в начале очереди, будут обработаны быстрее.

Приоритезация может быть задействована также в мультипротокольных маршрутизаторах и коммутаторах, когда классификация будет проводиться по типу протокола. Например, данные, относящиеся к SNMP-протоколу, будут отнесены к классу с наивысшим приоритетом. Существуют и другие схемы маркировки CoS:

  • приоритезация на основе MAC-адреса;
  • VLAN-метки и 802.1p. IEEE 802.1Q – стандарт, который описывает способ, позволяющий вставлять метку в IEEE MAC-кадр. Эта метка служит для определения принадлежности к той или иной VLAN. Три бита такой метки могут нумеровать восемь определенных уровней приоритета. Подобное сочетание битов будет воспринято сетевыми устройствами как предписание отнести пакет к какому-либо классу обслуживания;
  • TOS. Заголовок IP-пакета имеет поле, которое называется TOS (Type Of Service). Это поле в настоящее время переопределено для использования в контексте IETF-дифференцирования услуг (Differentiated Services – Diff-Serv). Diff-Serv классифицирует и маркирует пакеты таким образом, что за ними закрепляется определенный маршрут в цепочке сетевых устройств. Установка бита TOS происходит на основе определенной политики контроля и в дальнейшем будет считываться сетевыми устройствами. Разработанный для интернета протокол IP воспринимается в различных сетях, а значит, Diff-Serv может обеспечить CoS в LAN, extranet или intranet.

Сегодня делаются попытки стандартизировать описание классов обслуживания и постепенно избавиться от использования поля TOS в пользу DSCP (Diff-Serve Code Point). Фактически поле DSCP представляет собой расширение поля IP-приоритета за счет использования битов, определяющих типы обслуживания. Схематически трансляция заголовка выглядит так:

Классификация пакетов может быть произведена различными способами. Лучше всего, если это будет сделано пользовательским приложением. Но компьютерные программы, как правило, не поддерживают все схемы классификации, поэтому такую задачу чаще всего предлагается выполнять многоуровневым коммутаторам, расположенным на границе сети.

Практический пример использования коммутатора 2/3 уровня для регулирования трафика Далее будет показано, как можно рационально организовать обмен сетевым трафиком, задействовав интеллектуальные функции коммутатора 3COM SuperStack 3 Switch 4400. Следует сказать, что рассматриваемое устройство поддерживает стандарт 802.1d (расширяющий 802.1p) и реализует как приоритезацию трафика, так и схему QoS. В основе механизма управления TCP/IP-пакетами 3COM SuperStack 3 Switch 4400 лежит использование нескольких очередей, обрабатываемых с различными привилегиями.


Коммутатор 3COM SuperStack 3 Switch 4400,
помимо реализации схем CoS/QoS,
предлагает различные дополнительные функции

Кроме собственно реализаций схем CoS/QoS, этот коммутатор предлагает различные дополнительные функции, облегчающие процесс администрирования сетевой политики. Например, использование профилей дает возможность администратору практически мгновенно изменять настройки, а программное обеспечение, поставляемое 3COM, предлагает удобный графический интерфейс обслуживания устройства.

Но, пожалуй, самым показательным остается использование командной строки – аскетичный интерфейс позволяет сконцентрироваться на принципах управления устройством. Получить доступ к встроенной командной оболочке коммутатора можно различными способами:

  • непосредственно соединившись по последовательному кабелю и используя терминальные программы (minicom, TerraTerm);
  • используя сетевую сессию telnet;
  • используя сетевую сессию SSH (3COM в качестве клиентов рекомендует OpenSSH или PuTTY).

В нашем примере используется консольное соединение по COM1-порту. Схема, по которой производится обработка данных, состоит из трех составляющих – классификатора, правила и профайла. Классификатор описывает принадлежность пакета (по различным признакам) к определенному приоритету. Таких классификаций может быть несколько. Когда создан их необходимый набор, его можно включить и запомнить в профайле.

Рисунок ниже демонстрирует, как командами оболочки создается определенный классификатор. Представим себе, что необходимо подавить весь ftp-трафик. Можно классифицировать данный сервис по принадлежности к 21 и 20 порту, после чего отнести его к нужному типу обслуживания.

Создается новый классификатор командой cre, после чего предлагается выбрать его номер и название. Теперь предстоит указать механизм, по которому коммутатор будет отбирать нужные нам пакеты.


Создание классификации для ftp-трафика

Как видно из рисунка, есть несколько вариантов выбора. Итак:

  • pAddr обозначает пакеты исходящие и принадлежащие определенному сетевому адресу;
  • ipProtocol может быть TCP или UDP. Некоторые важные сервисы, например разрешение имен, работают по UDP-протоколу;
  • IpPort. С помощью этой опции можно пометить пакеты, относящиеся к тем или иным TCP-сервисам (HTTP-порт 80, SSH-порт 22 и т.д);
  • dscp позволяет анализировать установленную в пакете метку Diff-Serve Code Point.

Как уже говорилось, отличительной чертой ftp-трафика является принадлежность к некоторым портам (20, 21). Это нужно указать опцией ippo, а затем конкретизировать tcp-порт, №21. Подобным образом нужно закрыть и порт данных (20) для ftp-протокола. На рисунке это также представлено. Таким образом, классификация создана. Следующим шагом будет создание правила.


В новый профайл включается классификатор
с соответствующим сервисным уровнем

Собственно правило – это сопоставление классификатора и сервисного уровня (service level). На рисунке ниже изображено, как создается новый профайл с №11 и именем ftp. Затем в него добавляется правило, связывающее классификатор ftp с сервисным уровнем 1 (drop). Можно использовать 1-6 значения сервисных уровней, которые связаны с уровнем приоритета, описанным в стандарте 802.1D (802.1p). Теперь остается только применить данный профайл командой assign ко всем или только к определенному порту коммутатора.

Текущее состояние настроек и правил в устройстве можно проанализировать с помощью команды detail. На рисунке справа проиллюстрирован пример ее работы. В результате мы получили запрет на весь ftp-трафик, который будет циркулировать через любой порт коммутатора.

Кроме простого определения приоритета обработки пакета в очереди на основе сетевых параметров, коммутатор 3COM SuperStack 3 Switch 4400 способен анализировать поле дифференциального обслуживания в IP-заголовке. К сожалению, не все сетевые агенты используют такой механизм приоритезации трафика. Поэтому данный коммутатор наделен способностью транслировать уровни приоритета из стандарта IEEE 802.1p в DSCP и обратно.


Текущее состояние профайла

Классификация пакетов с помощью программной оболочки устройства может быть произведена аналогично тому, как было описано выше. При этом есть возможность использовать самые разные критерии:

  • значения маркера CoS по стандарту 802.1p;
  • значения DSCP (Diff-Serve code point);
  • порты назначения протоколов TCP и UDP;
  • приоритет по умолчанию для порта (в том смысле, что можно регулировать приоритет всего трафика определенного физического порта коммутатора);
  • IP-адрес и протокол.

В дополнение к стандартным схемам приоритезации и QoS есть возможность расширенного конфигурирования физических портов коммутатора. В контексте нашей темы полезной функцией является ограничение скорости работы порта.

Таким образом, можно просто зарезервировать полосу пропускания определенному хосту. Для порта в 100 Mбит устанавливать скорость можно с шагом 1 Mбит, а для гигабитного интерфейса шаг увеличивается до 8 Mбит.

Как уже упоминалось, вся конфигурация правил управления трафиком в устройстве 3COM SuperStack 3 Switch 4400 сохраняется в профайле. Данное устройство может взаимодействовать с TFTP-сервером для сохранения, загрузки и выгрузки этого профайла. Такая возможность является очень полезной, если нужно организовать периодическую смену конфигураций, например для рабочего и внеурочного времени суток.

Графические средства управления

Надо признать, пользоваться командной строкой не всегда удобно, особенно если речь идет только о контроле состояния. Обзор сети, поиск агентов, чтение системных сообщений всегда лучше производить с помощью ПО с графическим интерфейсом. И вообще, дружественный интерфейс может значительно ускорить освоение нового устройства. В нашем случае администратор также не ограничен только текстовой оболочкой, в его распоряжении есть отдельное ПО и вэб-интерфейс.

Например, на рисунках слева видно, как можно произвести необходимые действия для ограничения трафика. Для этого достаточно запустить программу, найти нужный хост и добавить (можно выбрать из стандартных) классификатор трафика.


Получить наглядную статистику работы сетевого устройства
можно из любой точки сети

А вот ознакомиться с текущей статистикой работы коммутатора можно практически из любого места сети, ведь в 3COM SuperStack 3 Switch 4400 встроен вэб-интерфейс. Результат демонстрирует верхний рисунок.

На основе простоты и надежности

Сегодня все чаще системные администраторы сталкиваются с проблемами в работе приложений, вызванными нерациональным использованием полосы пропускания локальной сети. Различного рода паразитирующий трафик способен полностью поглотить все ресурсы или поставить определенные сервисы в невыгодные условия работы. В таких случаях приходится прибегать к решениям, позволяющим распределять пропускные каналы так, чтобы обеспечить работу важных для производственного процесса приложений.

Важно то, что схема управления трафиком на основе приоритетов еще не полностью стандартизирована, и, как правило, не поддерживается приложениями, выполняемыми на отдельных ПК. В таких условиях поставленную задачу легче и проще переложить на сетевое коммуникационное оборудование.



Источник: http://citforum.ru/nets/lvs/traffic/
Первоисточник: Николай Ткаченко, 2004, СЕТИ и Телекоммуникации
[]

*nix-шпаргалки


Моя не большая подборочка команд, т.е. шпаргалка.
Пользовался пока изучал линукс. Может и тебе поможет ;)


nix-шпаргалки
• Поиск в файлах:
grep -R - рекурсивный поиск в файлах
grep -i - поиск без учета регистра
grep -w - искать слова целиком
grep -n - отображать номера строк
grep -A X - вывести след. Х строк
grep -B X - вывести пред. Х строк
grep -C X - вывести пред. и след. Х строк
grep -v - отображать строки не содержащие указанного слова
grep -l - отображать список файлов, содежащих искомое слово


• Поиск файлов:
locate -i <file> - поиск в базе имен файлов без учета регистра
locate -n X <file> - вывести только первые X найденных файлов
updatedb / slocate -u - обновить базу имен файлов
whereis <bin_file> - показывает размещение бинарных файлов, исходных кодов и руководств
which <bin_file> - отображает полный путь к файлу


find <path> -name <file> - поиск файлов и каталогов по точному имени
find <path> -name <"*file*"> - поиск файлов и каталогов по имени с выводом полного пути

(т.е. все варианты пути, где встречается искомая строка)
find <path> -user <user> - поиск файлов по имени владельца, т.е. файлов принадлежащих юзеру <user>
find <path> -group <group> - поиск файлов по имени группы
find <path> ! <param> - инверсия результата, т.е. поиск файлов не удовлетворяющих условию поиска
find <path> <param> -exec <cmd> [param] {} ; - выполняет <cmd> над каждым найденным файлом/каталогом
find <path> <param> -fprint <file> - вывести результат поиска в файл <file>
find <path> -size [+|-]<size><k|M|G> - поиск файла по размеру

(+=больше, -=меньше указанного размера,

иначе по точному размеру)
find <path> -type <f|d|l|b|c|p|s> - поиск файла по типу

(f - файл, d - каталог, l - символьная ссылка,

b - файл блочного типа, c - файл символьного типа,

p - FIFO, s - сокет)
-a = AND ; -o = OR ; -n = NOT - Пример использования:

find /music/ (-size +10M -o -size 10M ) -a -type f

(найдет файлы в каталоге /musuc/ размером 10 и более Мбайт)
find <path> -type f -atime +<n> - поиск файлов по времени последнего обращения (за <n> дней)
find <path> -type f -mtime -<n> - поиск файлов по времени создания/изменения (за <n> дней)
find <path> -xdev -name <file> - поиск файлов с игнорированием съёмных носителей, таких как cdrom, floppy и т.п.
find <path> -perm -u+s - найти все файлы с выставленным SUID






• Сеть:
netstat -a - открытые порты в виде имен (name:port_name)
netstat -an - открытые порты в виде чисел (ip:port)
netstat -rn - таблица маршрутизации (в ip адресах)


ifconfig eth0 192.168.0.22 up - поднять интерфейс eth0
ifconfig eth0 192.168.0.22 broadcast 192.168.0.255 netmask 255.255.255.0 - настройка интерфейса eth0
ifconfig eth0 - получить инфу о настройке eth0


route add -net 192.168.0.0 netmask 255.255.255.0 eth0 - настройка маршрутизации
route default gw 192.168.0.1 netmask 0.0.0.0 metric 1 - настройка шлюза по умолчанию


hostname my_host - запись в /etc/sysconfig/network задает имя хоста
dhclient eth<n> - активировать интерфейс в dhcp-режиме
route -n - вывести локальную таблицу маршрутизации
netstat -rn - вывести локальную таблицу маршрутизации
route add -net <ip>/<netmask> gw <ip_gateway> - задать ip-адрес шлюза по умолчанию (default gateway)
route add -net <ip_net> netmask <netmask> gw <ip_gateway> - добавить статический маршрут в сеть <ip_net>/<netmask> через шлюз с ip-адресом <ip_gateway>
route del <ip>/<netmask> gw <ip_gateway> - удалить ip-адрес шлюза по умолчанию (default gateway)
echo "1" > /proc/sys/net/ipv4/ip_forward - разрешить пересылку пакетов (forwarding)
host <url | ip> - разрешить имя <URL> хоста в ip-адрес и наоборот
ip link show - отобразить состояние всех интерфейсов
mii-tool eth<n> - отобразить статус и тип соединения для интерфейса
ethtool eth<n> - отображает статистику интерфеса с выводом такой информации, как поддерживаемые и текущие режимы соединения
netstat -tupn - отображает все установленные сетевые соединения по протоколам TCP и UDP без разрешения имён в ip-адреса и PID'ы и имена процессов, обеспечивающих эти соединения
netstat -tupln - отображает все сетевые соединения по протоколам TCP и UDP без разрешения имён в ip-адреса и PID'ы и имена процессов, слушающих порты
tcpdump tcp port 80 - отобразить весь трафик на TCP-порт 80 (обычно - HTTP)
iwlist scan - просканировать эфир на предмет, доступности беспроводных точек доступа




• IPTABLES (firewall):
iptables -L -t <filter|nat|mangle> - просмотр правил
iptables -t filter -nL - отобразить все цепочки правил
iptables -nL - отобразить все цепочки правил в NAT-таблице
iptables -t nat -L - отобразить все цепочки правил в NAT-таблице
iptables -t filter -F - очистить все цепочки правил в filter-таблице
iptables -F - очистить все цепочки правил в NAT-таблице
iptables -t nat -F - очистить все цепочки правил в NAT-таблице
iptables -t filter -X - удалить все пользовательские цепочки правил в filter-таблице
iptables -t filter -A INPUT -p tcp --dport telnet -j ACCEPT - позволить входящее подключение telnet'ом
iptables -t filter -A OUTPUT -p tcp --dport http -j DROP - блокировать исходящие HTTP-соединения
iptables -t filter -A FORWARD -p tcp --dport pop3 -j ACCEPT - позволить "прокидывать" (forward) POP3-соединения
iptables -t filter -A INPUT -j LOG --log-prefix "DROP INPUT" - включить журналирование ядром пакетов, проходящих через цепочку INPUT, и добавлением к сообщению префикса "DROP INPUT"
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE - включить NAT исходящих пакетов на интерфейс eth0 (допустимо при использовании с динамически выделяемыми ip-адресами)
iptables -t nat -A PREROUTING -d 192.168.0.1 -p tcp -m tcp --dport 22 -j DNAT --to-destination 10.0.0.2:22 - перенаправление пакетов, адресованных хосту 192.168.0.1 поступающих на порт 22, на хост 10.0.0.2 на порт 22




• Монтирование файловых систем
fuser -km <mount_path> - принудительное размонтирование раздела. Применяется в случае, когда раздел занят каким-либо пользователем
umount -n <mount_path> - выполнить размонитрование без занесения информации в /etc/mtab. Полезно когда файл имеет атрибуты "только чтение" или недостаточно места на диске
mount -t smbfs -o username=<user>,password=<pass> <//winclient/share/mnt/share> - монтировать сетевую файловую систему Windows (SMB/CIFS)
mount -o bind <source_path> <dest_path> - "монтирует" директорию в директорию (binding)




• Дисковое пространство
du -sk * | sort -rn - отображает размер и имена файлов и директорий, с соритровкой по размеру
rpm -q -a --qf '%10{SIZE}t%{NAME}n' | sort -k1,1n - показывает размер используемого дискового пространства, занимаемое файлами rpm-пакета, с сортировкой по размеру (fedora, redhat и т.п.)
dpkg-query -W -f='${Installed-Size;10}t${Package}n' | sort -k1,1n - показывает размер используемого дискового пространства, занимаемое файлами deb-пакета, с сортировкой по размеру (ubuntu, debian т.п.)




• Пользователи и группы
groupmod -n <new_group_name> <old_group_name> - переименовать группу old_group_name в new_group_name
useradd -c "<Comment>" -g <group> -d <home_dir> -s <shell> <user_name> - создать пользователя user1, назначить ему в качестве домашнего каталога /home/user1, в качестве shell'а /bin/bash, включить его в группу admin и добавить комментарий Nome Cognome
userdel -r <user_name> - удалить пользователя и его домашний каталог
usermod -c "<Comment>" -g <group> -d <home_dir> -s <shell> <user_name> - изменить атрибуты пользователя
chage -E 2005-12-31 <user_name> - установить дату окончания действия учётной записи пользователя
pwck - проверить корректность системных файлов учётных записей. Проверяются файлы /etc/passwd и /etc/shadow
grpck - проверяет корректность системных файлов учётных записей. Проверяется файл/etc/group
newgrp [-] <group_name> - изменяет первичную группу текущего пользователя. Если указать "-", ситуация будет идентичной той, в которой пользователь вышил из системы и снова вошёл. Если не указывать группу, первичная группа будет назначена из /etc/passwd




• Выставление/изменение полномочий на файлы
chmod u+s <bin_file_path> - назначить SUID-бит файлу (это даёт возможность любому пользователю запускать на выполнение файл с полномочиями владельца файла)
chmod u-s <bin_file_path> - снять SUID-бит с файла
chmod g+s <dir> - назначить SGID-бит директории
chmod g-s <dir> - снять SGID-бит с директории
chmod o+t <dir> - назначить STIKY-бит директории (позволяет удалять файлы только владельцам)
chmod o-t <dir> - снять STIKY-бит с директории




• Специальные атрибуты файлов
chattr +a <file> - позволить открывать файл на запись только в режиме добавления
chattr +c <file> - позволяет ядру автоматически сжимать/разжимать содержимое файла.
chattr +d <file> - указавет утилите dump игнорировать данный файл во время выполнения backup'а
chattr +i <file> - делает файл недоступным для любых изменений: редактирование, удаление, перемещение, создание линков на него.
chattr +s <file> - позволяет сделать удаление файла безопасным, т.е. выставленный атрибут s говорит о том, что при удалении файла, место, занимаемое файлом на диске заполняется нулями, что предотвращяет возможность восстановления данных.
chattr +S <file> - указывает, что, при сохранении изменений, будет произведена синхронизация, как при выполнении команды sync
chattr +u <file> - данный атрибут указывает, что при удалении файла содержимое его будет сохранено и при необходимости пользователь сможет его восстановить
lsattr - показать атрибуты файлов




• Управление пакетами:
‣ RPM пакеты (Fedora, Red Hat и тому подобное)
rpm -ivh <package.rpm> - установить пакет с выводом сообщений и прогресс-бара
rpm -ivh --nodeps <package.rpm> - установить пакет с выводом сообщений и прогресс-бара без контроля зависимостей
rmp -Uhv <package.rpm> - обновить пакет без изменений конфигурационных файлов, в случае отсутствия пакета, он будет установлен
rpm -F <package.rpm> - обновить пакет только если он установлен
rpm -e <package.rpm> - удалить пакет
rpm -qa - отобразить список всех пакетов, установленных в системе
rpm -qi <package.rpm> - вывести информацию о конкрентном пакете
rpm -qg "System Environment/Daemons" - отобразить пакеты входящие в группу пакетов
rpm -ql <package.rpm> - вывести список файлов, входящих в пакет
rpm -qc <package.rpm> - вывести список конфигурационных файлов, входящих в пакет
rpm -q <package.rpm> --whatrequires - вывести список пакетов, необходимых для установки конкретного пакета по зависимостям
rpm -q <package.rpm> --whatprovides - show capability provided by a rpm package
rpm -q <package.rpm> --scripts - отобразит скрипты, запускаемые при установке/удалении пакета
rpm -q <package.rpm> --changelog - вывести историю ревизий пакета
rpm -qf <file_path/file_name> - проверить какому пакету принадлежит указанный файл. Указывать следует полный путь и имя файла
rpm -qp <package.rpm> -l - отображает список файлов, входящих в пакет, но ещё не установленных в систему
rpm --import /media/cdrom/RPM-GPG-KEY - ипортировать публичный ключ цифровой подписи
rpm --checksig <package.rpm> - проверит подпись пакета
rpm -qa gpg-pubkey - проверить целостность установленного содержимого пакета
rpm -V <package.rpm> - проверить размер, полномочия, тип, владельца, группу, MD5-сумму и дату последнего изменения пакета
rpm -Va - проверить содержимое всех пакеты установленные в систему. Выполняйте с осторожностью!
rpm -Vp <package.rpm> - проверить пакет, который ещё не установлен в систему
rpm2cpio <package.rpm> | cpio --extract --make-directories *bin* - извлечь из пакета файлы содержащие в своём имени bin
rpm -ivh /usr/src/redhat/RPMS/`arch`/package.rpm - установить пакет, собранный из исходных кодов
rpmbuild --rebuild <package.src.rpm> - собрать пакет из исходных кодов


‣ YUM - средство обновления пакетов(Fedora, RedHat и тому подобное)
yum install <package_name> - закачать и установить пакет package_name и зависимые пакеты
yum remove <package_name> - удалить пакет и зависимые пакеты (если не нужны)
yum update - обновить все пакеты, установленные в систему
yum update <package_name> - обновить пакет
yum search <package_name> - найти пакет в репозитории
yum list avaliable - запросить список пакетов
yum remove <package_name> - удалить пакет
yum list - вывести список всех пакетов, установленных в систему
yum clean packages - очисть rpm-кэш, удалив закачанные пакеты
yum clean headers - удалить все заголовки файлов, которые система использует для разрешения зависимостей
yum clean all - очисть rpm-кэш, удалив закачанные пакеты и заголовки


‣ DEB пакеты (Debian, Ubuntu и тому подобное)
dpkg -i <package.deb> - установить / обновить пакет
dpkg -r <package_name> - удалить пакет package_name
dpkg -l - показать все пакеты, установленные в систему
dpkg -s <package_name> - отобразить инфрмацию о конкретном пакете
dpkg -L <package_name> - вывести список файлов, входящих в пакет, установленный в систему
dpkg --contents <package.deb> - отобразить список файлов, входящих в пакет, который ешё не установлен в систему
dpkg -S <file_path/file_name> - найти пакет, в который входит указанный файл




• Просмотр содержимого файлов
head -n - выводит первые n строк файла
tail -n - выводит последние n строк файла
tail -n -f - выводит последние n строк файла и динамически их обновляет
touch -t 0712250000 fileditest - модифицировать дату и время создания файла, при его отсутствии, создать файл с указанными датой и временем (YYMMDDhhmm)
tac <file> - вывести содержимое файла file1 на стандартное устройсво вывода в обратном порядке (последняя строка становиться первой и т.д.)


• Манипуляции с текстом
grep Aug -R /var/log/* - отобрать и вывести на стандартное устройство вывода строки, содержащие "Aug", во всех файлах, находящихся в директории /var/log и ниже
sed 's/string1/string2/g' example.txt - в файле example.txt заменить "string1" на "string2", результат вывести на стандартное устройство вывода
sed '/^$/d' example.txt - удалить пустые строки из файла example.txt
sed '/ *#/d; /^$/d' example.txt - удалить пустые строки и комментарии из файла example.txt
echo 'esempio' | tr '[:lower:]' '[:upper:]' - преобразовать символы из нижнего регистра в верхний
sed -e '1d' result.txt - удалить первую строку из файла example.txt
sed -n '/string1/p' - отобразить только строки содержащие "string1"
sed -e 's/ *$//' example.txt - удалить пустые символы в конце каждой строки
sed -e 's/string1//g' example.txt - удалить строку "string1" из текста не изменяя всего остального
sed -n '1,8p;5q' example.txt - взять из файла с первой по восьмую строки и из них вывести первые пять
sed -n '5p;5q' example.txt - вывести пятую строку
sed -e 's/0*/0/g' example.txt - заменить последовательность из любого количества нулей одним нулём
cat -n <file> - пронумеровать строки при выводе содержимого файла
cat example.txt | awk 'NR%2==1' - при выводе содержимого файла, не выводить чётные строки файла
echo a b c | awk '{print $1}' - вывести первую колонку (разделение, по-умолчанию, по пробелу/пробелам или символу/символам табуляции)
echo a b c | awk '{print $1,$3}' - вывести первую и третью колонки (разделение, по-умолчанию, по пробелу/пробелам или символу/символам табуляции)
paste file1 file2 - объединить содержимое file1 и file2 в виде таблицы: строка 1 из file1 = строка 1 колонка 1-n, строка 1 из file2 = строка 1 колонка n+1-m
paste -d '+' file1 file2 - объединить содержимое file1 и file2 в виде таблицы с разделителем "+"
sort file1 file2 | uniq - отсортировать содержимое двух файлов, не отображая повторов
sort file1 file2 | uniq -u - отсортировать содержимое двух файлов, отображая только уникальные строки (строки, встречающиеся в обоих файлах, не выводятся на стандартное устройство вывода)
sort file1 file2 | uniq -d - отсортировать содержимое двух файлов, отображая только повторяющиеся строки
comm -1 file1 file2 - сравнить содержимое двух файлов, не отображая строки принадлежащие файлу 'file1'
comm -2 file1 file2 - сравнить содержимое двух файлов, не отображая строки принадлежащие файлу 'file2'
comm -3 file1 file2 - сравнить содержимое двух файлов, удаляя строки встречающиеся в обоих файлах




• Преобразование наборов символов и файловых форматов
dos2unix filedos.txt fileunix.txt - конвертировать файл текстового формата из MSDOS в UNIX (разница в символах возврата коретки)
unix2dos fileunix.txt filedos.txt - конвертировать файл текстового формата из UNIX в MSDOS (разница в символах возврата коретки)
recode ..HTML < page.txt > page.html - конвертировать содержимое тестового файла page.txt в html-файл page.html
recode -l | more - вывести список доступных форматов




• Анализ файловых систем
badblocks -v /dev/hda1 - проверить раздел hda1 на наличие bad-блоков
fsck /dev/hda1 - проверить/восстановить целостность linux-файловой системы раздела hda1
fsck.ext2 /dev/hda1 - проверить/восстановить целостность файловой системы ext2 раздела hda1
e2fsck /dev/hda1 - проверить/восстановить целостность файловой системы ext3 раздела hda1 с указанием, что журнал расположен там же
e2fsck -j /dev/hda1 - проверить/восстановить целостность файловой системы ext3 раздела hda1 с указанием, что журнал расположен там же
fsck.ext3 /dev/hda1 - проверить/восстановить целостность файловой системы ext3 раздела hda1
fsck.vfat /dev/hda1 - проверить/восстановить целостность файловой системы fat раздела hda1
fsck.msdos /dev/hda1 - проверить/восстановить целостность файловой системы fat раздела hda1
dosfsck /dev/hda1 - проверить/восстановить целостность файловой системы fat раздела hda1




• Форматирование файловых систем
mkfs /dev/hda1 - создать linux-файловую систему на разделе hda1
mke2fs /dev/hda1 - создать файловую систему ext2 на разделе hda1
mke2fs -j /dev/hda1 - создать журналирующую файловую систему ext3 на разделе hda1
mkfs -t vfat 32 -F /dev/hda1 - создать файловую систему FAT32 на разделе hda1
fdformat -n /dev/fd0 - форматирование флоппи-диска без проверки
mkswap /dev/hda3 - создание swap-пространства на разделе hda3




• swap-пространство
mkswap /dev/hda3 - создание swap-пространства на разделе hda3
swapon /dev/hda3 - активировать swap-пространство, расположенное на разделе hda3
swapon /dev/hda2 /dev/hdb3 - активировать swap-пространства, расположенные на разделах hda2 и hdb3




• Создание резервных копий (backup)
dump -0aj -f /tmp/home0.bak /home - создать полную резервную копию директории /home в файл /tmp/home0.bak
dump -1aj -f /tmp/home0.bak /home - создать инкрементальную резервную копию директории /home в файл /tmp/home0.bak
restore -if /tmp/home0.bak - восстановить из резервной копии /tmp/home0.bak
rsync -rogpav --delete /home /tmp - синхронизировать /tmp с /home
rsync -rogpav -e ssh --delete /home ip_address:/tmp - синхронизировать через SSH-туннель
rsync -az -e ssh --delete ip_addr:/home/public /home/local - синхронизировать локальную директорию с удалённой директорией через ssh-туннель со сжатием
rsync -az -e ssh --delete /home/local ip_addr:/home/public - синхронизировать удалённую директорию с локальной директорией через ssh-туннель со сжатием
dd bs=1M if=/dev/hda | gzip | ssh user@ip_addr 'dd of=hda.gz' - сделать "слепок" локального диска в файл на удалённом компьютере через ssh-туннель
tar -Puf backup.tar /home/user - создать инкрементальную резервную копию директории '/home/user' в файл backup.tar с сохранением полномочий
( cd /tmp/local/ && tar c . ) | ssh -C user@ip_addr 'cd /home/share/ && tar x -p' - копирование содержимого /tmp/local на удалённый компьютер через ssh-туннель в /home/share/
( tar c /home ) | ssh -C user@ip_addr 'cd /home/backup-home && tar x -p' - копирование содержимого /home на удалённый компьютер через ssh-туннель в /home/backup-home
tar cf - . | (cd /tmp/backup ; tar xf - ) - копирование одной директории в другую с сохранением полномочий и линков
find /home/user1 -name '*.txt' | xargs cp -av --target-directory=/home/backup/ --parents - поиск в /home/user1 всех файлов, имена которых оканчиваются на '.txt', и копирование их в другую директорию
find /var/log -name '*.log' | tar cv --files-from=- | bzip2 > log.tar.bz2 - поиск в /var/log всех файлов, имена которых оканчиваются на '.log', и создание bzip-архива из них
dd if=/dev/hda of=/dev/fd0 bs=512 count=1 - создать копию MBR с /dev/hda на флоппи-диск
dd if=/dev/fd0 of=/dev/hda bs=512 count=1 - восстановить MBR с флоппи-диска на /dev/hda




• CDROM
cdrecord -v gracetime=2 dev=/dev/cdrom -eject blank=fast -force - clean a rewritable cdrom
mkisofs /dev/cdrom > cd.iso - create an iso image of cdrom on disk
mkisofs /dev/cdrom | gzip > cd_iso.gz - create a compressed iso image of cdrom on disk
mkisofs -J -allow-leading-dots -R -V "Label CD" -iso-level 4 -o ./cd.iso data_cd - create an iso image of a directory
cdrecord -v dev=/dev/cdrom cd.iso - burn an ISO image
gzip -dc cd_iso.gz | cdrecord dev=/dev/cdrom - - burn a compressed ISO image
mount -o loop cd.iso /mnt/iso - mount an ISO image
cd-paranoia -B - rip audio tracks from a CD to wav files
cd-paranoia -- "-3" - rip first three audio tracks from a CD to wav files
cdrecord --scanbus - scan bus to identify the channel scsi




• Microsoft Windows networks(SAMBA)
nbtscan <ip> - разрешить netbios-имя (nbtscan не во всех системах ставится по-умолчанию, возможно, придётся доустанавливать вручную, а nmblookup включен в пакет samba)
nmblookup -A <ip> - отобразить ресурсы, предоставленные в общий доступ на windows-машине
smbclient -L <ip | hostname> - отобразить ресурсы, предоставленные в общий доступ на windows-машине
smbget -Rr smb://<ip/share> - подобно wget может получить файлы с windows-машин через smb-протокол
mount -t smbfs -o username=<user>,password=<pass> <//winclient/share/mnt/share> - смонтировать smb-ресурс, предоставленный на windows-машине, в локальную файловую систему




• Мониторинг и отладка
pidof <proc_name> - отобразить PID процесса (если он запущен)
ps -eafw - отобразить запущенные процессы, используемые ими ресурсы и другую полезную информацию (единожды)
ps -e -o pid,args --forest - вывести PID'ы и процессы в виде дерева
pstree - отобразить дерево процессов
kill -9 98989 - "убить" процесс с PID 98989 "на смерть" (без соблюдения целостности данных)
kill -KILL 98989 - корректно завершить процесс с PID 98989
kill -TERM 98989 - корректно завершить процесс с PID 98989
kill -1 98989 - заставить процесс с PID 98989 перепрочитать файл конфигурации
kill -HUP 98989 - отобразить список файлов, открытых процессом с PID 98989
lsof -p 98989 - отобразить список файлов, открытых процессом с PID 98989
lsof <path> - отобразить список открытых файлов из <path>
strace -c ls >/dev/null - вывести список системных вызовов, созданных и полученных процессом ls
strace -f -e open ls >/dev/null - вывести вызовы библиотек
watch -n1 'cat /proc/interrupts' - отображать прерывания в режиме реального времени
last reboot - отобразить историю перезагрузок системы
last <user> - отобразить историю регистрации пользователя в системе и время его нахождения в ней
lsmod - вывести загруженные модули ядра
free -m - показать состояние оперативной памяти в мегабайтах
smartctl -A /dev/hda - контроль состояния жёсткого диска /dev/hda через SMART
smartctl -i /dev/hda - проверить доступность SMART на жёстком диске /dev/hda
tail /var/log/dmesg - вывести десять последних записей из журнала загрузки ядра
tail /var/log/messages - вывести десять последних записей из системного журнала




• Другие полезные команды
apropos ...keyword - выводит список команд, которые так или иначе относятся к ключевым словам (полезно, когда вы знаете что делает программа, но не помните команду)
whatis ...keyword - отображает описание действий указанной программы
mkbootdisk --device /dev/fd0 `uname -r` - создаёт загрузочный флоппи-диск
gpg -c file1 - шифрует файл file1 с помощью GNU Privacy Guard
gpg file1.gpg - дешифрует файл file1 с помощью GNU Privacy Guard
echo 'wget -c www.example.com/files.iso' | at 09:00 - начать закачку в указанное время
ldd /usr/bin/ssh - вывести список библиотек, необходимых для работы ssh