CEX.io

среда, 27 апреля 2011 г.

журнал ПРОграммист (программирование и не только)

Интересный журнал: http://procoder.info/

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

Рекомендую! ;)

архив номеров: http://procoder.info/index.php/dl/issues

вторник, 26 апреля 2011 г.

Мультиплатформенный менеджер паролей LastPass

Описание:
     Плагин для браузера

Особенности:
  • Простота (Вход одним щелчком)
  • Везде (Автоматическая синхронизация, из любого места)
  • Защита (От фишинга, мошенничества, вредоносных программ)
  • Безопасность (Шифрование, мастер пароль, локальное хранение данных)
  • Бесплатен (На всех компьютерах)
  • Кросплатформенность (Mac, Windows, Linux)

Поддерживаемые OS:
  • Windows
  • Linux
  • Mac OS
  • webOS
  • iOS
  • Symbian OS
  • Android OS
  • Windows Phone 7
  • BlackBerry
Поддерживаемые браузеры:
  • Internet Explorer
  • Firefox
  • Safari
  • Chrome
  • Opera
 http://lastpass.com/

воскресенье, 24 апреля 2011 г.

wrapper с дополнительными возможностями (chroot/jail,clearenv,unset_env,set_env,chdir etc.), на основе lighttpd wrapper

В сети я отыскал несколько настраиваемых wrapper:
такие как: exec-wrapper, execwrap
  • первый это простой генератор настраиваемой "обертки(wrapper)", а именно выполняемого файла с возможностью настройки переменных окружения и установки прав SUID, SGID на выполняемый файл. возможность chroot/jail тут отсутствует.
  • второй это "обертка(wrapper)" для lighttpd web сервера. Очень гибкая версия с дополнительными проверками прав при запуске, но к сожалению настройка переменных окружения при запуске отсутствует. Так же отсутствует chroot/jail.
Мне не подошел ни первый вариант, ни второй. Пришлось написать свою версию "обертки(wrapper)" объединив и улучшив эти два варианта, добавив возможность chroot. За основу взят второй вариант, patch для которого приведен ниже. Из первого была взята только идея, но реализацию пришлось поменять, для лучшей переносимости.

создадим папку проекта:
mkdir jail-wrap; cd jail-wrap
в папке создадим следующие файлы:

execwrap.patch:


configure.ac:


Makefile.am:


build.sh:


Выполним следующие команды:
chmod 755 build.sh
./build.sh

результатом работы будет файл конфигурации:
configure

пример использования:
./configure --prefix=/usr \
    --program-prefix=test- --program-suffix=2 \
    --enable-chroot \
    --with-parent-uid=100 \
    SET_ENV=test1=1\\ntest2=2 \
    UNSET_ENV=testn1=1\\ntestn2=2

где SET_ENV,UNSET_ENV список переменных,
которые нужно установить/очистоить для разделения
переменных используется символ "\\n"

либо пример номер 2:
./configure --prefix=/usr \
    --program-prefix=whois- --program-suffix=2 \
    --with-parent-uid=100 --enable-chroot \
    SET_ENV=test1 \
    UNSET_ENV=test1

где SET_ENV,UNSET_ENV имена файлов, из которых будут браться
списки переменных. По одной в строке name=value.

и наконец выполним:
make
make install-strip

Скачать все файлы (вариант 1)
Скачать все файлы (вариант 2)

воскресенье, 17 апреля 2011 г.

Сканирование портов онлайн

сканировать сеть на уязвимости можно
этим сетевым инструментом:
http://www.t1shopper.com/tools/port-scan/

Документация по Linux Kernel (программирование)

При программировании в Linux, полезно использовать эту
online документацию: http://kernel.org/doc/man-pages/

аналог MSDN только, для Linux ;)

также тут можно получить последнюю версию ядра.

Права доступа в Linux (chmod/chown)

Каждый файл или папка в Linux имеют свои права доступа.

Есть 3 типа прав:
     чтение(r),запись(w),выполнение(x)

Права определяются для 3-х типов пользователей:
     владельца(u), группы(g), всех других (o)

итак права каждого файла, это 9 бит информации (3 типа прав * 3 типа пользователей), соответственно каждый бит может быть установлен (=1) доступ разрешен, или сброшен(=0) доступ запрещен.

при назначении прав принято использовать восьмеричную(octal) систему счисления.

текстовое представление прав(10 символов):
      - rwxr- - r - -
      0123456789

символ в позиции 0:
      "-" -  обычный файл, "d" - папка, "l" - ссылка

символы в позиции 1-3:
      "rwx" - права владельца

символы в позиции 4-6:
      "r - -" - права для группы


символы в позиции 7-9:
      "r - -" - права для всех остальных

таблица для определения прав:
                                       
восьмеричноетекстовоедвоичноеописание
0 - - - 000 Все типы доступа запрещены
1 - - x 001 Разрешено выполнение
2 - w- 010 Разрешена запись
3 - wx 011 Разрешена запись и выполнение
4 r - - 100 Разрешено чтение
5 r - x 101 Разрешено чтение и выполнение
6 r w- 110 Разрешено чтение и запись
7 rwx 111 Все типы доступа разрешены

Как видно из таблицы, права легко вычисляются
простым суммированием. 1=выполнение, 2=запись, 4=чтение.
например требуется выполнение(1) и чтение(4), получаем 1+4=5

пример 644:
      - владелец(u) чтение и запись
      - группа(g) только чтение
      - другие(o) только чтение

пример 755:
      - владелец(u) все права
      - группа(g) чтение и выполнение
      - другие(o) чтение и выполнение

в языках программирования например таких как C,
к правам добавляют 0 в начале каждого числа, что означает, что число восьмеричное, т.е. пишут 0644 вместо 644. При изменении прав с коммандной строки как правило этого не требуется.

Четырехзначное представление прав(4755), дополнительные права
биты SUID, SGID, sticky:
  • SUID или setuid: изменить "User ID" во время выполнения
  • SGID или setgid: изменить "Group ID" во время выполнения
  • sticky бит: запрещает удаление для всех пользователей кроме владельца. Ранее бит означал "держаться" в памяти после завершения процесса

Таблица. Числовое представление дополнительных прав:
                                       
восьмеричноедвоичноеописание
0 000 Нет дополнительных прав
1 001 Установлен sticky бит
2 010 Установлен setgid бит
3 011 Установлены sticky и setgid биты
4 100 Установлен setuid бит
5 101 Установлены setuid и sticky биты
6 110 Установлены setuid и setgid биты
7 111 Все дополнительные права разрешены

Текстовое представление дополнительных бит:
дополнительные биты обозначаются следующими символами:
      "S","s" - SUID, SGID
      "T","t" - sticky бит
позиция этих бит, совпадает с позициями (3,6,9) прав выполнения "x"
впри этом, если прав на выполнение нет используется "верхний регистр" т.е. большие символы. Если права на выполнение установлены используются "нижний регистр" т.е. маленькие символы.

примеры:

установлен SUID:
- r w  s -  -  -  -  -  -   установлены биты SUID и выполнение для владельца
- r  -  S -  -  -  -  -  -   установлен бит SUID, не установлен бит выполнения

установлен SGID:
- r w x r w s  -  -  -   установлены биты SGID и выполнение для группы
- r w x r -  S  -  -  -   установлен бит SGID, не уст. выполнение для группы

установлен sticky бит:
- r w x r w x r w t   установлены биты sticky и выполнение для других
- r w x r w x r  - T   установлен sticky бит, но не уст. выполнение для других

отличия действия прав, при установке на файлы и папки:
                             
правафайлыпапки
чтение чтение содержимогополучение списка файлов
запись запись содержимогоизменение списка файлов
(создание,удаление,переименование)
выполнениефайл можно выполнитьпользователь или процесс, может сделать папку "текущей/рабочей"
SUID Установить "User ID" при выполнении Перекрыть идентификатор пользователя при создании файла/папки (использовать идентификатор владельца корневой папки)
SGID Установить "Group ID" при выполнении Перекрыть идентификатор группы при создании файла/папки (использовать идентификатор группы корневой папки)
sticky запретить удаление всем, кроме владельца запретить удаление всем, кроме владельца

команда изменеия прав chmod:
    chmod [-R] права файл/папка

"-R" применить права рекурсивно ко всем файлам и подпапкам

примеры:
    chmod -R 755 folder/
    chmod 644 file
    и т.д.

есть возможность менять права не целиком, а лишь добавлять или отменять права только определенным группам пользователей
используя символы вместо восьмеричных чисел.
   "u" - пользователь/владелец
   "g" - группа пользователей
   "o" - остальные пользователи
   "a" - все группы пользователей

формат прав [ugoa][[+-=][perms], ...

примеры:
   chmod -R a+x folder/  выполнение для всех групп рекурсивно
   chmod a+rx file          чтение и выполнение для всех
   chmod u+rx,g-rx file   добавить чтение и выполнение для владельца, и
                                      отозвать права для группы
   chmod a+r,o= file       добавить чтение для всех типов групп и отозвать
                                      все права у всех других пользователей

команда изменения владельца chown:

chown [-R] владелец:группа файл/папка

примеры:
   chown -R 0:0 folder/  установить владельца/группу = root рекурсивно
   chown myuser:mygroup file установить myuser/mygroup для файла

PS:
    источник