Archive for the ‘ Windows ’ Category

Панель Управления через runas

Винда есть винда. Все по-дурацкому просто, и как всегда — окольными путями. Может и можна както по-красивому это сделать — но я незнаю как. В данном случае мне нужен был доступ к «Принтеры и Факсы» для установски http принтера. Но делал я все это через «Панель Управления», поэтому данный совет может быть использован и при необходимости просто попасть в нее для решения других задач.

Вот как сделал я:

  • Под обычным юзером зашел в C:\Program Files\Internet Explorer\
  • Правой кнопкой на IEXPLORE.EXE -> Запустить от имени -> Ввел Админские авторизационные даные
  • Открылся IE6 из под Админа 🙂
  • В адресной строке ввел: C:\
  • Открылся диск С
  • Потом в той же адресной строке выбрал уже в выпадающем меню «Панель Управления»
  • Ну там уже  «Принтеры и факсы» — из под Админа

Дальше установил http принтер купсовый 🙂 Все работает!
P.S. Проверено и 100% работает на IE6. А вот на IE8 такой трюк у меня не прокатил — надеюсь хоть с IE7 работает (пока негде проверить).
Удачи и вам в этом деле 🙂

Зеркало для Symantec Offline Updates

Многие знают о софтварных продуктах компании Symantec. Антивирус разработанный этой компанией используется у нас на работе. Оличительные черты данного антивируса пожалуй невсех впечатлят, но всеже:

  • вменяемая корпоративная лицензия
  • возможность централизированного управления и мониторинга
  • неслабая тормознутьсть в работе 🙂

Есть еще много всяких плюшек и радостей. Мне, к примеру, нравится наличие так называемых Offline Updates. Это обычные exe файлы, предназначенные для обновления антивируса на машинах которые не имеют доступа к интернету. Такие экзешнички можно скачать из офсайта symantec или с ftp. Для того чтобы иметь актуальную версию этих обновлений — приходилось частенько их качать (они обновляются примерно раз в сутки). Поэтому сама собой появилась задача:

  1. сделать на своей машине зеркало нужных мне директорий с симантековского ftp
  2. роздать доступ к ним в сети по samba (поскольку клиенты восновном с WinXP)

Учитывая особенности моего доступа в интернет, нужно чтобы скрипт работал через http прокси-сервер http://my.proxy:3128 (тем у кого прямой доступ в интернет необходимо просто закомментировать первых 6 строчек скрипта, там где задаются переменные ftp_proxy и http_proxy)
Ну чтож, покопавшись немного с bash, родился вот такой скрипт под названием /root/scripts/symantec_update.sh

#!/bin/bash
if [ -z ${ftp_proxy} ]; then
 export ftp_proxy="http://my.proxy:3128"
fi
if [ -z ${http_proxy} ]; then
 export http_proxy="http://my.proxy:3128"
fi
#URL="ftp://ftp.symantec.com/AVDEFS/symantec_antivirus_corp/"
WORK_DIR="/opt/symantec"
[ -d ${WORK_DIR} ] || mkdir ${WORK_DIR} ; mkdir ${WORK_DIR}/{SAV,SEP}
### <- Remove ALL OLD MD5 Summs -> ###
find ${WORK_DIR} -atime +1 -exec rm '{}' \;
cd ${WORK_DIR}

check_md5 () {
MD5_SYMANTEC="md5-hash.txt"
FILES=`ls |grep .exe`
for FILE in ${FILES}
do
   if [ -f ${FILE/exe/md5} ]; then
     continue
   else
     MD5_ORIG=`grep ${FILE} ${MD5_SYMANTEC} |tr [A-Z] [a-z] |cut -d' ' -f1`
     echo "${MD5_ORIG}  ${FILE}" > "${FILE/exe/md5}"
     md5sum --check --status "${FILE/exe/md5}"
     # echo "For file ${FILE} exit status = $?"
        if [ $? -ne 0 ]; then
          echo "${FILE} --- bad checksum !!!" > ../md5sum_${FILE}.log
        else
          [ -f ../md5sum_${FILE}.log ] && rm ../md5sum_${FILE}.log
        fi
   fi
done
}
get_updates_SAV () {
lftp -c 'open -e "mirror -e -c --no-recursion -i -x86.exe -i md5-hash.txt" hftp://ftp.symantec.com/AVDEFS/symantec_antivirus_corp'
}

get_updates_SEP () {
lftp -c 'open -e "mirror -e -c --no-recursion -i -v5i32.exe -i md5-hash.txt" hftp://ftp.symantec.com/AVDEFS/symantec_antivirus_corp'
}

cd SAV
get_updates_SAV
check_md5
cd ../

cd SEP
get_updates_SEP
check_md5
cd ../

Возможно, он далек от совершенства, но главное работает!

Добавляем запись в crontab для автоматического запуска каждых 8 часов в 53 минуты

53    0-23/3    *    *    *    /root/scripts/symantec_update.sh

Конфиг /etc/samba/smb.conf для роздачи этих двух директорий по samba выглядит так:

[global]
realm = MY.DOMAIN
netbios name = black
workgroup = WORK
security = ads
idmap uid = 10000-20000
idmap gid = 10000-20000
disable spoolss = Yes
show add printer wizard = No
template shell = /bin/bash
template homedir = /home/%D/%U
winbind use default domain = yes

[Symantec Updates]
comment = Symantec Offline Updates
path = /opt/symantec
browseable = yes
writable = no
create mask = 0664
directory mask = 0777
valid users = @"WORK\domain admins", @"WORK\domain users"

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

Ну вот и все! С заданием справились на 100% — апдейты автоматом качаются, и роздаются по samba с авторизацией в домене 🙂

Вводим Debian в домен под управлением Win2k8 Server

Задание: дать доменным пользователям из групп «domain users» и «domain admins» на работе доступ на свою машину по samba.

Дополнительные начальные данные:

  • на моей «рабочей лошадке» стоит Debian Lenny
  • пользователи которых я хочу пустить к себе по samba работают под WinXP с авторизацией через домен my.domain поднятый на Win2k8 (контроллер домена — controller.my.domain)
  • права на запись в моих шарах должны иметь только некоторые доменные админские группы, остальным — только чтение
  • учетная запись доменного админа Admin (он может ввести машину в домен)
  • рабочая группа — WORK ( наследство от давно почившего контроллера домена под Win NT 4)
  • имя моей машины — black

Итак, начнем! Сначала ставим необходимые пакетики:

black:~# aptitude install krb5-user winbind samba

Начинаем веселиться — вот такие у меня конфиги:

black:~# cat /etc/krb5.conf |grep -v ^#
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log

[libdefaults]
 default_realm = MY.DOMAIN
 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]
MY.DOMAIN = {
 kdc = controller.my.domain
 admin_server = controller.my.domain
}
[domain_realm]
 .my.domain = MY.DOMAIN
 my.domain = MY.DOMAIN
[login]
 krb4_convert = true
 krb4_get_tickets = false

Минимально необходимый конфиг samba выглядит вот так:

black:~# cat /etc/samba/smb.conf |grep -v ^#
[global]
 realm = MY.DOMAIN
 workgroup = WORK
 netbios name = black
 disable spoolss = Yes
 show add printer wizard = No
 security = ads
 idmap uid = 10000-20000
 idmap gid = 10000-20000
 template shell = /bin/bash
 template homedir = /home/%D/%U
 winbind use default domain = yes

[share]
 comment = Write for Domain Users
 path = /media/samba/share
 browseable = yes
 writable = yes
 create mask = 0664
 directory mask = 0777
 valid users = @"WORK\domain admins", @"WORK\domain users"
 write list = @"WORK\domain admins", @"WORK\domain users"

После того как настроили samba, надо бы ее перегрузить:

black:~# /etc/init.d/samba restart

И winbind не помешает передернуть:

black:~# /etc/init.d/winbind restart

Правим nsswitch.conf примерно до такого вида:

black:~# cat /etc/nsswitch.conf |grep -v ^#

passwd:         files winbind
group:          files winbind
shadow:         files winbind

hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4 winbind
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis

Чтобы вступили в силу изменения в конфиге /etc/nsswitch.conf без перегарузки, нужно от рута дать команду:

black:~# ldconfig

Перед тем как вводить машину в домен нужно сначала синхронизировать время с домен-контроллером:

black:~# ntpdate controller.my.domain

После удачной синхронизации времени мы готовы стать полноценным участником домена my.domain. Чтобы войти в домен выполняем от рута:

black:~# net ads join -W my.domain -S master -U Admin

password for Admin:

Admin— доменный администратор который имеет право ввести комп в домен

В ответ на это нас должны спросить доменный пароль для доменного пользователя Admin. После ввода пароля — МЫ В ДОМЕНЕ!!! Если конечно не вывалилась какаято ошибка. Проверить то что мы таки вошли в домен можно например набрав команду:

black:~# wbinfo -u

audit1

audit2

test_1

test_2

..........

В ответ на которую мы должны увидеть перечень доменных пользователей.

Для того чтобы в нашу систему можно было логиниться под доменными аккаунтами нужно привести конфиги PAM к такому виду:

black:~# cat /etc/pam.d/common-account
account sufficient pam_winbind.so
account required pam_unix.so

black:~# cat /etc/pam.d/common-auth
auth sufficient pam_winbind.so
auth required pam_unix.so use_first_pass

black:~# cat /etc/pam.d/common-session

session required pam_mkhomedir.so skel=/etc/skel/ umask=0022
session sufficient pam_winbind.so
session required pam_unix.so

Вот и все! Можно пробовать зайти, например, по ssh или samba на наш компьютер. Пользователей входящих в группы «domain admins» и «domain users» должно пускать без проблем (даже не спрашивая пароль).

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

Образ Windows из Linux

Часто ли у вас «падала» винда? Не надоедает ли ее переустанавливать раз в год? Знаю 100% что некоторые студенты из моей группы в институте специально ставят перед сессией «свеженькую» Windows и послее ее окончания — переустанавливают снова (на сесии идет нехилый документооборот — и вирусооборот тоже 🙂 ). Рано или поздно, но это надоедает. Неработает то, неработает это … система стала жестко тупить, некоторые программы стали вести себя неадекватно либо сломались вообще — картина знакомая многим! «Переустановить винду!» скажет любой, но какже это влом … ну что? Опять? И так из раза в раз.

Пытливый ум начинает искать уловки чтобы облегчить себе жизнь и сократить время на переустановку и настройку системы.

Пути оптимизации сего процесса возможны разные:

  1. сделать инсталяционный диск с WinXP «под себя»
  2. создать образ установленной и настроенной винды и спрятать его подальше от вирусов и шаловливых рученок пользователей на пыльную полку.

Конечно же плюсы есть и в первом и во втором методе — я испробовал их оба. Могу сказать в итоге, что  мне удалось собрать инсталяционный диск WinXP SP3 с необходимым набором софта, настроенный процентов на 90 под стандартные пользовательские нужны среднестатистического офисного работника. Но это заняло у меня порядочно времени. Возможно когдато расскажу об этом процессе, но в этот раз о варианте №2.

Итак, образ винды! Основная идея основана на желании както красиво завернуть готовую к работе на 100% систему в некий архив. Ну и конечно с возможностью этот архив развернуть в случае краха системы 🙂  Набор софта для этого дела впечетляет! Тут готовы помочь многие софтварные продукты. Из наиболее именитых и 100% работоспособных пожалуй назову Acronis и Ghost. Но к сожелению все это небесплатно 🙁 Например, Acronis для домашних пользователей предлагает продукт  Acronis True Image Home 2009 всегото по цене около 100 грн. Как не крути — а не бесплатно! Вертя в руках старенькую флешку на 1GB из которой когдато еще давно успешно сделал себе LiveUSB, подумал: «А как же Linux?» Ведь удобно иметь такой инструмент под рукой (а флешку то я всегда с собой таскаю). Покопавшись немного в google по этому вопросу, выяснил что и Linux в этом деле мне тоже вполне помощник. Теперь я знаю покрайней мере 2 инструмента для клонирования:

  1. dd — можно создать как образ диска целиком, так и отдельно взятого раздела. Работает исключительно с разделами поэтому побарабану какая там FS. Для особо изощренных — можно сохранить только таблицу разделов или загрузчик (или и то и другое одним файлом) для востановления в будущем. Но есть недостаток — dd копирует информацию побайтово! Тоесть даже если у вас есть раздел на 10G и занято там всего 2 — то образ получим всеравно 10G. Печально но факт!
  2. ntfsclone — утилита для клонирования/разворачивания образов файловой системы NTFS. Вот это уже ближе к тому что мне было нужно! Работает исключительно с файловой системой — поэтому при разворачивании ей нужен раздел! Получить возможность сделать BackUP можно загрузившись в Linux любым из доступных способов (с помощью LiveCD, LiveUSB, HDD).

Почитав чуток документации остановился на таком варианте (все делаю из под root):

sda1 — виндовый раздел «Диск C». На нем установлена и настроена WinXP — ее мы хотим забекапить 🙂

sda2 — виндовый раздел «Диск D». Раздел на котором обычно в винде хранится всякий хлам

  • Создать образ виндового диска С:

Монтируем виндовый «Диск D» (на него будем сохранять образ созданный с помощью ntfsclone)

# mkdir /mnt/win_d
# mount.ntfs-3g /dev/sda2 /mnt/win_d -o force
# ntfsclone --save-image -o - /dev/sda1 | gzip -c > /mnt/win_d/win_image_backup_`date +%F`.img.gz

В результате на виндовом «диске D» появится файлик с названием в духе win_image_backup_2009-11-13.img.gz Посути это обычный файл, поэтому с ним можно делать все что угодно для обеспечения еще большей безопасности — записать на CD/DVD диск, закинуть в сетку на другой комп, положить в инет на файлообменник 🙂 etc …

  • Розвернуть винду из такого образа можно используя такие действия:

Монтируем виндовый «Диск D» (нам же надо взять сохраненный ранее образ):

# mount /dev/sda2 /mnt/win_d

Разворачиваем винду из образа командой:

# gunzip -c /mnt/win_d/win_image_backup_2009-11-13.img.gz |ntfsclone --restore-image --overwrite /dev/sda1 -

Ну все! После отработки команды у нас будет винда в таком же виде как на момент бэкапа!

Хочу также добавить что лично создал/развернул таким образом десятки образов — все вполне успешно. И главное — быстро. Создание образа для раздела 20G (занято 5G) занимает примерно 25 минут, разворачивание — около 10. Впечетляет!

Переезд Win2k3 на новое железо

Неочень то я люблю Windows — но временами приходится иметь с ним дело … особенно на работе. Вот и в этот раз пришлось потрудиться чтобы заставить его работать на благо человечества!

Пожалуй начать стоит сначала 🙂 Жил-был сервер. Был он неособо могуч в плане железа, зато работал безглючно и спокойно. Управлялся он небезизвестной Win2k3. Но вот беда — начальство получило в разпоряжение новый сервер …. новее, мощнее — что тут скажеш? созрел момент когда переезд уже стал неизбежен!

Итак, что же мы имеем вначале:

  • Старый «сервер» (пишу в кавычках потому что сервером его можно назвать только по функционалу, но никак по железу) под управлением Windows Server 2003, вполне работающий, с кучей настроек которые очень уж нехотелось делать с нуля. Железо — обычный по нынешним временам офисный десктоп: какойто SATA винт, какойто неособо мощный процессор и 1GB памяти — вот и все что можно про него сказать. Используется как MsSQL сервер и Liga Server.
  • Новый сервер: HP ProLiant ML150 G2. Машинка вполне так ничего. 5 винтов Ultra 320 SCSI по 33 Гига собранные в RAID 5.0, 1x2GB мозгов, один проц Intel Xeon 3.0 GHz (пустой слот под второй, если надо будет — докупим!)

Задача: культурно переехать со старого «сервера» на HP Proliant ML150 G2 и при этом не потерять функционал и настройки. В дальнейшем на новом сервере буду разворачивать еще и  Symantec AntiVirus Sever.

К данному вопросу я морально готовился довольно долго. И дело скорее в географии нежели в фобии предстоящего процесса — эта задача стояла на второй работе, куда я попадаю в лучшем случае 1 раз в неделю. Собственно первая мысль была такая: «Почему бы просто не создать образ винды на старом серваке с помощью, например, Ghost и потом розвернуть этот образ на новом?». Но было сомнение что винда после такого радикального изменения железа вообще подымится. Опасения, восновном, основывались на смене дисковой подсистемы. Поэтому был и «план Б» — после разворачивания образа на новом серваке сделать Recovery для Windows диском с которого она в свое время ставилась. Когда же вчера, наконец, пришло «всемя Ч» и я взялся за дело — все мои догадки и опасения оправдались. Итак, алгоритм проделанной вчера работы:

На старом «сервере»:

  1. грузимся с HBCD и с помощью Ghost создаем образ винды full_c_image.GHO, который укладываем на диск D старого «сервера»
  2. грузимся назад в винду и убеждаемся что она в сети (ip address/mask 10.0.0.1/24 ) и что диск D доступен как шара $D

На новом сервере:

  1. Загрузился с Elive (Линуксовый LiveCD на базе Debian с WM E17). Adaptec-овский SCSI-RAID контроллер он разпознал наура! И также нормально разпозналась сетевая карточка (что тоже важно было для меня)
  2. С помощью GParted сделал NTFS раздел в конце диска размером 20Гиг (лиш бы образ винды со старого «сервера» поместился)
  3. Примонтировал только что созданный раздел, предварительно создав для него директорию /mnt/new_d
    # mkdir /mnt/new_d
    # mount.ntfs-3g /dev/sda1 /mnt/new_d -o force
  4. Настроил сетевую карточку:
    # ifconfig eth0 10.0.0.2/24 up

    и убедился что старый сервер видится нормально с помощью команды ping 10.0.0.1

  5. Примонтировал диск D старого сервера в созданную для этого директорию /mnt/old_d
    # mkdir /mnt/old_d
    # mount.cifs //10.0.0.1/D$ /mnt/old_d -o user=Administrator,iocharset=utf8

    Последняя команда спросит пароль пользователя Administrator на старом «сервере» — нужно его ввести, иначе не подмонтирует!

  6. Ну и копируем образ со старого «сервера» на новый такой вот командой:
    # cp -v /mnt/old_d/full_c_image.GHO /mnt/new_d/

    Отработка этой команды заняла некоторое время (образ то весил около 6 Гиг) — всетаки сетка 100Mb 🙁

  7. После того как образ скопировался — отмнонтируем оба раздела:
    # umount /mnt/{old,new}_d
  8. И перегружаемся:
    # reboot

Что теперь имеем: образ диска С со старого «сервера» лежит на диске D нового сервера 🙂 Этого я и добивался. Теперь надо его розвернуть:

Новый сервер:

  1. Грузимся с HBCD и с помощью Ghost разворачиваем образ винды.
  2. После этого — reboot

И что же мы видим теперь? Пробуем грузиться с жесткого на новом сервере. Винда пытается дернуться … даже показывает картинку типа windows 2003 но потом мелькает BlueDesk и самостоятельная перегрузка. Ну чтож — этого следовало ожидать! Посути у нас уже есть винда — которая нехочет грузиться, и это гораздо лучше чем ничего! Достаем из полки установочный диск нашей доблесной Win2k3 и грузимся с него. Сначала я загрузился просто, без каких-либо дополнительных телодвижений в плане поддержки SCSI — не прокатило, не видит винчестер! Ну чтож … со старого сервера топаем на сайт http://hp.com и загружаем все доступные драйвера мало-мальски касающиеся SCSI. Таковых я скачал 3 штуки вот тут. Эти дрова даются hp в виде exe архивов, при запуске которых можно сделать либо extract либо install — мне подходил extract с указанием дискеты как места назначения для извлеченных файлов. Потом эту дискетку вставил в новый сервер и загрузился снова с установочного диска Win2k3, но уже с нажиманием F6 на этапе загрузки драйверов, после чего виндовый инсталлер дал возможность добавить драйвер для моего SCSI контроллера. Досих пор немогу понять почему при добавлении драйверов подписанных как для Adaptec — винда невидит HDD но зато когда подсунул драйвера SATA — винт увидился и я смог сделать Recovery Windows. Дело, видать, в работе самого SCSI-RAID контроллера … надо будет почитать/подумать.

После этого — винда завелась без проблем. Установил скачанные с офсайта дрова (перед этим удалил все устройства в диспетчере устройств и перегрузился). Почемуто не подошли дрова для сетевой карты скачанные с офсайса. Печально. Хорошо хоть с DriverPack_LAN v.9 был под рукой, поставил его — драйвера подошли.

В конфигурации системы пришлось поправить некоторые настройки ставшие неактуальными для нового сервера. Например скрипт бекапов MSSQL который раньше делался на диск X, которого в новой конфигурации просто небыло. Несколько неактуальных шар удалил, ну и так далее…. Почему то незахотела стартовать служба LigaServer. Как результат, при старте винды вываливалось окошко что не все сервисы, которые должны стартовать автоматически, стартонули. Посмотрел лог в папке C:\ProgramFiles\Liga70\log\ и увидел что Лиговский сервак вполне адекватно ругался на отсутствие LPT ключа защиты — он досих пор торчал в старом сервере 🙂 Переткнул — непомогло! Дальше пришлось доставать бубен. Ругался уже на чтото другое … но такое я уже гдето видел ( параноидальное предположение — возможно изза того что изменилась сетевая карточка). Запустил LigaServer ярлычком с Desktop (в трее появился значек), на значке в трее правой кнопкой -> Конфигурация -> В настройках старта сервера выбрал «Запуск как приложение» -> Сохранил. После этого Правой кнопкой на значке в трее -> Запуск -> Запустился! Вернулся послднюю настройку назад и перегрузился — Стартонуло нормально! Гдето я такое уже видел … что ему ненравится  — непонятно, главное что работает!

Переезд считаю успешным … все сервисы что работали раньше — работают на новом сервере так же безпроблемно. Старый пока не сносил — пусть поработает недельку на новом — если никакие бока не вылезут, то снесу старый сервак 🙂 Ну вроде все!