Как побороть баг в newusers

Первый раз в жизни приключилась необходимость, экспортировать большое количество пользователей из одного дистрибутива, в другой. Сперва думал, как и чего наколхозить для достижения истинного дзена, но нашел утилиту newusers (нашел — громко сказано, она всегда рядом была, в пакете shadow) и возрадовался.

Прога умеет создавать пользователей руководствуясь списком в текстовом файле, где каждая строка имеет вид:

user_name:clear_text_password:number_uid:number_gid:text_comment:home_dir:user_shell

где:

  1. user_name — это имя пользователя (латиницей);
  2. clear_text_password — нешифрованный пароль;
  3. number_uid — цифровой идентификатор пользователя (должен быть больше UID_MIN и меньше UID_MAX в файле /etc/login.defs) ;
  4. number_gid — цифровой идентификатор группы (должен быть больше GID_MIN и меньше GID_MAX в файле /etc/login.defs) ;
  5. text_comment — Комментарий, или фио пользователя (можно кириллицей);
  6. home_dir — домашняя директория (скрипт создаст ее сам);
  7. user_shell — командная оболочка или например /usr/sbin/nologin, если в шелл пользователю нельзя;

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


root@server:/home/serp# newusers ./userlist.txt
*** Error in `newusers': free(): invalid next size (fast): 0x00000000012b23d0 ***
Aborted (core dumped)

Читать

Ошибка Apt BADSIG и кэширующий прокси сервер

На одном из серверов приключилась бесячая ошибка APT BADSIG. Стандартное заклинание не сработало. Перебрал вариантов кучу, в частности apt-cacher-cleanup.pl не работал по причине

Undefined subroutine &main::inet_aton called at /usr/share/apt-cacher/lib/apt-cacher.pl line 221.

Совершенно очевидно, что проблема в закешированном битом файле, что подтверждалось наличием 2 файлов в /var/lib/apt/lists/partial, причем, если их удалить, и сделать aptitude update, они снова появятся.

Простого пути сбросить кэш апт кэшера я не нашел.

В результате утомило меня это дело, и я просто снес его рабочие файлы.

/etc/init.d/apt-cacher stop
rm -R /var/cache/apt-cacher/*
mkdir -p /var/cache/apt-cacher/{headers,import,packages,private}
/etc/init.d/apt-cacher start

в результате чего, проблема волшебным образом решилась.

Может пригодится кому? 😉

Vipnet hw1000 factory defaults

Возникла вот необходимость сбросить на заводские настройки vipnet hw1000. Техподдержка протухла давно, спросить не у кого, но решение нашлось достаточно быстро.

Не секрет, что vipnet работает на модифицированном linux, следовательно, делаем загрузочную флешку с любимым дистром, загружаемся с нее.

root у них находится на /dev/sda2, boot на /dev/sda1, монтируем их куда удобно. Обратите внимание, что root отформатирован в reiserfs. Затем удаляем все из root. А потом распаковываем boot/fs_main.tgz в root. В архиве и находится искомый factory defaults.

Успех в планировании

Старый знакомый прислал ссылку на забавный пост: https://medium.com/@ivlad/, и это было бы очень смешно, если б не было так грустно.

Вот я себе не представляю, инженера который пытается лог скажем в пару гигабайт длинной (а учитывая, что там все в csv, он примерно такой у них и получался) запихать в Excel с целью сделать выборку для отчета, даже Билл Гейтс не на столько верит в свой продукт, как тот индивид.

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

Странное поведение приложения mail.ru под adroid

Пару дней назад случилось странное. С нашего почтового сервера (около 100 ящиков) улетело за 2 дня примерно 80 гигабайт исходящего траффика. Т.к. интернет в нашем городе дорогой (0.69 р. за метр) сумма получилась солидная.

Запросил детализацию у провайдера, оказалось, что весь трафик ушел с 143 TCP порта в сторону нескольких хостов, в WHOIS адреса числятся как «MAILRU-NET08». Никаких сборщиков почты у пользователей в нашем домене не настроено, это проверил в первую очередь. Собственно, после анализа предоставленной провайдером статистики вопросов только прибавилось. Читать

wordpress SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

Вот странная ошибка, на мой взгляд.

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

Если вы попали сюда из поисковика, в поиске решения этой ошибки, то лечится она легко:

Достаточно в директорию wp-includes/certificates положить файл http://curl.haxx.se/ca/cacert.pem под именем ca-bundle.crt

А теперь, чем меня насторожило такое решение. Дело в том, что движки подобные wordpress легко ломаются, всегда найдется пара не пропатченных багов. А загрузка файлов через SSL не стартует без проверки подлинности, на случай, если нам пытаются подсунуть левый контент посредством атаки Men in middle.

Получается, что проверку подлинности сервера можно легко отключить, путем замены файла ca-bundle.crt на свой, где будет добавлен сфабрикованный корневой сертификат которым будет подписан сертификат узла men in middle.

 

UPD: Как показала практика, не везде можно решить проблему таким образом.

На сайте разработчиков curl нашел вот что: http://osdir.com/ml/web.curl.php/2007-02/msg00008.html

Суть в том, что если у вас установлена версия curl из перечисленных:

>libcurl/7.10.3 OpenSSL/0.9.6g
> libcurl/7.12.1 OpenSSL/0.9.7a
> libcurl/7.11.2 OpenSSL/0.9.7c

То без обновления curl не обойтись.

SSH без ввода пароля

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

Во первых, если кому надо, то настраивается это крайне просто.

на хосте с которого будем подключаться нужно сгенерить ключ без пароля:

test_user@testhost:~$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/test_user/.ssh/id_rsa):
/home/test_user/.ssh/id_rsa already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/test_user/.ssh/id_rsa.
Your public key has been saved in /home/test_user/.ssh/id_rsa.pub.
The key fingerprint is:
52:99:be:4f:fd:99:ce:4e:de:9c:38:95:b9:dd:b5:a3 test_user@testhost

после этого, содержимое файла /home/test_user/.ssh/id_rsa.pub добавить в /home/%username%/.ssh/authorized_keys на хосте КУДА будем подключаться, и именно тому пользователю, под которым будем подключаться. Можно это сделать в ручную, а можно запустив команду на хосте С КОТОРОГО будем логинится:

ssh-copy-id -i /home/test_user/.ssh/id_rsa.pub test_user@ip_address

После этого ssh %username%@ip_address не будет спрашивать пароль.

И вот на этом месте меня посетила не веселая мысль. Дело в том, что какой-нибудь малварь (примитивный скрипт на bash), запущенный с вашими правами на линукс хосте с установленным sshd, может элементарно открывать бэкдор для последющего входа по ssh.  Причем что бы обнаружить такой бэкдор не поможет никакой антивирус.

Как конвертировать ext3 в ext4

Много раз уже это делал, но руки все не доходили записать.

Что бы сконвертировать ext3 в ext4 достаточно одного заклиниания:

tune2fs -O extents,uninit_bg,dir_index /dev/DEV

где /dev/dev РАЗДЕЛ с файловой системой.

После этого нужно поменять в /etc/fstab ext3 на ext4, и перезагрузиться.

И вот тут есть ньюанс. У вас обязательно должен быть физический доступ к консоли, т.к. при перезагрузке произойдет проверка раздела на ошибки, и fsck спросит у вас разрешение внести изменения. На случай если вам будет обломно подключать монитор к системнику  ради нажатия одной кнопки, нужно будет нажать «.

Багаж из рук в руки

Хорошая новость пришла с портала CNEWS. И не одна…

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

В России, данная технология внедряется только в аэропорту «шереметьево». Так же, технология внедряется в Таллине и Праге.

Подробности здесь: http://biz.cnews.ru/news/line/index.shtml?2015/02/12/592727

Неожиданное поведение tcpdump при перехвате пакетов из бриджа

Случайно обнаружил такое свойство tcpdump: если у вас есть бридж, в котором бегают пакеты не адресованные вам (грубо говоря на бридж зеркалируеться траффик адресованный не вам), то при попытке сделать

tcpdump -ne vlan 9

программа не видит пакетов.

Если же записать дамп в файл (без указания vlan), а потом просмотреть его

tcpdump -r dump.file vlan 9

то все работает, и исправно показывает.

Проверялось на Ubuntu 12.04.

Кстати еще убил немало времени разбираясь почему tcpdump не пишет дамп файлы в папку /opt (на самом деле в любую отличную от /home, /var и т.д.), оказалось, что для tcpdump по умолчанию включен apparmor в enforce.

А еще в Ubuntu 12.04 по умолчанию включен apparmor, и tcpdump не хочет писать файлы например в /opt.

Что бы снять ограничение нужно перевести профиль для tcpdump в режим complain, как это сделать я писал здесь: http://pustovoi.ru/2009/778