<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>reals.org.ua</title>
	<atom:link href="http://reals.org.ua/feed/" rel="self" type="application/rss+xml" />
	<link>http://reals.org.ua</link>
	<description>реальные технозаметки :)</description>
	<lastBuildDate>Tue, 11 Sep 2018 11:48:33 +0000</lastBuildDate>
	<language>ru</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>Как восстановить виртуальную машину VMware при использовании vSphere Replication, если кроме папки с реплицированными данными ничего не осталось</title>
		<link>http://reals.org.ua/vmware/recover-vsphere-replication-vm-without-replication-appliance/</link>
		<comments>http://reals.org.ua/vmware/recover-vsphere-replication-vm-without-replication-appliance/#comments</comments>
		<pubDate>Tue, 11 Sep 2018 11:48:33 +0000</pubDate>
		<dc:creator>real</dc:creator>
				<category><![CDATA[VMware]]></category>

		<guid isPermaLink="false">http://reals.org.ua/?p=201</guid>
		<description><![CDATA[Такая ситуация: была настроена репликация виртуальной машины на удаленное хранилище, причем с использованием точек восстановления во времени. В результате какой-то ужасной катастрофы были утеряны исходная виртуалка, vCenter и Replication Appliance. То есть осталось только удаленное хранилище, на котором лежит папка &#8230; <a href="http://reals.org.ua/vmware/recover-vsphere-replication-vm-without-replication-appliance/">Читать далее <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Такая ситуация: была настроена репликация виртуальной машины на удаленное хранилище, причем с использованием точек восстановления во времени. В результате какой-то ужасной катастрофы были утеряны исходная виртуалка, vCenter и Replication Appliance. То есть осталось только удаленное хранилище, на котором лежит папка с репликой, из которой необходимо восстановить виртуальную машину.</p>
<p style="text-align: justify;">Казалось бы, не должно быть ничего сложного, берем содержимое папки, переименовываем пару файлов и готово. Но из-за наличия точек восстановления ситуация резко усложняется: в результате нам нужно получить виртуальную машину со снапшотами (по одному на каждую точку восстановления), а в папке имеются только vmdk-файлы с GUID в названиях, которые согласно документации VMware являются redo-логами, которые преобразовываются в снапшоты при восстановлении машины из реплики. Процесс преобразования нигде не описывается, поиск в Интернете мало что дал.</p>
<p style="text-align: justify;">У виртуальной машины VMware со снапшотами в папке должен лежать текстовый файл с расширением <span style="font-family: &quot;courier new&quot;, courier;">.vmsd</span>, содержащий описания всех снапшотов, и несколько бинарных файлов с расширением <span style="font-family: &quot;courier new&quot;, courier;">.vmsn</span>, по одному на каждый снапшот. В папке с репликой всего этого нет, зато есть текстовый файл <span style="font-family: &quot;courier new&quot;, courier; white-space: nowrap;">hbrgrp.&lt;здесь длинный GUID&gt;.txt</span>, в котором имеется информация по всем точкам восстановления. Я написал скрипт на питоне, который использует информацию из этого файла и создает соответствующие <span style="font-family: &quot;courier new&quot;, courier;">.vmsd</span> и <span style="font-family: &quot;courier new&quot;, courier;">.vmsn</span>, плюс к этому файлы с конфигурацией виртуальной машины &#8211; <span style="font-family: &quot;courier new&quot;, courier;">.vmx</span> и <span style="font-family: &quot;courier new&quot;, courier;">.nvram</span>. Получается готовая к использованию виртуалка, которую остается только зарегистрировать в vCenter через vSphere Datastore Browser. Но есть нюанс &#8211; работает только если при репликации не использовался quiescing, так как разбираться с бинарной структурой <span style="font-family: &quot;courier new&quot;, courier;">.vmsn</span> ни времени, ни желания нет. Скрипт выложил на гитхаб, на случай если еще кому-нибудь пригодится:</p>
<p style="text-align: justify;"><a href="https://github.com/avnast/vr-recover">https://github.com/avnast/vr-recover</a></p>
<p style="text-align: justify;">С помощью этого скрипта можно восстановить виртуальную машину из папки с данными vSphere Replication прямо из командной строки ESXi, благо в версии 6.5 имеется python 3 на борту.</p>
]]></content:encoded>
			<wfw:commentRss>http://reals.org.ua/vmware/recover-vsphere-replication-vm-without-replication-appliance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Копирование Windows 10 на новые компьютеры с UEFI</title>
		<link>http://reals.org.ua/windows-10/uefi-system-copy-to-new-pc/</link>
		<comments>http://reals.org.ua/windows-10/uefi-system-copy-to-new-pc/#comments</comments>
		<pubDate>Fri, 28 Apr 2017 11:50:32 +0000</pubDate>
		<dc:creator>real</dc:creator>
				<category><![CDATA[Windows 10]]></category>

		<guid isPermaLink="false">http://reals.org.ua/?p=181</guid>
		<description><![CDATA[Когда нужно установить десяток-другой одинаковых Windows 10 с предустановленным софтом и своими фирменными настройками, а возможности использовать корпоративные средства развертывания от Microsoft наподобие SCCM+MDT нет, можно вручную создать флэшку с эталонным образом системы и сэкономить кучу времени, не устанавливая Windows &#8230; <a href="http://reals.org.ua/windows-10/uefi-system-copy-to-new-pc/">Читать далее <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Когда нужно установить десяток-другой одинаковых Windows 10 с предустановленным софтом и своими фирменными настройками, а возможности использовать корпоративные средства развертывания от Microsoft наподобие SCCM+MDT нет, можно вручную создать флэшку с эталонным образом системы и сэкономить кучу времени, не устанавливая Windows и приложения на каждом новом компе вручную. <strong>Предупреждение: сценарии ниже для компьютеров с UEFI-загрузкой и GPT, в случае MBR и Legacy Boot другая схема разбивки диска!</strong></p>
<p>Понадобится:</p>
<ol>
<li>компьютер-образец (лучше бы виртуальный)</li>
<li>компьютер с установленным Windows ADK</li>
<li>флэшка</li>
</ol>
<p style="text-align: justify;">Первым делом устанавливаем и настраиваем Windows на эталонном компьютере (не забыв выставить режим загрузки UEFI), ставим свои любимые приложения. Если используется виртуалка, то по завершении этого этапа рекомендовано ее выключить и сделать снапшот, чтобы иметь возможность вернуться к нему в случае каких-либо проблем.</p>
<p style="text-align: justify;"><span style="color: #000000; font-size: 1.8em;">1. &laquo;Обезличивание&raquo; Windows с помощью sysprep</span></p>
<p>Sysprep нужен для удаления уникальных идентификаторов из системы. В нашем случае понадобится дополнительный файл ответов:</p>
<pre>&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;unattend xmlns="urn:schemas-microsoft-com:unattend"&gt;
    &lt;settings pass="specialize"&gt;
        &lt;component name="Microsoft-Windows-Shell-Setup"
 processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35"
 language="neutral" versionScope="nonSxS"
 xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&gt;
            &lt;RegisteredOrganization&gt;My Corp&lt;/RegisteredOrganization&gt;
            &lt;TimeZone&gt;FLE Standard Time&lt;/TimeZone&gt;
        &lt;/component&gt;
    &lt;/settings&gt;
    &lt;settings pass="oobeSystem"&gt;
        &lt;component name="Microsoft-Windows-Shell-Setup"
 processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35"
 language="neutral" versionScope="nonSxS"
 xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&gt;
            &lt;OOBE&gt;
                &lt;SkipMachineOOBE&gt;true&lt;/SkipMachineOOBE&gt;
            &lt;/OOBE&gt;
        &lt;/component&gt;
    &lt;/settings&gt;
    &lt;settings pass="auditSystem"&gt;
        &lt;component name="Microsoft-Windows-Deployment"
 processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35"
 language="neutral" versionScope="nonSxS"
 xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&gt;
            &lt;Reseal&gt;
                &lt;ForceShutdownNow&gt;false&lt;/ForceShutdownNow&gt;
                &lt;Mode&gt;OOBE&lt;/Mode&gt;
            &lt;/Reseal&gt;
        &lt;/component&gt;
    &lt;/settings&gt;
&lt;/unattend&gt;</pre>
<p style="text-align: justify;">На шаге specialize устанавливается название компании и часовой пояс. Остальное нужно, чтобы Windows при первом запуске не требовал создать нового пользователя. Сохраняем файл на эталонной системе с именем c:\my.xml и там же запускаем sysprep (из командной строки с правами администратора):</p>
<pre>cd c:\windows\system32\sysprep
sysprep /generalize /audit /shutdown /unattend:c:\my.xml</pre>
<p style="text-align: justify;">После выполнения инициализации система автоматически выключится. Windows &laquo;обезличена&raquo; и готова к захвату образа. Следующую загрузку уже необходимо делать с внешнего диска с WinPE.</p>
<h2>2. Захват образа системного диска</h2>
<p style="text-align: justify;">Понадобится загрузочная флэшка с WinPE (или для виртуалки iso-образ, не принципиально). Создается на компьютере с Windows ADK (<a href="https://msdn.microsoft.com/en-us/windows/hardware/commercialize/manufacture/desktop/winpe-create-usb-bootable-drive" target="_blank">полная инструкция</a>):</p>
<ol>
<li>Start the Deployment and Imaging Tools Environment as an administrator.</li>
<li>Create a working copy of the Windows PE files:
<pre><code>copype amd64 C:\WinPE_amd64
</code></pre>
</li>
<li>Install Windows PE to the USB flash drive:
<pre><code>MakeWinPEMedia /UFD C:\WinPE_amd64 &lt;USB drive letter&gt;:</code></pre>
</li>
</ol>
<p style="text-align: justify;">Загружаем компьютер-образец в среду WinPE. Подключим сетевой диск, на который будем сохранять образ системы (для простоты лучше сохранять сразу на свой компьютер с установленным ADK, на котором потом будет создаваться установочная флэшка):</p>
<pre>net use N: \\mycomp\myshare /USER:username</pre>
<p style="text-align: justify;">Если сеть не поднялась по причине отсутствия DHCP, можно назначить сетевой карте статический адрес командой наподобие:</p>
<pre>netsh interface ipv4 set address Ethernet0^
 static 192.168.0.88 255.255.255.0 192.168.0.1</pre>
<p>И собственно захват образа:</p>
<pre>dism /Capture-Image /ImageFile:N:\my.wim /CaptureDir:C:\ /Name:"My"</pre>
<h2>3. Создание установочной флэшки</h2>
<p style="text-align: justify;">Дальнейшие действия выполняются на компьютере с Windows ADK. Создадим загрузочную флэшку, на которой будет лежать эталонный образ системного диска для новых компьютеров и программа для копирования этого образа на жесткий диск. Для этого снова запускаем (от имени администратора) Deployment and Imaging Tools Environment.</p>
<p style="text-align: justify;">1. Создаем рабочую папку с файлами для флэшки:</p>
<pre style="text-align: justify;">copype amd64 C:\WinPE_my</pre>
<p style="text-align: justify;">Все дополнительные файлы будем размещать в папке C:\WinPE_my\media, которая после загрузки WinPE станет корнем диска D.</p>
<p style="text-align: justify;">2. Разбиваем образ системы на файлы размером не более 4 Гб, так как на флэшке с WinPE файловая система FAT32, и файлы большего размера на нее не записать:</p>
<pre style="text-align: justify;">dism /Split-Image /ImageFile:C:\myshare\my.wim^
 /SWMFile:C:\WinPE_my\media\my.swm /FileSize:4000</pre>
<p style="text-align: justify;">3. Создаем сценарий C:\WinPE_my\media\partition_disk.txt для diskpart, который создаст разделы на целевом диске:</p>
<pre style="text-align: justify;">select disk 0
clean
convert gpt
rem == 1. Windows RE tools partition ===============
create partition primary size=450
format quick fs=ntfs label="Windows RE tools"
assign letter="T"
set id="de94bba4-06d1-4d40-a16a-bfd50179d6ac"
gpt attributes=0x8000000000000001
rem == 2. System partition =========================
create partition efi size=100
rem    ** NOTE: For Advanced Format 4Kn drives,
rem               change this value to size = 260 **
format quick fs=fat32 label="System"
assign letter="S"
rem == 3. Microsoft Reserved (MSR) partition =======
create partition msr size=16
rem == 4. Windows partition ========================
create partition primary
format quick fs=ntfs label="Windows"
assign letter="W"
rem ================================================
list volume
exit</pre>
<p style="text-align: justify;">4. Создаем сценарий C:\WinPE_my\media\setup.cmd, который займется установкой Windows:</p>
<pre style="text-align: justify;">@echo off
d:
cd d:\

echo Partitioning disk ...
diskpart -s partition_disk.txt

echo Applying image ...
dism /Apply-Image /ImageFile:my.swm^
 /swmfile:my*.swm /Index:1 /ApplyDir:W:\

echo Copying boot files to the System partition
bcdboot W:\Windows

echo TYPE "exit" TO REBOOT</pre>
<p style="text-align: justify;">5. Создаем собственно флэшку:</p>
<pre><code>MakeWinPEMedia /UFD C:\WinPE_my &lt;USB drive letter&gt;:</code></pre>
<h2 style="text-align: justify;">4. Установка Windows на новый компьютер</h2>
<p style="text-align: justify;">На компьютере, на который мы планируем установить Windows 10 с нашей флэшки, необходимо в настройках BIOS включить загрузку с EFI устройств, можно даже отключить Legacy Boot и включить SecureBoot для пущей важности. Возможно, придется руками указать ему грузиться с флэшки. После загрузки вводим команду</p>
<pre style="text-align: justify;">D:\setup</pre>
<p style="text-align: justify;">Если все прошло успешно, даем команду <code>exit</code> и после перезагрузки имеем свежеустановленную систему.</p>
]]></content:encoded>
			<wfw:commentRss>http://reals.org.ua/windows-10/uefi-system-copy-to-new-pc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Параметры ядра Linux и разрыв соединения при передаче больших файлов</title>
		<link>http://reals.org.ua/linux/linux-kernel-parameters-and-connection-breaking-when-transmitting-large-files/</link>
		<comments>http://reals.org.ua/linux/linux-kernel-parameters-and-connection-breaking-when-transmitting-large-files/#comments</comments>
		<pubDate>Wed, 22 Feb 2017 11:32:52 +0000</pubDate>
		<dc:creator>real</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://reals.org.ua/?p=173</guid>
		<description><![CDATA[Началось все с перемаршрутизации почты. Приоритеты основного и резервного MX поменялись местами, и поток писем бодро полился через сервер в другом филиале. Ну как &#171;бодро&#187; &#8211; очень скоро вылезла неприятность: письма размером больше 10 Мб на дружественную организацию, с которой &#8230; <a href="http://reals.org.ua/linux/linux-kernel-parameters-and-connection-breaking-when-transmitting-large-files/">Читать далее <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Началось все с перемаршрутизации почты. Приоритеты основного и резервного MX поменялись местами, и поток писем бодро полился через сервер в другом филиале. Ну как &laquo;бодро&raquo; &#8211; очень скоро вылезла неприятность: письма размером больше 10 Мб на дружественную организацию, с которой уже давно был поднят вполне стабильный VPN-туннель, застревали в очереди на отправку, в логах такое:</p>
<p><code>conversation with relay.friend.local[192.168.0.9] timed out while sending message body</code></p>
<p style="text-align: justify;">Сервер на CentOS 6.8, почта &#8211; postfix. С обратной стороны то же самое &#8211; письма от друзей висят в очереди (там Ubuntu 15.10+тот же postfix). Как временный workaround, перенаправили почту друг на друга через Интернет, в обход туннеля &#8211; почта залетала. Стало быть, postfix работает нормально, проблема где-то в сетевых настройках.</p>
<p style="text-align: justify;">Проблема воспроизвелась при копировании файла через scp. Причем что странно &#8211; проблема возникает только при отправке данных, если тянуть их с той стороны &#8211; все OK:</p>
<p><code>[root@relay.we.local ~] scp test.bin relay.friend.local:<br />
FAIL</code><br />
<code>[root@relay.friend.local ~] scp relay.we.local:test.bin .<br />
SUCCESS</code></p>
<p style="text-align: justify;">Копаем дальше. У нас много разных серверов на линуксах в нескольких филиалах, где-то ситуация воспроизводится, где-то все работает без проблем. Внутри одного филиала проблема не проявляется, только через VPN-туннели, хотя каналы у нас неплохие &#8211; по 50-100 Мбит. Пытаемся найти отличия между проблемными серверами/каналами и теми, где все работает:</p>
<p style="text-align: justify;">Первая версия &#8211; вроде как проблема там, где сетевая карта VMXNET3 (у нас все в виртуальной среде). Меняем на E1000 &#8211; не помогло (</p>
<p style="text-align: justify;">Внезапно оказывается, что если отключен файрвол (стандартный линуксовый iptables) &#8211; то все работает! Однако, на старом почтовике iptables включен, но все хорошо. Понимаем, что соединение рубится файрволом, осталось разобраться почему.</p>
<p style="text-align: justify;">Прослушка трафика с помощью wireshark показала, что при передаче файла идет куча ретрансмиссий, затем в какой-то момент iptables просто перестает пропускать пакеты. Видимо, перестает считать что пакеты принадлежат существующему соединению и соответственно блокирует. Почему оно так себя ведет &#8211; остается загадкой.</p>
<p style="text-align: justify;">Ладно, зайдем с другой стороны. На старом почтовике, так же как и на новом, наш любимый CentOS 6.8, вроде бы системы идентичны. Но на старом проблемы нет, а на новом есть. И построчное сравнение конфигов показало наконец заветное отличие! Всего одна строчка в /etc/sysctl.conf:</p>
<p><code>net.ipv4.tcp_sack = 0</code></p>
<p>и проблема исчезает.</p>
<p>Казалось бы, опция tcp_sack наоборот должна улучшать производительность  сети на каналах с большим количеством повторных отправок пакетов. Но то ли сами iptables с этим делом плохо работают, то ли сетевое оборудование где-то по пути модифицирует трафик и этим вставляет палки в колеса iptables, но факт остается фактом: если у вас по непонятным причинам рвутся соединения при передаче больших файлов, попробуйте отключить tcp_sack.</p>
]]></content:encoded>
			<wfw:commentRss>http://reals.org.ua/linux/linux-kernel-parameters-and-connection-breaking-when-transmitting-large-files/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Если Exchange Management Console выдает Access denied</title>
		<link>http://reals.org.ua/ms-exchange/management-console-http-kerberos-access-denied/</link>
		<comments>http://reals.org.ua/ms-exchange/management-console-http-kerberos-access-denied/#comments</comments>
		<pubDate>Wed, 09 Nov 2016 08:37:16 +0000</pubDate>
		<dc:creator>real</dc:creator>
				<category><![CDATA[MS Exchange]]></category>

		<guid isPermaLink="false">http://reals.org.ua/?p=152</guid>
		<description><![CDATA[Столкнулся с проблемой &#8211; на свежеустановленном Exchange 2010 консоль управления отказывается соединяться с сервером, выдавая сообщение «Initialization Failed: Connecting to remote server failed with the following error message: Access is denied.»: А при попытке зайти в Exchange Management Shell выдавалось &#8230; <a href="http://reals.org.ua/ms-exchange/management-console-http-kerberos-access-denied/">Читать далее <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Столкнулся с проблемой &#8211; на свежеустановленном Exchange 2010 консоль управления отказывается соединяться с сервером, выдавая сообщение «<cite>Initialization Failed: Connecting to remote server failed with the following error message: Access is denied.</cite>»:</p>
<p><a href="http://reals.org.ua/wp-content/uploads/emcerror.png"><img class="aligncenter size-full wp-image-155" title="Initialization Failed: Connecting to remote server failed with the following error message: Access is denied." src="http://reals.org.ua/wp-content/uploads/emcerror.png" alt="Initialization Failed: Connecting to remote server failed with the following error message: Access is denied." width="550" height="214" /></a></p>
<p>А при попытке зайти в Exchange Management Shell выдавалось сообщение типа «<cite>The attempt to connect to http://&lt;Exchange FQDN&gt;/powershell using &#8216;Kerberos&#8217; authentication failed</cite>». В Интернете можно найти такие варианты решения проблемы:</p>
<ol>
<li>удостовериться, что часы на сервере синхронизированы с контроллером домена (в моем случае все в порядке)</li>
<li>воспользоваться скриптом EMTshooter.ps1 от Microsoft (не помогло)</li>
<li>удалить значение в реестре командой (снова не помогло)</li>
<p><code>Remove-ItemProperty -Path HKCU:\Software\Microsoft\ExchangeServer\v14\AdminTools\ -Name NodeStructureSettings</code></p>
<li>рестартовать службу World Wide Publishing (ну или как вариант вообще весь сервер, все равно не помогло)</li>
</ol>
<p>В моем случае проблема оказалась в SPN, добавленном в процессе настройки NDES на том же сервере, что и Exchange:</p>
<p><a href="http://reals.org.ua/wp-content/uploads/SPN.png"><img class="aligncenter size-large wp-image-161" title="SPN http/bar-exchange.bar.local" src="http://reals.org.ua/wp-content/uploads/SPN-600x440.png" alt="SPN http/bar-exchange.bar.local" width="600" height="440" /></a> После удаления &laquo;лишнего&raquo; SPN проблема с Exchange Management Tools исчезла:</p>
<p><code>setspn -D http/bar-exchange.bar.local BAR\ndes.service</code></p>
<p>Правда, появилась проблема с сервисом NDES, но это уже выходит за рамки этой записи.</p>
]]></content:encoded>
			<wfw:commentRss>http://reals.org.ua/ms-exchange/management-console-http-kerberos-access-denied/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Миграция пользователей Samba из tdbsam в Samba 4 Active Directory</title>
		<link>http://reals.org.ua/linux/samba-users-migration-tdbsam-to-samba4-ad/</link>
		<comments>http://reals.org.ua/linux/samba-users-migration-tdbsam-to-samba4-ad/#comments</comments>
		<pubDate>Mon, 14 Dec 2015 15:56:37 +0000</pubDate>
		<dc:creator>real</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://reals.org.ua/?p=142</guid>
		<description><![CDATA[Жил-был в сети файловый сервер на Samba, с авторизацией через локальную базу пользователей (passdb backend = tdbsam) и кучей шар, доступ к которым давался через членство пользователя в unix-группе. Решили админы развернуть в той сети домен Active Directory, и сделать &#8230; <a href="http://reals.org.ua/linux/samba-users-migration-tdbsam-to-samba4-ad/">Читать далее <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Жил-был в сети файловый сервер на Samba, с авторизацией через локальную базу пользователей (<code>passdb backend = tdbsam</code>) и кучей шар, доступ к которым давался через членство пользователя в unix-группе. Решили админы развернуть в той сети домен Active Directory, и сделать авторизацию через него, и перенести всех пользователей Samba в домен вместе с паролями, чтобы не создавать их всех заново ручками. Но цельного руководства, как это сделать, на просторах интернета не нашлось, поэтому эта статья и появилась.<span id="more-142"></span></p>
<p style="text-align: justify;">Есть на Samba-wiki руководство <a href="https://wiki.samba.org/index.php/Migrating_a_Samba_NT4_domain_to_a_Samba_AD_domain_(classic_upgrade)" target="_blank">Migrating a Samba NT4 domain to a Samba AD domain (classic upgrade)</a>, которое описывает похожую задачу, но для уже существующего домена на базе Samba 3. А у нас <code>server role = standalone server</code>, все пользователи продублированы в /etc/passwd, /etc/shadow и базе данных Samba, а группы хранятся в /etc/group. Чтобы прошел classic_upgrade, нужно подсунуть самбе что-то похожее на Samba NT4 PDC, что мы в результате и сделаем.</p>
<p style="text-align: justify;">Итак, для начала возьмем новый сервер и сделаем из него будущий контроллер домена Samba 4 Active Directory путем установки дистрибутива Linux, в котором есть умеющая быть контроллером домена Samba. На момент написания статьи таким дистрибутивом оказался Ubuntu 15.10, его и используем в качестве примера. После установки и предварительной настройки останавливаем сервисы samba, если они запущены, и приступаем к переносу пользователей:</p>
<p style="text-align: justify;">На старом сервере:</p>
<p style="text-align: justify;">1) получим список пользователей Samba в формате username:uid</p>
<p style="text-align: justify;"><code>pdbedit -L | cut -d: -f1,2 &gt; user_rid.txt</code></p>
<p style="text-align: justify;">2) извлечем unix-пользователей из /etc/passwd и /etc/shadow:</p>
<p style="text-align: justify;"><code>sed s/:/:x:/ user_rid.txt | grep -f - /etc/passwd &gt; passwd_delta.txt<br />
sed 's/:.*/:/' user_rid.txt | grep -f - /etc/shadow &gt; shadow_delta.txt</code></p>
<p style="text-align: justify;">На будущем контроллере домена добавляем содержимое файлов passwd_delta.txt и shadow_delta.txt соответственно в /etc/passwd и /etc/shadow. Таким образом мы перенесли unix-пользователей со старого сервера на новый, теперь займемся группами:</p>
<p style="text-align: justify;">1) сохраняем строки с нужными нам группами из /etc/group на старом сервере в текстовый файл group_delta.txt, и аналогично предыдущему шагу добавляем содержимое этого файла в /etc/group на новом;</p>
<p style="text-align: justify;">2) чтобы classic_upgrade увидел группы и членство пользователей в них, Samba должна знать о соответствии unix-групп группам пользователей в своей базе. Если у нас standalone server, то скорее всего в базе Samba групп нет, так как используются только локальные unix-группы. Проверить это можно командой</p>
<p style="text-align: justify;"><code>net groupmap list</code></p>
<p style="text-align: justify;">Если список групп пуст, то нужно его создать, запуская для каждой строки файла group_delta.txt команду net groupmap add:</p>
<p style="text-align: justify;"><code>for g in `cat group_delta.txt`; do name=`echo $g | cut -d: -f1`; id=`echo $g | cut -d: -f3`; net groupmap add rid=$id unixgroup=$name ntgroup=_$name; done</code></p>
<p style="text-align: justify;">Команда выше  создает для каждой группы из файла group_delta.txt NT-группу с таким же именем и unix-GID, но с подчеркиванием в начале. Подчеркивание нужно для того, чтобы избежать возможного совпадения имени группы с именем пользователя (это недопустимо в Windows), ну и потом легче будет выделить импортированные группы в Active Directory.</p>
<p style="text-align: justify;">Следующим шагом копируем на новый сервер бинарные базы данных Samba с нашего старого сервера. Для этого создадим на новом сервере папку dbdir и скопируем в нее со старого сервера файлы:</p>
<p style="text-align: justify;">secrets.tdb<br />
schannel_store.tdb<br />
passdb.tdb<br />
gencache_notrans.tdb<br />
group_mapping.tdb<br />
account_policy.tdb</p>
<p style="text-align: justify;">Расположение файлов может быть разным в зависимости от инсталляции, но обычно их можно найти в папках /var/lib/samba и /var/lib/samba/private. Список файлов взят из вышеупомянутого HowTo, но к примеру в нашем случае нашлось только 5 файлов из 6 перечисленных, и на конечный результат это не повлияло.</p>
<p style="text-align: justify;">Чтобы убедить самбу, что мы обновляемся с PDC, создадим  файл smb.conf.PDC следующего вида:</p>
<p style="text-align: justify;"><code>[global]<br />
workgroup = &lt;короткое имя вашего домена, например CONTOSO&gt;<br />
netbios name = &lt;NetBIOS-имя вашего контроллера домена, например DC1&gt;<br />
security = user<br />
domain master = yes<br />
domain logons = yes<br />
server role = classic primary domain controller<br />
passdb backend = tdbsam<br />
[netlogon]<br />
comment = Network Logon Service<br />
path = /home/samba/netlogon<br />
guest ok = yes<br />
read only = yes<br />
[profiles]<br />
comment = Users profiles<br />
path = /home/samba/profiles<br />
guest ok = no<br />
browseable = no<br />
create mask = 0600<br />
directory mask = 0700</code></p>
<p style="text-align: justify;">Наконец можно приступать к процедуре апгрейда:</p>
<p style="text-align: justify;"><code>samba-tool domain classicupgrade --dbdir=dbdir/ --use-xattrs=yes --realm=&lt;полное имя вашего домена, например contoso.com&gt; --dns-backend=SAMBA_INTERNAL smb.conf.PDC</code></p>
<p style="text-align: justify;">Если все было сделано правильно, samba-tool должна отработать без ошибок и сформировать пригодный к употреблению /etc/samba/smb.conf. После запуска сервиса контроллера домена:</p>
<p style="text-align: justify;"><code>systemctl start samba-ad-dc</code></p>
<p style="text-align: justify;">можно проверить миграцию пользователей и групп командами</p>
<p style="text-align: justify;"><code>samba-tool user list<br />
samba-tool group list</code></p>
<p style="text-align: justify;">Если все хорошо, можно удалить содержимое файлов passwd_delta.txt, shadow_delta.txt и group_delta.txt из соответствующих системных файлов и перейти к дальнейшей настройке контроллера домена: Samba AD DC HowTo <a href="https://wiki.samba.org/index.php/Setup_a_Samba_Active_Directory_Domain_Controller#Testing_your_Samba_Domain_Controller" target="_blank">after the provisioning step</a></p>
]]></content:encoded>
			<wfw:commentRss>http://reals.org.ua/linux/samba-users-migration-tdbsam-to-samba4-ad/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Как удалить дополнительный почтовый ящик из Outlook 2010</title>
		<link>http://reals.org.ua/ms-exchange/how-to-remove-additional-mailbox-from-outlook-2010/</link>
		<comments>http://reals.org.ua/ms-exchange/how-to-remove-additional-mailbox-from-outlook-2010/#comments</comments>
		<pubDate>Wed, 14 Jan 2015 13:37:24 +0000</pubDate>
		<dc:creator>real</dc:creator>
				<category><![CDATA[MS Exchange]]></category>

		<guid isPermaLink="false">http://reals.org.ua/?p=134</guid>
		<description><![CDATA[В связке Exchange 2010 + Outlook 2010 довольно просто добавить пользователю доступ к ящику другого пользователя &#8211; даем полный доступ к ящику через Exchange Management Console и после перезапуска аутлука новый ящик магическим образом появляется в области навигации. А вот &#8230; <a href="http://reals.org.ua/ms-exchange/how-to-remove-additional-mailbox-from-outlook-2010/">Читать далее <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">В связке Exchange 2010 + Outlook 2010 довольно просто добавить пользователю доступ к ящику другого пользователя &#8211; даем полный доступ к ящику через Exchange Management Console и после перезапуска аутлука новый ящик магическим образом появляется в области навигации. А вот удалить такой mailbox из Outlook уже не так просто &#8211; после отбирания полного доступа ящик продолжает оставаться в области навигации, и ни удалить, ни закрыть его не получается. Виноваты в этом средства управления Exchange, которые не полностью вычищают из базы данных Active Directory последствия полного доступа к почтовому ящику. Чтобы достичь нужного результата, придется залезть в Active Directory руками:</p>
<ol>
<li style="text-align: justify;">запускаем оснастку Active Directory Users and Computers</li>
<li style="text-align: justify;">включаем в меню &laquo;Вид&raquo;  пункт &laquo;Дополнительные компоненты&raquo;, если он не включен</li>
<li style="text-align: justify;">заходим в свойства почтового ящика, доступ к которому нужно убрать, и переходим на вкладку &laquo;Редактор атрибутов&raquo;</li>
<li style="text-align: justify;">находим атрибут msExchDelegateListLink и удаляем из него пользователя, у которого нужно забрать доступ:</li>
</ol>
<p><a href="http://reals.org.ua/wp-content/uploads/aduc.png"><img class="alignnone size-medium wp-image-135" title="ADUC" src="http://reals.org.ua/wp-content/uploads/aduc-283x300.png" alt="ADUC-&gt;Attributes-&gt;msExchDelegateListLink" width="283" height="300" /></a></p>
<p style="text-align: justify;">После перезапуска Outlook немного подумает и таки удалит  ненужный ящик из области навигации.</p>
]]></content:encoded>
			<wfw:commentRss>http://reals.org.ua/ms-exchange/how-to-remove-additional-mailbox-from-outlook-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Если не виден шаблон сертификата</title>
		<link>http://reals.org.ua/windows-server/certificate-template-not-visible/</link>
		<comments>http://reals.org.ua/windows-server/certificate-template-not-visible/#comments</comments>
		<pubDate>Thu, 04 Sep 2014 08:45:54 +0000</pubDate>
		<dc:creator>real</dc:creator>
				<category><![CDATA[Windows Server]]></category>

		<guid isPermaLink="false">http://reals.org.ua/?p=128</guid>
		<description><![CDATA[Если после создания нового шаблона сертификата в Microsoft Certification Authority он не виден в списке доступных шаблонов, то может сильно помочь команда: certutil -SetCAtemplates +&#60;имя шаблона&#62; Запускать нужно из командной строки, запущенной с правами администратора.]]></description>
			<content:encoded><![CDATA[<p>Если после создания нового шаблона сертификата в Microsoft Certification Authority он не виден в списке доступных шаблонов, то может сильно помочь команда:</p>
<pre>certutil -SetCAtemplates +&lt;имя шаблона&gt;</pre>
<p>Запускать нужно из командной строки, запущенной с правами администратора.</p>
]]></content:encoded>
			<wfw:commentRss>http://reals.org.ua/windows-server/certificate-template-not-visible/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Получение сертификата клиента Exchange ActiveSync на IOS с помощью SCEP</title>
		<link>http://reals.org.ua/ms-exchange/ios-exchange-activesync-scep-client-certificate/</link>
		<comments>http://reals.org.ua/ms-exchange/ios-exchange-activesync-scep-client-certificate/#comments</comments>
		<pubDate>Mon, 10 Feb 2014 09:14:04 +0000</pubDate>
		<dc:creator>real</dc:creator>
				<category><![CDATA[IOS]]></category>
		<category><![CDATA[MS Exchange]]></category>

		<guid isPermaLink="false">http://reals.org.ua/?p=122</guid>
		<description><![CDATA[Как известно, клиент Exchange ActiveSync на устройствах под управлением IOS можно настроить на использование клиентского сертификата для соединения с сервером. Причем на самом устройстве соответствующих настроек нет, и для этого приходится использовать iPhone Configuration Utility (если у вас под рукой &#8230; <a href="http://reals.org.ua/ms-exchange/ios-exchange-activesync-scep-client-certificate/">Читать далее <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Как известно, клиент Exchange ActiveSync на устройствах под управлением IOS можно настроить на использование клиентского сертификата для соединения с сервером. Причем на самом устройстве соответствующих настроек нет, и для этого приходится использовать <strong>iPhone Configuration Utility</strong> (если у вас под рукой только Windows). В созданный с помощью iPCU профиль конфигурации можно добавить сертификат и затем указать его в настройках Exchange ActiveSync.</p>
<p style="text-align: justify;">Однако, процедура получения сертификата, импорта его в системное хранилище и затем выбора этого сертификата в iPCU может показаться утомительной (особенно последний пункт, поиск сертификата в списке установленных доставляет кучу удовольствия). Процесс можно автоматизировать, используя SCEP, благо IOS его поддерживает начиная с версии 4. Добавляем в профиль конфигурации настройки SCEP, и при правильной настройке сервера устройство получит сертификат сразу в процессе установки профиля. Стоит отметить, что сертификат должен иметь расширение «авторизация клиента», иначе авторизация на сервере не пройдет (если в качестве сервера SCEP используется Microsoft NDES, то шаблон сертификата, используемый по умолчанию, не подходит). Однако тут возникает вопрос: как указать клиенту ActiveSync, что он должен использовать сертификат, полученный в результате запроса SCEP? Это нельзя сделать с помощью iPCU. Придется редактировать профиль вручную.</p>
<p style="text-align: justify;">Итак, создаем профиль конфигурации, в который добавляем настройки Exchange ActiveSync (без сертификата клиента) и настройки запроса SCEP. Экспортируем этот профиль, не шифруя и не подписывая его. Открываем полученный файл с расширением .mobileconfig (это обычный xml, вполне читабельный) в текстовом редакторе и добавляем в секцию настроек Exchange ActiveSync ключ <strong>PayloadCertificateUUID</strong> со значением типа <strong>string</strong>, в котором указываем <strong>PayloadUUID</strong> секции настроек SCEP.  Теперь при установке профиля IOS будет знать, что клиент ActiveSync должен использовать сертификат, полученный в результате запроса SCEP.</p>
<p style="text-align: justify;">Все, остается только установить полученный профиль конфигурации на устройство, и оно автоматом получит сертификат и будет использовать его для авторизации на сервере Exchange.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://reals.org.ua/ms-exchange/ios-exchange-activesync-scep-client-certificate/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Переход с Exchange 2007 на 2010: особенности переезда мобильных пользователей</title>
		<link>http://reals.org.ua/ms-exchange/activesyncdevice-upgrade-manually-set-access-state/</link>
		<comments>http://reals.org.ua/ms-exchange/activesyncdevice-upgrade-manually-set-access-state/#comments</comments>
		<pubDate>Thu, 03 Oct 2013 11:27:57 +0000</pubDate>
		<dc:creator>real</dc:creator>
				<category><![CDATA[MS Exchange]]></category>

		<guid isPermaLink="false">http://reals.org.ua/?p=108</guid>
		<description><![CDATA[В процессе переноса почтовых ящиков пользователей с Exchange 2007 на Exchange 2010 мобильные устройства тех счастливчиков, которые пользовались корпоративной электронной почтой через ActiveSync, благополучно попадают в состояние доступа Mailbox Upgrade (DeviceAccessState: Allowed; DeviceAccessStateReason: Upgrade), в котором могут получать доступ к &#8230; <a href="http://reals.org.ua/ms-exchange/activesyncdevice-upgrade-manually-set-access-state/">Читать далее <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">В процессе переноса почтовых ящиков пользователей с Exchange 2007 на Exchange 2010 мобильные устройства тех счастливчиков, которые пользовались корпоративной электронной почтой через ActiveSync, благополучно попадают в состояние доступа <em>Mailbox Upgrade</em> (DeviceAccessState: <em>Allowed</em>; DeviceAccessStateReason: <em>Upgrade</em>), в котором могут получать доступ к почте 7 дней (по умолчанию) после переезда ящика на новый сервер. Но если по умолчанию новые устройства в вашей организации попадают в карантин или блокируются, то это случится и с переехавшими мобильниками по истечении <em>Upgrade Grace Period</em>, как эти 7 дней называет Microsoft. Чтобы пользователям не приходили пугающие письма о том, что их устройство попало в карантин, а администраторам не приходилось в самый неудобный момент лезть в ECP и вытаскивать из карантина несчастные мобильные, можно сразу же переводить устройства в состояние доступа <em>Allow</em> (DeviceAccessState: <em>Allowed</em>; DeviceAccessStateReason: <em>Individual</em>) вручную, то есть с помощью PowerShell. Такой вот небольшой скрипт переводит все мобильные устройства, находящиеся в Mailbox Upgrade Access State, в Allow Access State:</p>
<pre>foreach ($device in (Get-ActiveSyncDevice `
     | where { $_.DeviceAccessStateReason -eq 'Upgrade' }))
{
  $allowedIds = @();
  $allowedIds += Get-CASMailbox $device.UserDisplayName `
    | select ActiveSyncAllowedDeviceIDs -ExpandProperty ActiveSyncAllowedDeviceIDs;
  if ($allowedIds) { $allowedIds += $device.DeviceId; }
  else { $allowedIds = $device.DeviceId; }
  Set-CASMailbox $device.UserDisplayName -ActiveSyncAllowedDeviceIDs $allowedIds;
}</pre>
<p><a title="полезная статья на TechNet" href="http://technet.microsoft.com/en-us/library/ff959225(v=exchg.141).aspx">Understanding Device Access States</a></p>
]]></content:encoded>
			<wfw:commentRss>http://reals.org.ua/ms-exchange/activesyncdevice-upgrade-manually-set-access-state/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Корректное завершение работы VMware HA кластера с помощью apcupsd: updated to vSphere 5.1</title>
		<link>http://reals.org.ua/vmware/vmware-ha-cluster-5-1-shutdown-with-apcupsd/</link>
		<comments>http://reals.org.ua/vmware/vmware-ha-cluster-5-1-shutdown-with-apcupsd/#comments</comments>
		<pubDate>Fri, 24 May 2013 13:12:45 +0000</pubDate>
		<dc:creator>real</dc:creator>
				<category><![CDATA[VMware]]></category>

		<guid isPermaLink="false">http://reals.org.ua/?p=101</guid>
		<description><![CDATA[Это продолжение поста Корректное завершение работы VMware HA кластера с помощью apcupsd. При настройке автоматического завершения работы кластера на обновленной vSphere выяснилось, что скрипт отказывается соединяться с хостами ESXi из-за недоверия к их самоподписанным SSL-сертификатам. Пришлось его доработать &#8211; теперь &#8230; <a href="http://reals.org.ua/vmware/vmware-ha-cluster-5-1-shutdown-with-apcupsd/">Читать далее <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<h2>Это продолжение поста <a href="http://reals.org.ua/vmware/vmware-ha-cluster-shutdown-with-apcupsd/">Корректное завершение работы VMware HA кластера с помощью apcupsd</a>.</h2>
<p>При настройке автоматического завершения работы кластера на обновленной vSphere выяснилось, что скрипт отказывается соединяться с хостами ESXi из-за недоверия к их самоподписанным SSL-сертификатам. Пришлось его доработать &#8211; теперь при установке и сохранении паролей для доступа к хостам скрипт также пытается сохранить сертификаты хостов в папке /etc/ssl/vCluster, и при последующих соединениях считает эти сертификаты доверенными. Если в инфраструктуре используются подписанные централизованным CA сертификаты, то можно просто положить корневой сертификат центра сертификации в вышеуказанную папку. Вручную скачать сертификаты хостов можно по ссылкам вида https://&lt;адрес хоста&gt;/host/ssl_cert</p>
<p>Архив с инсталлятором скрипта: <a href="http://reals.org.ua/wp-content/uploads/vCluster.tar.gz">vCluster.tar.gz</a></p>
]]></content:encoded>
			<wfw:commentRss>http://reals.org.ua/vmware/vmware-ha-cluster-5-1-shutdown-with-apcupsd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
