LINUX.ORG.RU

Сообщения gaga

 

Всегда иметь возможность зайти по ssh

Как известно, с серверами случается всякое. Иногда они даже свопятся или как-то по-другому насилуют диск, и тогда на них бывает трудно зайти по ssh, он просто не отвечает, подвисая на ожидании ввода-вывода. Как этого избежать? Поможет ли повышение nice и ionice для sshd? Обязательно ли использовать штуки вроде memlockd? Мне кажется так как-то не энтерпрайзненько...

 ,

gaga
()

MAC-адреса портов в team'е в RHEL

Всем привет. Собственно, должно быть очевидно, но видимо не хватает знаний сетей.

Есть team из нескольких сетевух в редхате 7 в режиме round-robin. teamd при поднятии интрерфейса team0 выставляет всем портам один и тот же MAC-адрес. Соответственно, свич видит, что на разные порты летят кадры с одинаковыми маками и ругается на это. В мане не нашел способ задать разные MACи для раунд-робин режима.

Есть ли способ этого избежать в таком режиме, или только LACP/active-backup?

 , , ,

gaga
()

DNS-панель

Товарищи, а кто может посоветовать не шибко навороченную панель для управления ДНС-серверами? Доменов относительно немного, в пределах тысячи. Основные требования:

  • индивидуальный контроль доступа к зонам для пользователей
  • не комбайн (модуль к webmin не пойдет)
  • в активном состоянии
  • желательно чтобы могло управлять BIND9

Сейчас используем proBIND, но оно умерло и не умеет в права доступа. Из того, что нагуглил, все тоже какое-то наколеночное и неживое. Есть ли что-нибудь качественное из опенсорса в этой сфере? Ну или хоть проприетарщина, если совсем все плохо...

 , ,

gaga
()

Можно ли избежать дублирования кодов ошибок в С?

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

В порядке дискуссии, может вообще стоит перейти на более продвинутую обработку ошибок, вроде метода OpenSSL, setjmp/longjmp или еще чего-нибудь?

gaga
()

Кодировка имен файлов в SFTP сервере

Есть следующая проблема: некоторые офтопиковые клиенты почему считают, что сервер отдает имена файлов в какой-то странной кодировке (скорей всего автодетектит 1252). Видимо, по этой причине не может скачать файлы, в которых есть не-ascii символы (умляуты и т.п.). Кусок лога.

Можно ли как-то на стороне сервера заставить sftp-server отдавать имена в другой кодировке? И почему вообще кодировка детектится неверно? В манах ничего не нашел. На сервере локаль sv_SE.utf8.

Ни локаль сервера ни настройки клиента менять нельзя, к сожалению.

 , ,

gaga
()

tracepath показывает ответ не от того шлюза

Всем привет. Возможно, вопрос дебильный, но: разве не должен tracepath вторым хопом показывать шлюз, настроенный в таблице маршрутизиции? У меня настроен шлюз .249, а ответ приходит от .248, при том что про .248 вообще в маршрутах ничего нет.

[root@server root]# ip route get 192.168.100.156
192.168.100.156 via 192.168.54.249 dev eth0  src 192.168.54.36
    cache  mtu 1500 advmss 1460
[root@server root]# tracepath 192.168.100.156
 1?: [LOCALHOST]     pmtu 1500
 1:  192.168.54.248 (192.168.54.248)                        1.687ms
 2:  no reply
 2:  192.168.54.248 (192.168.54.248)                      asymm  1 2006.398ms !H
     Resume: pmtu 1500
[root@server root]# ip route | grep 248
[root@server root]# ip route | grep default
default via 192.168.54.254 dev eth0
gaga
()

Почему все ушли от юникс-вея в части «все есть файл»?

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

Нельзя сказать, что только пользователь пупкин может посылать пакеты по сети. А если бы сокет открывался каким-нибудь ioctl'ом на девайсе /dev/tcp/socket, который бы создавал файл /dev/tcp/sockets/443-192.168.1.10, то никаких проблем бы не было. То же со звуком, видео, вводом и т.п.

Почему все забили на такую удобную и простую абстракцию и кинулись делать свой апи?

inb4 Plan9

UPD: понятно, что нельзя все реализовать через файлы. Тот же вывод на экран не сделать через универсальный write(), но контроль доступа, управление и пр. некритичные к производительности вещи вроде как делаются на ура.

 , , ,

gaga
()

Пароль на вызов приложений

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

edit: хочется готовый апп, но если такого нет, то хотя бы есть ли соответствующие хуки в ведроиде (или как там это называется у них)

 ,

gaga
()

Почему все верят в анонимность Тора?

Всем известно, что сам проект Tor на 80% финансируется правительством США. Сейчас в сети около 3500 узлов, что весьма не много. Что мешает большей части из этих узлов быть подконтрольными тому или иному большому брату (NSA и т.п.), давая ему 99% шанс на деанонимизацию пользователя? Или тор уже не предполагает использования в качестве «абсолютного» анонимайзера, позволяя спрятаться только от неправительственных и не особо влиятельных лиц/организаций?

 , ,

gaga
()

rm: cannot remove `dir': Is a directory

Чую, что какая-то страшная глупость, но что-то не придумывается. rm -f dir/* на пустом каталоге работает нормально (т.е. ничего не делает и не выдает ошибок) на локальной ФС, а на смонтированной шаре выдает сабжевую ошибку. Монтирутся с дефолтными опциями, ничего путного в мане mount.cifs не нашел. Двойные кавычки не помогают.

(/backup/nas/ - самба-шара)
[root@server ~]# mkdir /backup/nas/dir
[root@server ~]# touch /backup/nas/dir/file1
[root@server ~]# rm -f /backup/nas/dir/*
[root@server ~]# rm -f /backup/nas/dir/*
rm: cannot remove `/backup/nas/dir/*': Is a directory
[root@server ~]# mkdir /root/dir
[root@server ~]# touch /root/dir/file1
[root@server ~]# rm -f /root/dir/*
[root@server ~]# rm -f /root/dir/*
[root@server ~]# 

Кто виноват и что делать?

 ,

gaga
()

Что в ядре жрет цру?

mpstat говорит, что ядро жрет много времени цпу:

01:28:15 PM  CPU   %user   %nice %system %iowait    %irq   %soft   %idle    intr/s
01:28:16 PM  all   37.00    0.00   56.50    0.00    0.00    0.00    6.50   1369.00
Как можно посмотреть, что именно в ядре жрет проц? Какой поток или что-нибудь еще? В top все ядерные потоки используют 0%.

 , ,

gaga
()

Бэкап линуксовой машины на samba-шару

Приспичило делать бэкапы линуксовой машины на smb-шару. На данный момент для бэкапов я пользуюсь rsnapshot, но оно требует поддержки хардлинков и прочих позиксовых фич на целевой фс. Чем и как можно делать инкрементальные бэкапы на smb-шару? rdiff-backup и backupPC пока завести также не удалось, сыпят ошибками.

 ,

gaga
()

Жалобы в ФАС на M$

Я думаю, эту тему уже не раз поднимали, но что-то не гуглится конкретных дел: подавалась ли кем-нибудь когда-нибудь жалоба в ФАС на то, что ОС вероятного противника предустановлена на большей части продаваемых компьютеров? Если да, то с каким результатом, если нет, то почему?

(UPDATE: может, выступим с инициативой? ;) )

 ,

gaga
()

Кросплатформенный «jail»

Собственно, задача стоит такая: есть зоопарк систем (linux, solaris, hp-ux, freebsd etc.), на которых нельзя ничего устанавливать в /, но надо запустить Puppet. Т.е. надо установить его в изолированное окружение, наподобие jail. Большим бонусом будет единообразие установки и обновления.

Из универсальных решений пока в голову пришло использовать Gentoo Prefix, куда потом воткнуть Puppet. Это позволит даже обновлять Puppet пакетным менеджером. Но, во-первых, расходуется куча места, а во-вторых надо будет много чего править ручками и конпелировать.

Может, есть решения поизящней?

 ,

gaga
()

Так ли нужна случайная соль?

Сразу оговорюсь, что я не ахти какой спец по безопасности.

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

Какая принципиальная разница, между

sha1($random_salt . sha1($password))
и, cкажем,
sha1(sha1($username . $email . $time_of_registration) . sha1($password))
? Кто-то считает, что взломщик будет генерить таблицу по такой хренотени, причем сделает это заранее (потому что генерить ее очень долго)? Или есть еще какие-то причины?

 ,

gaga
()

Мат. плата для домашнего мини-сервера

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

Соответственно, требования:

  • достаточно быстрый, чтобы держать 50Мбит по L2TP
  • пассивное охлаждение
  • возможность подключить как минимум 4 (лучше 6) винтов
  • как минимум один свободный слот pci-e
  • как минимум 2 ethernet
  • не дороже 10к деревянных вместе с цпу и сата-контроллером

Желательно, но не критично:

  • возможность смотреть hd-видео и наличие соответствующих выходов
  • какая-нибудь встроенная ви-фи карточка, которая может работать как точка доступа
  • mini-itx

В принципе, предложений такого типа довольно много, можно даже найти на яндекс.маркете. Но я бы хотел спросить следующее: есть ли у кого опыт сборки подобной хрени и рекомендации? Не знает ли кто-нибудь недорогого решения в «максимальной» комплектации, т.е. CPU + 4xSATA +2xLAN + WI-FI + IrDa + OnBoard video + ... ?

 

gaga
()

xmodmap перестал работать после обновления

У меня всегда был заремаплен CapsLock на Control. Делалось это в файле ~/.Xmodmap так:

remove Lock = Caps_Lock
remove Control = Control_L
keysym Caps_Lock = Control_L
add Lock = Caps_Lock
add Control = Control_L
и работало уже несколько лет без каких-либо проблем. Сегодня обнаружил, что капс снова работает как капс и попытка выполнить xmodmap ~/.Xmodmap выдает следующее:
gaga@gaga:~$ xmodmap ~/.Xmodmap 
xmodmap:  /home/gaga/.Xmodmap:1:  bad keysym in remove modifier list 'Caps_Lock', no corresponding keycodes
xmodmap:  /home/gaga/.Xmodmap:3:  bad keysym target keysym 'Caps_Lock', no corresponding keycodes
xmodmap:  2 errors encountered, aborting.
Пример из мана, скопипащенный один в один, тоже не работает. С чего это взялось и как с этим бороться?

 ,

gaga
()

[C++] Неинтегральная константа-член класса в хедере

Хочу так:

class SomeClass 
{
   ...
   static const double A;
};
...
const double SomeClass::A = 0.01;
Это, естественно, работает, когда объявления и реализация разнесены по разным файлам. Но у меня класс шаблонный, целиком определен в хедере и поэтому при линковке генерится ошибка multiple definition of SomeClass::A, потому что хедер включается в несколько файлов. Собственно, как быть? Отдельный файл специально под это дело заводить не хочется.

 

gaga
()

[web] Визуализация графа

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

Проблемы тут две с половиной: 1. Я совсем не умею в веб-разработку, умею только в сишечки и прочие жабы; 2. Граф может довольно большим и может не влезать на экран; 2.5. Клиентские машины не самые топовые и подгрузить весь граф в память, скорее всего, будет проблематично без тормозов. Да и сервер фейсбуковским не чета.

Как это можно сделать? Подгружать узлы порциями и лепить в svg-картинку? Использовать canvas? Чисто на js/css без этих новомодных html5-примочек? Просто генерить на сервере плитку из картинок, как это делается в яндекс-картах (сервер будет сильно загружен)?

 

gaga
()

[многопоточность] Двухуровневые блокировки

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

int log (int priority, Facility *f, const char *msg, ...)
{
   pthread_mutex_lock (&f->mutex);
   ... // записать сообщение
   pthread_mutex_unlock (&f->mutex);
   ...
}
Хочется теперь добавить возможность вручную получить в клиентском коде блокировку записи в лог на некоторое время, чтобы иметь возможность добавить несколько сообщений, которые гарантированно идут подряд:
log_write_lock (f);
  log (LOG_INFO, f, "несколько");
  log (LOG_INFO, f, "сообщений");
  log (LOG_INFO, f, "подряд");
log_write_unlock (f);
Как бы это получше сделать? Очевидный вариант - использовать мьютекс с атрибутом PTHREAD_MUTEX_ERRORCHECK и дополнительный флаг manually_locked, и снимать блокировку, только если этот флаг не установлен. При этом все вызовы pthread_mutex_lock до снятия вручную блокировки будут просто возвращать EDEADLK и все ок. Проблема в том, что такие мьютексы тормозные и непереносимые.

 

gaga
()

RSS подписка на новые темы