Официальная возможность получить лицензионный софт бесплатно.
Giveaway of the Day
Это не реклама!

Щелкните для получения прогноза по Биробиджану


среда, 20 ноября 2013 г.

SAMBA: установка прав на создаваемые файлы и каталоги

Наступил на такие неинтересные грабли:

(shares.conf)
[squid]
    path=/var/samba/squid
    guest ok=yes
    read only=no
    vfs objects = recycle:keeptree=yes, extd_audit
    write list=@eao\\srv201-squid-writers, administrator, @eao\\"backup operators"
    force directory mode=0770
    force create mode=0770
    directory mask=0770
    directory security mask=0770
    create mask=0770
    security mask = 0770

Однако, созданные в этой шаре файлы имели атрибуты 0x1a0, то есть -rw-r----- (640), что меня никак не устраивало. Тщательный гуглинг помог найти решение здесь (см. сообщение от robert-oswald от 05.09.2013)

понедельник, 11 ноября 2013 г.

Исправляем ‘Failed to deploy OVF package: The task was canceled by a user.’

Рецепт нашел здесь.

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

Гуглинг подсказал, что я не одинок.

Решение.

1. Блокируем файл манифеста, например my-vm.mf переименовываем в my-vm.mf-
Это надо, чтобы импортер шаблона даже не пытался проверять его контрольные суммы.

2. Открываем на редактирование my-vm.ovf
3. Ищем в нем строку вида

<rasd:ResourceSubType>vmware.cdrom.iso</rasd:ResourceSubType>

и меняем ее на:

<rasd:ResourceSubType>vmware.cdrom.atapi</rasd:ResourceSubType> 

4. Снова делаем deploy тот же самый OVF template

Всё, собственно... Импорт прошел гладко.

среда, 4 сентября 2013 г.

Восстановление случайно убитой виртуальной машины

Чистили гипервизоры. Нашли каталог от ВМ с именем вм022, но самой машины не было. Нашли машину вм022_1 которая работала и хранила свои данные в datastore/vm022_1. Судя по описанию, вм022 ничего не делала и мы решили убить ее каталог.
Однако, процесс vmx зубами держался за четыре файла в этом каталоге. Списав всё это на глюк, перегрузили гипервизор. После чего отказалась запускаться машина вм023.
Которая, как оказалось, хранила свои данные в каталоге вм022, почему vmx и не давал их убить.

Ок. Выясняется, что уцелел только файл вм022-flat.vmdk, но нет файла вм022.vmdk. Игры с переименованием ничего не дали - подключить этот flat к ВМ не удавалось - браузер существующих виртуальных дисков его не видел.

Ответ нашел здесь:

http://whiteboardninja.wordpress.com/2012/03/05/recover-a-vm-from-the-vm-flat-vmdk-file/

Recover a VM from the vm–flat.vmdk file

Steps to recover a VM from just the flat.vmdk file:
  1. Build new temp VM with EXACTLY identical vmkd file size
  2. Connect via CLI
  3. Rename temp-flat.vmkd file
  4. Copy existing-flat.vmdk file and rename to temp-flat.vmkd
  5. Power on temp VM
Что в переводе обозначает:
  1. Создать новую ВМ с таким же оборудованием и ТОЧНО ТАКИМ ЖЕ размером диска (дисков)
  2. Подключитесь к консоли гипервизора (стандартный браузер из vSphere Client не видит такие файлы вообще никак)
  3. Переименуйте flat.vmdk новой ВМ во что-то другое (я использую дополнительное расширение ,org)
  4. Скопируйте существующий flat.vmdk из убитой ВМ туда, где лежат файлы новой ВМ и переименуйте его соответственно
  5. Запустите новую ВМ

После таких манипуляций w2008r2 потерял активацию, но ее подняли KMS-ключом. Дополнительно пришлось пере-пробросить usb-затычку с хаспом. Сделать это - добавить забытый USB-контроллер и "воткнуть" в него хасп - удалось не выключая новую ВМ.

пятница, 30 августа 2013 г.

Internet Explorer 9 падает при открытии любого сайта

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

Ответ нашел здесь.

"I started having problems with freeze-ups followed by the "display driver stopped responding" error immediately after upgrading my Windows 7 system to IE9. The solution in my case was to change the Accelerated graphics setting in IE9 under Tools - Internet Options - Advanced tab. Check the box to “use software rendering instead of GPU rendering”. I’m guessing that my graphics card (ATI Radeon HD 5450) was not able to handle the graphics rendering demands of IE9, even though my computer is only 6 months old. I have not seen any change in IE9 performance since making the change, and the display driver errors have stopped."

То есть, открываем свойства обозревателя, вкладка "дополнительно" и мотаем в самый низ до пункта "использовать программную прорисовку...". Если IE падает и эта галка не установлена, установить ее и будет счастье.
На многопользовательских компьютерах проделать то же самое в аккаунте каждого пользователя, использующего IE.

четверг, 29 августа 2013 г.

Планирование автоматического включения/отключения переадресации в зимбре

Automating the turning on/off the mail forwarding in Zimbra

Система состоит из 6 исполняемых файлов-скриптов, 5 на shell-script, 1 на #awk, разбитых на две группы: ввод данных и обработка.

Ввод (и частичная обработка) выполняется по цепочке:

zimtest --> zimtest1
zimtest1 вызывает rrgtest и при необходимости zmonoff

Автоматическая обработка по расписанию выполняется zimparser, который вызывает zimawk.awk и zmonoff.

ZIMTEST

Сценарий-обёртка. При запуске без параметров выдает наикратчайшую справку. Запускается с параметрами:

zimtest дата_начала дата_окончания кого на_кого

Все параметры обязательны.

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

В качестве кого можно указывать как полный емайл (напр. pupkin_vasya@наш_домен), так и только именную его часть (pupkin_vasya) - при проверке имени зимброй работают оба варианта.

На_кого - только полный емайл, поскольку эта строка просто будет вписана в соответствующее поле LDAP для кого. (однако, валидность этого адреса тоже проверяется и вписать несуществующего получателя не удастся)

Емайлы должны принадлежать нашему домену - автоматическая настройка автоматической пересылки на другие домены не разрешается.

ZIMTEST1

Основной скрипт ввода. Использует два скрипта - rregtest и zmonoff - для выполнения отдельных операций. rregtest используется как подключаемая библиотека, содержащая функцию проверки допустимости даты. Поскольку со времени начальной разработки эта функция сильно упростилась (я отдал все лишние проверки операционной системе), то возможно, что функция будет включена в состав zimtest1, а rregtest будет исключен из "комплекса".

zmonoff (ZiMbra ON/OFF) - скрипт, выполняющий, собственно, включение/выключение переадресации. Используется здесь в случаях, когда дата начала переадресации уже прошла или наступила сегодня для немедленного включения переадресации, либо когда дата отключения уже прошла или наступила сегодня, для немедленного отключения.

Переданные даты отдаются на проверку сценарию rregtest, а емайлы проверяются внутри скрипта силами зимбры. Изначально, опять же, я писал валидатор для емайлов, но потом отказался от него и запускаю zmprov ga. Чтобы не делать пустую проверку, для красоты получаю в ее ходе от зимбры человеческое имя пользователя. Пока оно просто выводится на экран, но в теории может пригодиться для чего-нибудь полезного.

Для тех же красивостей вычисляется количество дней между начальной и конечной датами действия переадресации. Сходный алгоритм используется чуть позже для вычисления времени, оставшегося до включения/отключения переадресации.

После проверки "а не указана ли конечная дата раньше начальной?" начинается собственно формирование файла данных для обработки по крону.

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

Если же переданная дата еще не наступила, то информация о ней дописывается в конец файла данных zmsched.dat в виде строки:

@секунды:действие:аккаунт_кого:емайл_на_кого:дата_по-русски

Например:

Переадресовывать почту Васи Пупкина на Петю Попкина с 25.09.2013
@1380027600:on:pupkin_vasya:popkin_petya@my.domain:25.09.2013

Отменить с 25.09.2013 переадресацию почты Васи Пупкина. Поле емайл_на_кого пусто, но оно есть - это строка нулевой длины между третьим и четвертым двоеточиями.
@1380027600:off:pupkin_vasya::25.09.2013

@секунды - дата выполнения действия в формате

date -d "дата 0:00" +@%s

то есть, количество секунд с начала "эпохи" до нуля часов нужного дня. Такой формат выбран для удобства сравнения в обработчике.

действие - принимает одно из трех возможных значений: on, off, skip. Действие skip будет описано ниже в описании обработчика zimawk.awk. Действия on и off самоочевидны: включить или выключить переадресацию для аккаунт_кого, указав, в случае включения емайл_на_кого.

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

емайл_на_кого - емайл и только емайл, на который будет переадресовываться почта. Это просто строка, которая будет помещаться в соответствующее поле в LDAP-записи про аккаунт_кого. Если указано действие off, то содержимое этого поля может быть пустым - оно никак не анализируется в такой ситуации, хотя и обязано присутствовать.

дата_по-русски - то же самое, что @секунды, но в формате дд.мм.гггг. Поле добавлено только для удобочитаемости человеком. Теоретически возможно отказаться от первого поля @секунды, чтобы файл можно было править вообще вручную.

RREGTEST

Подключаемая библиотека-сценарий. Содержит только одну функцию validdate(), которая изначально задумывалась как полноценный валидатор дат, но позже была упрощена.

Дата проверяется на минимальную правильность по шаблону, примерно соответствующему дате в русском формате дд.мм.гггг. Причем этот шаблон очень нечеткий и допускает, например, 39.00.2016 (тридцать девятое число нулевого месяца). Это сделано умышленно, чтобы просто удостовериться, что в параметре передана именно дата, а не что-то другое: при любом большем несоответствии скрипт вываливается с exit 1, останавливая работу вызвавших его скриптов.

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

Сформированную дату пытаемся вывести на экран, и тут уже пусть date сама проверяет ее допустимость. Неправильно что-то? Вываливаемся!

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

ZIMPARSER

Скрипт-обёртка, запускаемый по крону. Устанавливает некоторые служебные переменные и вызывает собственно обработчик файла настроек.
Файл со скриптом обработчика и файл настроек должны находиться в одном с ним каталоге. Возможно, в будущем их местоположение будет передаваться в параметрах.

ZIMAWK.AWK

Основной обработчик файла данных zimsched.dat. Файл считывается построчно и если строка проходит ряд проверок, выполняется указанное в ней действие.
Проверки:
1. если в строке не пять полей, то строка считается неправильной и не обрабатывается, о чем делается запись в логе
2. если указано действие skip, то эта строка была обработана на прошлом проходе и ее обработка не требуется. Строка пропускается.

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

В подходящих для обработки строках действие заменяется с on или off на skip, чтобы удалить их на следующем проходе, и вызывается zmonoff для выполнения нужной операции.

После обработки всего файла создается временный файл zmsched.new, в который первой строкой выводится дата/время его создания, а далее построчно дописывается содержимое массива.

Старый файл данных переименовывается в zmsched.DOW, где DOW - номер дня недели, одна цифра, что позволяет вести историю изменений файла данных за последнюю неделю.

Файл zmsched.new копируется под именем zmsched.dat и система готова к новому циклу.

---
Использовались материалы:

Bash Scripting Guide

AWK

Еще awk и sed.

Под катом исходники.

пятница, 23 августа 2013 г.

AWK: regexp - проверка email

Емайл должен начинаться с буквы, допустимые знаки - алфавит, цифры, подчеркивание, точка, минус.

(параметр a1 передается через "awk -v a1=$1" или вроде того - проверяем емайл, переданный в командной строке)

BEGIN {print "start"}

{
if (a1 !~ /^[a-zA-Z]+([a-zA-Z]|\_|\-|\.|[0-9])+@мой\.домен\.ru/)
    {print "'" a1 "'"  ":not email" }
else
    {print  "'" a1 "'" ":looks like email" }
exit}

END {print "finish"}

среда, 7 августа 2013 г.

Ростелеком: мудаки или глупцы? Часть 2.

Недавно я писал про нелюбовь РТ к lib.ru. Вчера, 6 августа, получил от РТ ответ и даже чуть-чуть попереписывался с ними.
Если тема сообщения с официальным ответом звучит как "Информация о блокировки ресурса.", то ответ на вопрос в теме сообщения становится всё более неочевидным...

Под катом переписка

вторник, 16 июля 2013 г.

Ростелеком: мудаки или просто глупцы? Я не берусь пока гадать.

Итак, наш горячо любимый Ростелеком продолжает радовать. 

Читал полковника Кассада ( , http://colonelcassad.livejournal.com/1145851.html) . Дали ссылку на рассказ, размещенный на lib.ru.

Как умная Маша перешел по ссылке, получил вот такое, как на скриншоте (адрес виден)

понедельник, 8 июля 2013 г.

Настройка шрифта в MySQL Workbench/windows

Открыл для себя такую приятную штуку как MySQL Workbench. Продукт хорош и удобен, и несколько дней я горя не знал, работая с ней из-под линукса.
Однако, скачал версию для винды и сильно расстроился: в редакторе SQL-скриптов всё UTF-ное отображалось квадратиками. Уже решил, что где-то глюк с кодировкой в этой версии. На деле оказалось всё намного проще:
.


В настройках надо выбрать шрифт, поддерживающий UTF-8 вместо дефолтного Bitstream Vera... Я выбрал Courier New и радуюсь жизни.

пятница, 28 июня 2013 г.

Переименование пользователя в AD для Samba

Наткнулся и уже давно на такую граблю.

Есть пользователь domain\vasya. Но теперь надо, чтобы он стал domain\vasily - чтобы не править многочисленные списки доступа и группы.
Решение очевидно: в соответствующей оснастке или из командной строки меняем его logon name и готово! Теперь Вася логинится как vasily. Вот только после первого же логина он жалуется, что не подключились его сетевые диски, которые прекрасно подключались для имени vasya.

Выясняется, что самба видит его как-то очень странно. Вот реальный пример:

id eao\\radionova_ov
uid=10096(EAO\prog1) gid=10008(EAO\domain users) группы=10008(EAO\domain users),10056(EAO\пользователи тс 1с-упп),10098(BUILTIN\users)


Пользовательница изначально была под именем prog1, стала radionova_ov. По имени "лукап" проходит нормально, но вот ID выдает неверное имя - старое. На что, собственно, и ругается самба.

До недавнего времени мне приходилось удалять пользователя и пересоздавать его - пользователи были обычными, не входящими в какие-то важные группы и т.п. Но Радионова - "младший админ", член группы "account operators" и рулит всевозможными подсистемами, поэтому ее ACL весьма велик и переносить его на свежесозданный аккаунт, не говоря уже о проблемах с переназначением прав в файловой системе на ее рабочем месте - полная жопа.

Опытно-гуглевым подходом выяснил, что старое имя хранится в кэше winbind-a, но для этого понадобилось перелопатить пару сотен ссылок.

/var/cache/samba# ls -la
-rw-------  1 root root   73728 июня  28 12:50 netsamlogon_cache.tdb
-rw-------  1 root root  315392 июня  28 11:53 netsamlogon_cache.tdb-
-rw-------  1 root root 1462272 июня  28 12:50 winbindd_cache.tdb
-rw-------  1 root root 1462272 июня  28 11:53 winbindd_cache.tdb-


(листинг частичный, там есть и другие файлы)

Отключение кэша самого winbind-a не помогло - после переименования winbindd_cache.tdb в winbindd_cache.tdb- создался новый winbindd_cache.tdb, с содержимым идентичным "закомментированному". Вылечилось только после "закомментирования" и netsamlogon_cache.tdb:

id eao\\radionova_ov
uid=10096(EAO\radionova_ov) gid=10008(EAO\domain users) группы=10008(EAO\domain users),10013(EAO\allowed rodc password replication group),10058(EAO\пользователи тс 1с-уат),10056(EAO\пользователи тс 1с-упп),10064(EAO\сит),10059(EAO\пользователи тс асу сп),10057(EAO\пользователи тс 1с-зуп),10101(EAO\пользователи 1с-до),10098(BUILTIN\users)


Если кто-то знает более оптимальный способ, прошу в комменты.

среда, 12 июня 2013 г.

How do I configure lightdm to work with XDMCP?



To enable the XDMCP server in LightDM edit /etc/lightdm/lightdm.conf and add the following section:
[XDMCPServer]
enabled=true
Then restart LightDM with sudo restart lightdm from a text console (logout from any graphical sessions first).
You can set the XDM-AUTHENTICATION-1 key by setting key=value (value is in the same format as is used in the X -cookie option). If the key is not set then no authentication is used.
You can change the UDP/IP port by setting port=1234.
All the available LightDM settings are shown in the example configuration in/usr/share/doc/lightdm/lightdm.conf.
---
I have been trying to enable XDMCP on GDM without much success. Following some instructions I have edited /etc/gdm/custom.conf and added:
[daemon]
RemoteGreeter=/usr/lib/gdm/gdm-xdmcp-chooser-slave
[xdmcp]
Enable=true
Then restarted gdm and tried to connect both locally and from a remote system with:
Xnest :1 -query localhost
Xnest :1 -query remote_system_hostname
I just get a black screen instead of the GDM window as expected. I am missing something ?

воскресенье, 9 июня 2013 г.

ASUS P8H67-M PRO и сенсоры в Linux

Была у меня плата iD865PERL, все ее сенсоры нормально ловились стандартной libsensors и я четко знал, с какой скоростью крутятся вентиляторы, каковы напряжения и всё такое. После прошлогоднего апгрейда на P8H67-M PRO мне остались доступны только температура ЦПУ (общая и по конкретным ядрам) и температуры жестких дисков. Меня это, понятно, ну никак не устраивало.

вторник, 4 июня 2013 г.

Авторизация на прокси Squid 3 через ADDS

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

Задача не новая, но решать надо "как в первый раз", тем более, что это и есть первый раз, когда я такое проделал. Два месяца назад я забил сюда как в закладки ссылку на блог Лиссяры. Всё бы ничего, но он описывает работу с FreeBSD, а у меня таки "неправославная" ОС в его понимании. Ага, всё та же убунта-сервер (10.04.4, Lucid) с третьим сквидом. Кроме того, статье на данный момент около 6 лет, а за это время космические корабли избороздили еще кусок вселенной... В общем, мысленно поблагодарив Лиссяру за наводку, я отправился дальше.

Куда более подходящую статью я нашел у Макродмина. Статье нет еще и года, поэтому информация актуальна.

1. sudo apt-get install ntp
настраиваем синхронизацию времени со своим контроллером, вписывая его в нужное место в /etc/ntp.conf:

server имя_или_IP_контроллера_домена

Макродмин советует ставить туда IP, у меня нормально работает и с FQDN, тем более, что в примерах внутри самого этого файла указан ntp.ubuntu.com, а не его IP.

2. В /etc/resolv.conf у меня уже были прописаны нужный домен и в правильном порядке серверы DNS - первым сервером стоял адрес контроллера. Порядок здесь имеет значение - если на первом откликнувшемся сервере нет нужных SRV и т.п. записей, то не удастся ввести прокси в домен - будет тупо не находить контроллер.

3. Поскольку на этой "машине" (сервер крутится в виртуалке) отродясь не было ни самбы, ни злой собаки-цербера, то согласился с Макродмином и тупо установил рекомендованное:

sudo apt-get install samba winbind krb5-admin-server krb5-clients krb5-config krb5-doc krb5-kdc krb5-user

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

4. В этом месте у Макродмина опечатка, которая стоила мне нескольких седых волос. Вот мой рабочий конфиг самбы:

# cat smb.conf
[global]
workgroup = MYDOMAIN
realm = MYDOMAIN.FQDN.RU
netbios name = VMPROXY
server string =_
security = ADS
encrypt passwords = true
password server = pdc.mydomain.fqdn.ru
winbind enum users = yes
winbind enum groups = yes
winbind use default domain = yes
winbind uid = 10000-20000
winbind gid = 10000-20000
wins server = xxx.yyy.zzz.ttt

В качестве wins-сервера указан именно IP  моего PDC, остальное самоочевидно.
Оранжевый прямоугольник обозначает то же самое, что и у Макродмина - после знака равенства ставим пробел, чтобы самба не формировала серверную строку типа "samba server (ubuntu чего-то там)".
А вот подчеркнутое жирное "yes" - это как раз то место с опечаткой: в оригинале написано "yse", и я долго не мог понять, на что же самба ругается разными нехорошими словами вроде "lp_bool(yse): value is not boolean!". То, что это следствие опечатки, заметил совершенно случайно.

5. Править файл /etc/krb5.conf сильно не пришлось: как я уже сказал, при установке пакетов мне было задано много вопросов, ответы на которые были автоматически вписаны в нужные конфиги. Часок работы напильником и всё готово. (из текста конфига я удалил оригинальные комментарии)

# cat krb5.conf
[libdefaults]
    default_realm = MYDOMAIN.FQDN.RU

    krb4_config = /etc/krb.conf
    krb4_realms = /etc/krb.realms
    kdc_timesync = 1
    ccache_type = 4
    forwardable = true
    proxiable = true

    v4_instance_resolve = false
    v4_name_convert = {
        host = {
            rcmd = host
            ftp = ftp
        }
        plain = {
            something = something-else
        }
    }
    fcc-mit-ticketflags = true

[realms]
    MYDOMAIN.FQDN.RU = {
        kdc = pdc.mydomain.fqdn.ru
        kdc = bdc.mydomain.fqdn.ru
        kdc = 3rddc.mydomain.fqdn.ru
        admin_server = pdc.mydomain.fqdn.ru
        default_domain = MYDOMAIN.FQDN.RU    }


[domain_realm]
    .mydomain.fqdn.ru = MYDOMAIN.FQDN.RU
     mydomain.fqdn.ru = MYDOMAIN.FQDN.RU

[login]
    krb4_convert = true
    krb4_get_tickets = false

Обращаем внимание на регистр букв!!!

6. После внесения правок просим билетик у кербероса:

kinit administrator

где administrator - логин администратора домена.
Если не последовало ругани и klist выдал что-то осмысленное, то вводим прокси в домен:

net ads join -U admin

Как сообщают разные источники и мой личный опыт, может вылезти невразумительная ошибка насчет сервера DNS (у меня в этот раз не вылезла, но с прежними самбами бывало), ее можно смело игнорировать.

7. Сквид у меня уже был настроен, поэтому не заморачиваюсь общими вопросами, а сразу лезем править конфиги. Для большей гибкости, конфиг сквида у меня разбит на три файла - основной конфиг (squid3.conf), файл "учёток" (squid3.acl.conf) и файл ограничений (squid3.restrictions.conf), причем два последних подключаются директивой include к первому.

При правке возникли некоторые вопросы, ответы на которые я нашел на вики сквида: авторизация ntlm и авторизация ntlm с использованием групп. Существенная грабля: нельзя тупо копипастить! Я сидел и тихо сходил с ума, пытаясь понять, почему же сквид жалуется "хелпер слишком часто падает и я отключаюсь". У меня сквид третьей версии и установлен в squid3. Но в абсолютном большинстве примеров речь о второй версии, установленной в просто squid. И естественно, что хелпер вылетал - трудно запустить что-то вроде /usr/lib/squid/program, если на самом деле оно находится в /usr/lib/squid3/program.

В домене я создал отдельную ОЕ: domain/groups/ACL/Internet. В ней находятся группы разрешения и запрета доступа - по одной группе на каждую службу. Все эти группы в зависимости от того, что они делают, входят в супергруппы inet_allow или inet_deny, живущие уровнем выше в domain/groups/ACL.

8.Итак, конфиги сквида (частичные):

SQUID3.CONF
#http://wiki.squid-cache.org/ConfigExamples/Authenticate/Ntlm
auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
auth_param ntlm children 30

auth_param basic program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic
auth_param basic children 15
auth_param basic realm Proxy Autentification Required
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off

SQUID3.ACL.CONF
#Проверка работы через AD
    acl    nt_group    proxy_auth    REQUIRED
    external_acl_type    nt_group %LOGIN /usr/lib/squid3/wbinfo_group.pl
    acl    dom-white-list    external    nt_group    inet_allow
    acl    dom-black-list    external    nt_group    inet_deny

SQUID3.RESTRICTIONS.CONF
#Через домен
    http_access    allow    dom-white-list
    http_access    deny    dom-black-list


Как раз из-за последнего "/usr/lib/squid3/wbinfo_group.pl" у меня и вылезали ошибки, о которых я говорил - в примерах везде было "squid", а не "squid3".

9. Ну и финальный штрих. Winbind при запуске создает каталог /var/run/samba/winbindd_privileged, на который дает права группе winbindd_priv. Сквид в нее не входит и сильно расстраивается из-за невозможности проверить права доступа. Фигня. Просто добавляем его в эту группу. У меня сквид работает от имени пользователя proxy:

gpasswd -a proxy winbindd_priv

Перезапускаем самбовские службы и сквид.

В некоторых источниках предлагают изменить стартовый скрипт самого winbind-a, но это неправильно, я считаю.

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

sudo service squid3 force-reload

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

Для проверки работы хелпера можно воспользоваться командой:

# ntlm_auth --username=логин
password:
NT_STATUS_OK: Success (0x0)

Где вместо "логин" подставляем имя пользователя из домена.

суббота, 11 мая 2013 г.

Развиваем тему box.com и русские имена

После написания этого поста обнаружилась пренеприятная бяка: странные проблемы с русскими именами каталогов и файлов.
Выглядит это примерно так:

1. Диск смонтирован, открыто два окна в thunar-e: на заднем плане локальное, на переднем сетевое. Я собираюсь скопировать каталог "Алёнка" в облако


пятница, 10 мая 2013 г.

Подвиг товарища Смирнова

Думаю, не надо объяснять, кто на обеих фотографиях - этого актера знают все, у кого есть хоть немного мозгов.
Спасибо Борису Рожину за этот пост в его ЖЖ.
Коллаж выдернут отдельным файлом на случай пропадания оригинальной записи.


четверг, 9 мая 2013 г.

Подключение box.com в линуксе

Пару месяцев назад, поддавшись моменту, зарегистрировал себе бесплатный аккаунт на box.com - очередное файлохранилище на 50 гигов. Речь, однако, не о самом обменнике, а об его практическом использовании. Веб-интерфейс у него приятный, спору нет, но лично меня, например, раздражает, что для загрузки целого каталога надо запускать java-апплет. Штатного синхронизатора под линукс тоже нет, только под винду и макось. Стало быть, надо найти способ смонтировать хранилище в файловую систему.

Из официального FAQ:
В: Поддерживает ли box.com доступ через WebDAV?
О: Да, поддерживает. Адрес: https://www.box.com/dav

Отлично. Но как? Ответ нашелся здесь. Однако, xmodulo описывает подключение через штатный GUI Nautilus для Unity/Gnome, которого нет в XFCE. Ну, или я очень плохо искал. Выглядит это так (за неимением юнити, использую авторские скриншоты):


  1. Выбираем пункт "подключиться к серверу":
  2. Вводим параметры:
  3. Готово!


Но этот путь мне не подходит, ибо нету "подключения к серверу". Что ж, продолжим читать xmodulo... (в его примерах используется vi, лично я предпочитаю nano)

Для подключения без использования GUI воспользуемся davfs2.


  1. Устанавливаем:
    sudo apt-get install davfs2
  2. Создаем точку монтирования (у меня так, вам никто не запрещает разместить ее где-то в другом месте):
    $ mkdir ~/mnt/boxcom
  3. Поскольку WebDAV от box.com не поддерживает блокировку файлов, отключим её, чтобы не получать сообщения об ошибках:
    sudo nano /etc/davfs2/davfs2.conf
    Если файл раньше не правили, то в нем будет строчка
    #use_locks       1

    Убираем комментарий и меняем 1 на 0 - мы НЕ используем блокировки:
    use_locks       0
  4. Поскольку мы не хотим возиться с лишними sudo, то перенастроим пакет так, чтобы монтирование davfs было разрешено и простым смертным обычным пользователям:
    sudo dpkg-reconfigure davfs2


  5. А еще для этого надо добавить себя в соответствующую группу пользователей:
    (дальше по тексту замените sergei на своё имя пользователя)
    sudo usermod -a -G davfs2 sergei
  6. Вводить каждый раз длинную команду монтирования тоже некошерно, поэтому слегка поправим /etc/fstab, добавив в него строку (замените /home/sergei/mnt/boxcom на путь к вашей точке монтирования):
    https://www.box.com/dav /home/sergei/mnt/boxcom davfs rw,user,noauto 0 0
  7. Подключаемся:
    $ mount boxcomPlease enter the username to authenticate with server https://www.box.com/dav or hit enter for none.  Username: <ваш бокс-комовский логин>Please enter the password to authenticate user <ваш бокс-комовский логин> with serverhttps://www.box.com/dav or hit enter for none.  Password: <ваш бокс-комовский пароль>
Готово, собственно! Посмотрите командой mount, как оно подключилось, а с помощью df проверьте, сколько там свободного места. Чтобы еще больше облегчить себе жизнь и монтировать этот сетевой диск без лишних нажатий, добавим имя и пароль в соответствующий файл:

(защищаем его от непрошенных глаз)
$ chmod 600 ~/.davfs2/secrets

(собственно правка)
$ nano ~/.davfs2/secrets

https://www.box.com/dav <ваш бокс-комовский логин, как правило - емайл> <ваш бокс-комовский пароль>


понедельник, 6 мая 2013 г.

Мистика с реестром

Сижу, чешу репу...

В рамках перехода на ADDS, унифицируем компы пользователей. В том числе и по части некоего вспомогательного софта, например, мелкой программки BGInfo, которая на обоях рабочего стола рисует заданные в конфиге параметры компа, например, адрес, имя хоста и т.п.

На одной из машин вылезла мистическая бяка: по непонятным причинам и с неравномерными интервалами начинались странные тормоза на офисо-открываемых документах. Выглядело это примерно так: тыкаем ПКМ по какому-нибудь исполняемому или архивному файлу - моментально открывается контекстное меню. ПКМ по xls, doc(x) и даже чистому txt - возникает какая-то сетевая активность и тормоза на 30-40 секунд, после которых появляется контекстное меню. То же самое при открытии файлов из проводника: при открытии чего-либо офисо-открываемого иногда жуткие тормоза. А иногда - нет.

При этом иногда всё работает идеально.

Проверили всё: полностью прошерстили диски MHDD, протестировали и на всякий случай даже заменили оперативку. Убедились, что проц в порядке и всё такое, в общем - исключили все возможные проблемы с железом.

Сегодня дошли руки поставить wireshark - очень уж смущала эта сетевая активность, причем штатный netstat ничего не показывал.

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

Вопрос: на хрена пациенту искомый? Полез в реестр с поиском по имени искомого. Ну и кто мне сможет объяснить, как это получается?

1. в общей автозагрузке есть ярлык для BGInfo. В нем жестко прописан путь c:\del\bginfo
2. в реестре для этой программы отдельная ветка с shell и opencmd вида \\искомый\с$\del\bginfo

Откуда этот путь взялся в реестре? Я ни фига не понимаю. Еще меньше я понимаю, почему он вообще влиял на доступ ко всем остальным файлам. После исправления сетевого пути на локальный тормоза  исчезли.

Мама, что это было?

четверг, 25 апреля 2013 г.

Копирование скрытых файлов

Дело житейское: понадобилось в скрипте скопировать один подкаталог в другой. Конкретно - одну из шар в самбе во временный каталог для хитрой обработки.

Угу:

cp -r * destdir/

А хрен там! Скопировалось всё кроме скрытых файлов и каталогов вида ".что-то-там".

Правильная команда:

cp -r source/. target/

или
cp -r ./. target/
если речь о текущем каталоге.

Не знаю, как это работает, но работает :-)

понедельник, 22 апреля 2013 г.

Милая подлянка от микрософта

На PDC w2k8r2 навесил DNS, всё штатно и пушисто.

А еще есть wpad... Выяснилось, что конкретно адрес wpad.мой.домен ни фига не резольвится, хотя в зоне прописан. Ответ нашел на микрософтовской же technet. Причем в штатной справке про global block list ни слова.

Кстати, кто найдет ошибку в скопированном с оригинала тексте? Она там есть.

The DNS Server role in Windows Server 2008 introduces a global query block list to reduce vulnerability associated with dynamic DNS updates. For more information, see About implementing WPAD.
If you want to use WPAD with DNS, note the following:
  • If WPAD entries are configured in DNS before the DNS server is upgraded in Windows Server 2008, no action is required.
  • If you configure or remove WPAD after you deploy the DNS server role on a server running Windows Server 2008, you must update the block list on all DNS servers that host the zones affected by the change. The affected zones are those where you registered the WPAD servers.
Use the dnscmd command-line tool to manage the global query block list. Open a command line prompt, and then do the following:
  1. To check whether the global query block is enabled, type the following:
    dnscmd /info /enableglobalqueryblocklist
  2. To display the host names in the current block list, type the following:
    dnscmd /info /globalqueryblocklist
  3. To disable the block list and ensure that the DNS Server service does not ignore queries for names in the block list, type the following:
    dnscmd /config /enableglobalqueryblocklist 0
  4. To enable the block list and ensure that the DNS Server service ignores queries for names in the block list, type the following:
    dnscmd /config /enableglobalqueryblocklist 0
  5. To remove all names from the block list, type the following:
    dnscmd /config /globalqueryblocklist
  6. To replace the current block list with a list of the names that you specify, type the following:
    dnscmd /config /globalqueryblocklist name [name]…
For more information and instructions, see the document "DNS Server Global Query Block List", available for download from Domain Name System at Microsoft TechNet.

суббота, 6 апреля 2013 г.

SQUID: авторизация через AD

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

понедельник, 18 марта 2013 г.

Закладка: об отвертках (происхождение и существующие классификации)

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

понедельник, 11 марта 2013 г.

SQUID access.log: преобразование времени

Сквид в своем логе пишет время в формате UNIX, что ни разу не есть удобно для чтения.
Где-то я уже разбирался с преобразованием времени, но для анализа конкретно этого лога нашлось такое решение:

grep rush access.log|perl -nwe's/^(\d+)/localtime($1)/e; print'

В данном случае ищем в логе обращения к сайту, содержащему в имени последовательность "rush" и выводим в найденных строках время по-человечески.

Но для одноразовой конверсии лучше воспользоваться стандартной командой date:

$ date --date='@1362981179.186'
Пн. марта 11 16:52:59 VLAT 2013


После "@" вписываем время из лога в формате UNIX. И телемаркет!

среда, 27 февраля 2013 г.

Инструменты миграции профилей и т.п.

 С давних времен в комплект виндов входит т.н. "Мастер переноса файлов и параметров". Удобная, надо заметить, штука, позволяющая перенести как файлы пользователя (не только "документы" и "рабочий стол"), так и сделанные им настройки - от персонализации всё того же рабочего стола до настроек отдельных программ. Угу, в никсах это делается проще - копируем ~/ на другой комп и радуемся жизни (возможно, придется изменить имя хоста в отдельных конфигах), но большинство пользователей у меня под виндами и надо от этого отталкиваться.

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

В общем, надо старые васины данные перетащить в его новый доменный профиль. Теперь посчитаем. Допустим, вася держит в своем профиле 100500 музыкальных и видеофайлов. Имеет право - политика компании не запрещает. "Мастер" создаст по дефолту архив, куда будут включены и эти файлы. Из-за их плохой сжимаемости архив получится размером в офигиллион мегабайт. Потом этот же "мастер" распакует этот же архив на этот же компьютер, но в другой каталог, для чего потребуется еще офигиллион мегабайт. В итоге будет занята куча места с КПД близким к 1/3 (1/3 - старый профиль, 1/3 - архив и 1/3 новый профиль). Но чем отличаются старый и новый профиль? По сути ничем, разве что ACL. Но, в отличие от никсов, подобно Netware винда позволяет навешивать на объект множественные разрешения, а значит надо сделать:
  1. сказать, что профиль доменного васи должен находиться там, где сейчас находится профиль васи локального
  2. дать доменному васе соответствующие права на файлы локального васи
  3. добавить доменного васю в некоторые локальные группы, куда входил вася локальный

Со всем этим отлично справляется инструмент User Profile Wizard от ForensIT. Вводим компьютер в домен, загружаемся под доменным админом, запускаем UPW, говорим ему, какой доменный профиль на какой локальный надо навесить и всё! При входе вася доменный попадает туда, куда он последний раз заглядывал васей локальным. Остается перенастроить почтового клиента и некоторые мелочи.

Кроме UPW на ForensIT есть и немало других удобных и бесплатных утилит. Сайт на английском, но оно того стоит - неброский, даже строгий дизайн, легко читаемые цвета и тексты. Рекомендую.

среда, 23 января 2013 г.

AVAHI и SAMBA

Есть в линуксах такая штука как демон avahi. Он служит для быстрой настройки на сеть в который нет своего   DNS сервера или не крутится ось от  Apple. В более крупных сетях или сетях под управлением других осей оно не особо и надо. Но почему-то оно по умолчанию включено даже в некоторых серверных убунтах, не говоря уже о десктопных. У меня сложилось впечатление, что оно еще и с самбой конфликтует.

Неплохое описание что к чему и как от него избавиться.

Несмотря на упоминание RHEL, совет вполне применим и к убунте.

вторник, 22 января 2013 г.

Я уже писал о составных поисках "или-или" в grep. Но или греп тогда был другой, или я что-то не то написал, но конструкция

grep "либо_то|либо_это"


не работает.

Правильный вариант:

grep -E "либо_то|либо_это"

например:

tail -f  /var/log/syslog | grep -E "named|dhcpd"

отфильтрует строки, в которых есть хотя бы одно упоминание любого из демонов, что очень удобно при решении проблем с DNS.