Шукати в цьому блозі

пʼятниця, 28 вересня 2012 р.

Дополнительные атрибуты

Для начала небольшой примерчик:
root@terminal:/tmp# touch text.txt
root@terminal:/tmp# ls -l text.txt 
-rw-r--r-- 1 root root 0 2012-09-28 18:41 text.txt
root@terminal:/tmp# lsattr text.txt 
-----------------e- text.txt
Теперь о том, что всё это значит.
Через команду chattr можно добавить и удалить дополнительные атрибуты. Какие же они бывают?

Usage: chattr [-RVf] [-+=AacDdeijsSu] [-v version] files...
  • i: Файл с установленным атрибутом 'i' становится полностью не модифицируемым (недосягаемым): он не может быть удален или переименован, никакие ссылки не могут быть созданы на этот файл и никакие данные не могут быть записаны в него. Только суперпользователь или процесс, обладающий возможностью CAP_LINUX_IMMUTABLE может установить или очистить такой атрибут.
    root@terminal:/tmp# chattr +i text.txt 
    root@terminal:/tmp# lsattr text.txt 
    ----i------------e- text.txt
    root@terminal:/tmp# echo test >> text.txt 
    bash: text.txt: Отказано в доступе
    root@terminal:/tmp# chattr -i text.txt 
    root@terminal:/tmp# echo test >> text.txt 
  • j: Для файла с установленным атрибутом 'j' все его данные прежде, чем быть записанными непосредственно в файл, сохраняются в журнал, правда, это происходит в том случае, если файловая система смонтирована с опциями "data=ordered" или "data=writeback". Когда файловая система смонтирована с опцией "data=journal" все данные файла уже журналируются и этот атрибут не имеет никакого эффекта. Только суперпользователь или процесс, обладающий возможностью CAP_SYS_RESOURCE, может установить или очистить этот атрибут.
  • s: при удалении файла с установленным атрибутом 's' выполняется обнуление его блоков и запись их обратно на диск.
  • S: модифицируя файл с атрибутом `S', внесенные изменения синхронно записываются на диск; использование этого атрибута эквивалентно применению опции монтирования `sync' к подмножеству расположенных файлов.
  • u: при удалении файла с атрибутом 'u', его содержимое сохраняется (остается не тронутым) на диске. Это позволяет пользователю в последующем восстановить такой файл.
  • d: указывает на то, что не нужно делать резервные копии файла. Файл будет проигнорирован командой dump.
  • а: указывает, что в файл можно добавлять информацию, но нельзя удалять.
  • A: не обновлять время доступа к объекту. Теоретически установка этого атрибута должна повысить производительность файловой системы и соответственно системы в целом.
  • c: файл использующий этот атрибут автоматически сжимается ядром при записи на диск. При чтении с диска он автоматически будет распакован.
  • D: при изменении директории с установленным флагом все изменения синхронно записываются на диск.

Дополнительно можно почитать тут https://rstcenter.com/forum/35191-advanced-file-permissions-extended-attributes.rst

четвер, 9 серпня 2012 р.

Как использовать Tor в Debian GNU/Linux: Google Chrome

Однако же отвык я от огненной лисы и её клонов, но чертовски привык к Google Chrome, а потому возник вопрос: "Как использовать Tor в Google Chrome?". Как использовать Tor с одним из свободных клонов огеннной лисы было написано в предыдущей заметке.

Устанавливаем Tor. Открываем настройки Google Chrome, открываем расширенные настройки, находим кнопочку "Изменить настройки прокси-сервера..." и жмём её. В появившемся окне выбираем пункт которые позволяет вбить настройки прокси-сервера вручную (Use manually specified proxy configuration), в пункте SOCKS Proxy прописываем ip-адрес 127.0.0.1 и порт 9050.

Нажимаем "Ok". Ура, мы заtorены!

Если хотите ходить в "эти ваши Интернеты" по разным правилам, где используя Tor, а где нет, то можете установить в Google Chrome плагин Proxy Switchy!, очень гибкий в настройке плагин, позволяет использовать несколько наборов proxy-серверов.

Кроме всего прочего, всегда остаётся возможность использовать "родной" TorBrowser.

Как использовать Tor в Debian GNU/Linux

Для начала, что такое Tor? Wikipedia описывает этот сервис следующим образом:
Tor (сокр. от англ. The Onion Router) — свободное программное обеспечение для реализации второго поколения так называемой «луковой маршрутизации». Это система, позволяющая устанавливать анонимное сетевое соединение, защищённое от прослушивания. Рассматривается как анонимная сеть, предоставляющая передачу данных в зашифрованном виде. Написана преимущественно на языке программирования Си и на конец 2010 года имеет более 100 000 строк программного кода.
С помощью Tor пользователи могут сохранять анонимность при посещении веб-сайтов, публикации материалов, отправке сообщений и при работе с другими приложениями, использующими протокол TCP. Безопасность трафика обеспечивается за счёт использования распределённой сети серверов (нод — «узлов»), называемых «многослойными маршрутизаторами» (onion routers). Технология Tor также обеспечивает защиту от механизмов анализа трафика, которые ставят под угрозу не только анонимность пользователя, но также конфиденциальность бизнес-данных, деловых контактов и др. Tor оперирует сетевыми уровнями onion-маршрутизаторов, позволяя обеспечивать анонимные исходящие соединения и анонимные скрытые службы.
Итак, хоть в репозитории и есть Tor, но подключим его родной репозиторий:
Внимание! В Вашем случае дистрибутив может оказаться на sid ;)
# echo "deb http://deb.torproject.org/torproject.org sid main" /etc/apt/sources.list.d/tor.list
Далее:
$ gpg --keyserver keys.gnupg.net --recv 886DDD89
$ gpg --export A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89 | sudo apt-key add -
$ sudo aptitude update
$ sudo aptitude install deb.torproject.org-keyring
$ sudo aptitude install tor
Ну вот, теперь tor нас слушает на порту 9050 по адресу 127.0.0.1. При желании можете дать доступ к своему tor'у участникам своей сети, но это, как говорится, на вкус и цвет.
Однако установить tor мало, надо ещё найти браузер или расширение к своему любимому браузеру которое умело бы именно через tor выходить в Сеть. Таковое имеется, установим его:
$ sudo aptitude install iceweasel-torbutton
iceweasel это ни что иное как свободный firefox ;) iceweasel-torbutton. это расширение к этому чудному браузеру. Посмотреть и настроить это расширение можно запустив браузер и зайдя в Инструменты -> Дополнения (можно просто нажать Ctrl+Shift +A):
 Заходим в настройки Torbutton:



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


Удачи, камрады ;)

Простой TCL скрипт на Cisco

Предположим, что мы хотим пропинговать по порядку несколько адресов. Конечно можно отдельно для каждого адреса вызвать ping и посмотреть результаты, а можно сделать так, предварительно переключившись в режим tclsh:
foreach address {
8.8.8.8
8.8.4.4
212.90.160.2
212.90.160.8
} { puts [ exec "ping $address" ] }
Результат будет выглядеть примерно так:
router#tclsh
router(tcl)#foreach address {
+>8.8.8.8
+>8.8.4.4
+>212.90.160.2
+>212.90.160.8
+>} { puts [ exec "ping $address" ] }

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 8.8.8.8, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 36/36/40 ms

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 8.8.4.4, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 36/36/40 ms

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 212.90.160.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/1 ms

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 212.90.160.8, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/4 ms

router(tcl)#

середа, 25 липня 2012 р.

Perl: сохраняем хэш (hash) в XML, считываем XML в хэш (hash)

Используем для этого модуль XML::Simple. Для дампа хэша используем Data::Dumper.
#!/usr/bin/perl

use strict;
use warnings;
use XML::Simple;
use Data::Dumper;
$Data::Dumper::Indent = 1;
$Data::Dumper::Terse = 1;
Имя XML-файла куда будем сохранять наш хэш:
my $conf_xml = 'serpol.xml';
Пример многоуровневого хэша:
my $routers = {
    "router0" => {
        user    => 'user0',
        password=> 'pass0',
        enable  => 'enab0',
        edgedev => {
            'switch00' => { type => "Cisco" },
            'switch01' => { type => "ExtremeNetworks" },
            'dslam0' => { type => "Alcatel 7324" }
        }
    },
    "router1" => {
        user    => 'user1',
        password=> 'pass1',
        enable  => 'enab1',
        edgedev => {
            'switch10' => { type => "Cisco" }
        }
    }
};
Вот таким вот образом мы сохраняем данные в XML-файл:
my $xml_os = XML::Simple->new();
open my $fh, '>:encoding(utf8)', $conf_xml or die "open($conf_xml): $!";
my $xml = $xml_os->XMLout( $routers,
    OutputFile => $fh,
    RootName => 'serpol',
    AttrIndent => 0,
    NoAttr => 0
);
close $fh;
undef $xml_os;
Вот, что у нас получилось:
<serpol>
  <router0 enable="enab0" password="pass0" user="user0">
    <edgedev name="dslam0" type="Alcatel 7324" />
    <edgedev name="switch00" type="Cisco" />
    <edgedev name="switch01" type="ExtremeNetworks" />
  </router0>
  <router1 enable="enab1" password="pass1" user="user1">
    <edgedev name="switch10" type="Cisco" />
  </router1>
</serpol>
А теперь прочитаем назад этот XML-файл в хэш:
my $xml_is = XML::Simple->new();
my $hash = $xml_is->XMLin( $conf_xml );
print Dumper( $hash );
undef $xml_is;
Дамп восстановленного хэша:
{
  'router1' => {
    'enable' => 'enab1',
    'password' => 'pass1',
    'user' => 'user1',
    'edgedev' => {
      'name' => 'switch10',
      'type' => 'Cisco'
    }
  },
  'router0' => {
    'enable' => 'enab0',
    'password' => 'pass0',
    'user' => 'user0',
    'edgedev' => {
      'dslam0' => {
        'type' => 'Alcatel 7324'
      },
      'switch01' => {
        'type' => 'ExtremeNetworks'
      },
      'switch00' => {
        'type' => 'Cisco'
      }
    }
  }
};

вівторок, 24 липня 2012 р.

Аналог iperf в Cisco

Запускаем приёмник. На маршрутизаторе Cisco необходимо выполнить нижеописанные команды. Значения в скобках — значения по умолчанию, которые вступают в силу по нажатию ENTER. В настройках можно изменить окно TCP для имититации работы рабочих станций.
#ttcp
transmit or receive [receive]:
buflen [8192]:
bufalign [16384]:
bufoffset [0]:
port [5001]:
sinkmode [y]:
rcvwndsize [2144]: 4096
show tcp information at end [n]:
ttcp-r: buflen=8192, nbuf=2048, align=16384/0, port=5001, rcvwndsize=4096 tcp

Теперь необходимо запустить передатчик:
#ttcp
transmit or receive [receive]: trans
Target IP address: 192.168.0.254
buflen [8192]:
nbuf [2048]: 50
bufalign [16384]:
bufoffset [0]:
port [5001]:
sinkmode [y]:
buffering on writes [y]:
show tcp information at end [n]:
ttcp-t: buflen=8192, nbuf=50, align=16384/0, port=5001 tcp -> 192.168.0.254

Когда соединение установлено, приемник выводит в строке состояния сообщение о том, что связь установлена. После завершения передачи, приемник выводит статистику тестирования, которая показывает количество переданных данных, время передачи, рассчитанную пропускную способность, количество операций ввода/вывода для чтения данных:
ttcp-r: accept from 192.168.0.253 (mss 1460, sndwnd 2144, rcvwnd 4096)
ttcp-r: 409600 bytes in 61064 ms (61.064 real seconds) (~5 kB/sec) +++
ttcp-r: 301 I/O calls ttcp-r: 0 sleeps (0 ms total) (0 ms average)
Аналогичным образом передатчик делает вывод в строке состояния, когда он подключается к получателю. Когда передача завершена, передатчик показывает свою статистику:
ttcp-t: connect (mss 1460, sndwnd 4096, rcvwnd 2144)
ttcp-t: 409600 bytes in 60504 ms (60.504 real seconds) (~5 kB/sec) +++
ttcp-t: 50 I/O calls
ttcp-t: 0 sleeps (0 ms total) (0 ms average)
Дополнительно можно почитать тут http://worm.org.ua/2010/12/ttcp-iperf-cisco/