iptables: фильтрация по юзерам

Задача: необходимо ограничить доступ в сеть определённым пользователям.

Всё это делается очень просто с помощью iptables и его модуля owner, который позволяет проверять от кого(какого uid пользователя) ушёл пакет

Например запрещаем весь исходящий траффик пользователю 1001 везде, кроме локальной сети 192.168.0.0/24:
[cc lang="bash" line_numbers="false"]
# iptables -A OUTPUT -m owner --uid-owner 1001 ! -s 192.168.0.0/24 -j REJECT
[/cc]
Думаю понятно, что посмотреть соответствия имя пользователя - uid можно в /etc/passwd, например cat /etc/passwd
Подробнее, что умеет owner и iptables в целом можно найти тут

Это может использоваться как защита детей от интернета.

Очень важно чтоб модуль ядра owner был собран в ядре, в моём случае на генте пришлось пересобирать. Ошибка в этом случае такая:iptables v1.4.4: Couldn't load match `owner':/lib/xtables/libipt_owner.so: cannot open shared object file

А серверов всё мало

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

Read more

Смена дефолтной jvm в debian

Чтоб изменить виртуальную машину ява(jvm) по умолчанию можно воспользоваться утилиткой update-alternatives

У меня вот так:

update-alternatives --config java
Есть 4 вариантов для альтернативы java (предоставляет /usr/bin/java).

  Выбор   Путь                                  Приор Состояние
------------------------------------------------------------
  0            /usr/lib/jvm/java-6-openjdk/jre/bin/java   1061      автоматический режим
  1            /usr/bin/gij-4.3                           43        ручной режим
  2            /usr/lib/jvm/java-6-openjdk/jre/bin/java   1061      ручной режим
* 3            /usr/lib/jvm/java-6-sun/jre/bin/java       63        ручной режим
  4            /usr/lib/jvm/java-gcj/jre/bin/java         1042      ручной режим

Read more

foreach: признак последней итерации

[cc lang="php"]
// пусть есть массив $spots, c любмыми типами ключей
$last_key = end(array_keys($spots));
foreach($spots as $k => $spot) {
$isLast = ($k === $last_key);
....
// что то делаем
}
[/cc]
Нужно просто получить последний ключ массива а потом сравнивать очередной ключ при каждой итерации. Можно конечно использовать $last_key = count($spots) - 1; но в случае ассоциативного массива это бы не сработало.

Расширяем возможности тачпада

Добавив опций для настройки тачпада в конфиг X-сервера получим:

  • Правая полоска тачпада - вертикальная прокрутка одним пальцем
  • Нижняя полоса прокрудки - вертикальная прокрутка одним пальцем
  • Хлопок 2мя пальцами - эмуляция нажатия правой кнопки мыши
  • Движение 2х пальцев по тачпаду в любом месте - вертикальная прокрутка
  • Хлопок 3мя пальцами - эмуляция нажатия средней кнопки(колеса) мыши
  • Круговая прокрутка текста как на ipod-е, начиная с левого верхнего угла

Read more