DEBIAN+SAMBA=PDC

Внимание! На современной самбе может не заработать!!! Я сам не пробовал за отсутствием надобности!
Если это работает на современной версии самбы, просьба откомментировать или обсудить на форуме:

Данная документация расчитана на DEBIAN 4.0 или другие дистрибутивы, где рассматриваеться версия самбы «samba_3.0.24».

Как на DEBIAN 4.0 поднять полноценный контроллер домена

Данное HowTo рассчитано на системных администраторов компаний, с количеством пользователей не более 200 человек, и не обладающих достаточным бюджетом для покупки дорогих серверов, или просто разумно использующая свои средства.
В качестве сервера описываемого PDC может служить старая рабочая станция желательно с двумя жесткими дисками (для софтового рейда 1 уровня).

К моему великому сожалению, программисты фирмы в которой я работаю, до сих пор не научились писать программы под Linux. Потому я вынужден администрить рабочие станции на платформе Microsoft. Помимо абсолютно дутой безопасности, эта с позволения сказать «операционная система» совершенно не приспособлена для управления! Тем не менее, прописывать на каждой рабочей станции пароли для пользователя — не удобно. Поднимать всевозможные монстры типа: AD или ED — накладно и глючно. К сожалению мой опыт использования Novell eDirectory лишний раз меня убедил в том, что данные системы не целесообразно применять в небольших фирмах, с количеством пользователей не более 200 человек. Ибо это очень накладно, так, как данные системы очень требовательны к ресурсам, и качеству компьютеров. Support от Micro$of оставляет желать лучшего. Что касается Novell, то на сегодняшний день, в Москве, да и наверное во всей России, реальный Support осуществляет один человек — Виталий Сайфулин. Дай бог ему всех благ, но этого слишком мало, чтобы полагаться на помощь этой уважаемой компании. Так-же есть еще немаловажный аргумент в пользу PDC на SAMBA — это полный контроль всего что создаешь. Это как строить свой собственный дом, он может получиться посредственным, даже опасным, но может получиться и самым добротным. Как говориться «не Бог давал, а сам ковал». Это позволит очень быстро и надежно устранять возможные проблемы. Внимание, вы пользуетесь этой статьей на свой страх и риск! Автор не отвечает за последствия вызванные этой статьей. Прежде всего хочу выразить огромный респект CoderInside! Ибо после долгих поисков в интернете, его HowTo оказалось единственным приемлемым материалом. Потому, в качестве базовой документации взято HowTo от CoderInside — SAMBA_PDC_Slackware«. Собственно я и собирался его применить на своем сервере. Но к сожалению в Debian 4.0 не все работало как хотелось. На пример, почему-то не работал скрипт назначения локальной группы «Опытные пользователи» запускаемый из конфигурационного файла samba-ы.
Так-же данная документация дополнена диалоговыми скриптами управления доменом. Перед тем, как мы преступим к установки SAMBA, хочу немного коснуться вопроса настройки файловой системы при установки Debian. А именно: — учитывая, что это будет файловый сервер, то для надежности хранения информации нам не помешает рейд!
Совсем не обязательно покупать плату для рейд-массива, вполне можно обойтись и софтовым рейдом. Для этого на каждом диске создайте одинакового размера разделы. Потом в свойствах файловой системы этих разделов — укажите «RAID».
После в меню настройки софтового рейда настройки ваши рейд-массивы.
После настройки рейд-массивов — укажите как их использовать (swap, ext3 / и.т.д) Код: 

apt-get install samba samba-common samba-doc libcupsys2-gnutls10 libkrb53 winbind smbclient

nano /etc/samba/smb.conf
Код:

[global]
 workgroup = MSK
 netbios name = smb
 server string = SMB SERVER

 passdb backend = tdbsam

 log level = 1
 log file = /var/log/samba/workstations/%m.log
 max log size = 50

 add user script = /usr/sbin/useradd -m %u
 delete user script = /usr/sbin/userdel -r %u

 add group script = /usr/sbin/groupadd %g
 delete group script = /usr/sbin/groupdel %g

 add user to group script = /usr/bin/gpasswd -a %u %g
 delete user from group script = /usr/bin/gpasswd -d %u %g

 add machine script = /usr/sbin/useradd -g nt_workstations -s /bin/false -d /dev/null %u
 set primary group script = /usr/sbin/usermod -g %g %u

 logon path =
 logon drive =
 logon home =
 logon script = %G.bat
 domain logons = yes

 socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192

 interfaces = eth0 lo
 bind interfaces only = Yes
 hosts allow = 172.16., 127.

 time server = yes

 preferred master = yes
 domain master = yes
 local master = yes
 os level = 255

 unix charset = utf8
 dos charset = cp1251
 display charset = cp1251

 load printers = yes
 printing = cups
 printcap name = cups
 wins support = yes

 [printers]
 comment = All printers
 path = /var/spool/samba
 public = yes
 printable = yes
 guest ok = yes

 [homes]
 comment = Home Directories
 browseable = no
 writable = yes

 [netlogon]
 path = /home/samba/netlogon
 admin users = admin
 valid users = %U
 guest ok = yes
 share modes = no
 writable = no
 write list = @nt_admins,@nt_it
 #read only = no
 #browseable = yes

 # Расскоментируйте строку ниже, если хотите чтобы пользователи
 # на своих ПК были членами группы "Опытные пользователи" (сработает после 2-го входа пользователя в домен)
 #Не забудьте создать скрипт:
 #nano /usr/local/bin/smb
 #!/bin/bash
 #net rpc group addmem "Опытные пользователи" $1 -S $2 -Uadmin%1 &
 #и дать права
 #chmod +x /usr/local/bin/sm

 #root preexec = net rpc group addmem "Опытные пользователи" %U -S %m -Uadmin%1 &
 #root preexec = net rpc group addmem "Опытные пользователи" "veronika" -S "mojaisk-srv" -Uadmin%1 &
 root preexec = /usr/local/bin/smb %U %m

 [incoming]
 path = /home/samba/share/incoming
 writable = yes
 create mask = 0775
 directory mask = 0775
 ;force group = users
 valid users = @managers, @nt_admins

 [docs]
 path = /home/samba/share/docs
 writable = yes
 write list = @nt_admins, @nt_it

 [distrib]
 path = /home/samba/share/distrib
 write list = @nt_admins, @nt_it

 [clients]
 path = /home/samba/share/clients
 writable = yes
 valid users = @managers, @nt_admins, @nt_it

 [home]
 path = /home/%U
 writable = yes
 create mask = 0775
 directory mask = 0775
 ;force group = users
 valid users = %U

nano /usr/local/bin/smb
Код:

#!/bin/bash
 net rpc group addmem "Опытные пользователи" $1 -S $2 -Uadmin%1 &

Код:

chmod +x /usr/local/bin/smb

Создаем шаринги согласно конфигу и
Код:

chmod 777 /home/samba/share

Внимание! проследите чтобы права Linux на созданные вами шаринги, не препятствовали доступу!
Я рекомендую для начала установить полный доступ на шаринги Код:

chmod 777 -R /home/samba/share

и только после тестирования системы на доступ до шарингов, применять более строгии квоты от Linux!

Код:

nano /home/samba/netlogon/users.bat

Код:

net time \\SMB /set /yes
 net use x: \\SMB\share\incoming
 net use y: \\SMB\share\docs
 net use u: \\SMB\share\home
 net use z: \\SMB\share\distrib

Код:

unix2dos /home/samba/netlogon/*

Код:

chgrp -R users /home/samba/incoming
 chmod -R g+w /home/samba/incoming

Код:

groupadd nt_managers
 groupadd nt_workstations
 groupadd nt_admins
 groupadd nobody

Код:

chgrp -R nt_managers /home/samba/clients
 chmod -R g+w /home/samba/clients

Код:

smbpasswd -a root

Сопоставляем созданные группы:
Код:

net groupmap add rid=514 ntgroup="Domain Guests" unixgroup=nobody
 net groupmap add rid=513 ntgroup="Domain Users" unixgroup=users
 net groupmap add rid=515 ntgroup="Domain Computers" unixgroup=nt_workstations
 net groupmap add rid=512 ntgroup="Domain Admins" unixgroup=nt_admins
 net groupmap add  ntgroup="Managers" unixgroup=nt_managers
 net groupmap add  ntgroup="BOOCKKEEPPERS" unixgroup=nt_bookkeepers
 net groupmap add  ntgroup="IT" unixgroup=nt_managers

Проверяем:
Код:

net groupmap list
 Managers (S-1-5-21-1576939014-896421100-3238985702-1001) -> nt_managers
 BOOKKEEPERS (S-1-5-21-1576939014-896421100-3238985702-1021) -> nt_bookkeepers
 Domain Users (S-1-5-21-1576939014-896421100-3238985702-513) -> users
 Domain Computers (S-1-5-21-1576939014-896421100-3238985702-515) -> nt_workstations
 Domain Admins (S-1-5-21-1576939014-896421100-3238985702-512) -> nt_admins
 Domain Guests (S-1-5-21-1576939014-896421100-3238985702-514) -> nobody
 IT (S-1-5-21-1576939014-896421100-3238985702-1019) -> nt_it

Создадим администратора
Код:

useradd -m -c "Admin" -G nt_admins -g users admin
 smbpasswd -a admin

Проверим
Код:

net rpc group members "Domain Admins"  -Uadmin%1
 MSK\admin

где:
smb — сервер
admin — пользователь
1 — пароль

Далее дадим права группе Domain Admins
Код:

net rpc rights grant "Domain Admins"  SeMachineAccountPrivilege SeTakeOwnershipPrivilege SeBackupPrivilege  SeRestorePrivilege SeRemoteShutdownPrivilege SePrintOperatorPrivilege SeAddUsersPrivilege  SeDiskOperatorPrivilege -Uadmin%1

Введем сервер в домен
Код:

net rpc join  -U admin%1
 Joined domain MSK.

Тэст
Код:

net rpc testjoin
 Join to 'MSK' is OK

Код:

net rpc info -U admin%1
 Domain Name: MSK
 Domain SID: S-1-5-21-1576939014-896421100-3238985702
 Sequence number: 1186432570
 Num users: 25
 Num domain groups: 5
 Num local groups: 0

Добавление пользователей

Добавим в БД SAMBA все рабочие станции. По умолчанию они будут принадлежать группе «Domain Computers».
Это можно сделать с помощью скриптов (читайте ниже).
Код:

net rpc user add dedulin$  -U admin%1
 net rpc user add feoktistova$  -U admin%1
 net rpc user add pvl$ -U admin%1

Добавим в БД SAMBA всех пользователей. По умолчанию они будут принадлежать группе «Domain Users».
Это можно сделать с помощью скриптов (читайте ниже).
Код:

net rpc user add dedulin -S SMB -U admin%1
 net rpc user add feoktistova -S SMB -U admin%1
 net rpc user add pvl -S SMB -U admin%1

Добавить/удалить сопоставление
Код:

net groupmap {add,delete} ntgroup="Managers" unixgroup=nt_managers

Добавить/удалить пользователя
Код:

net rpc user {add,delete} user1 -U admin%1

Добавить/удалить компьютер
Код:

net rpc user {add,delete} comp1$ -U admin%1

Добавить/убрать пользователя в доп. группу
Код:

net rpc group {addmem,delmem} "Managers" user1 -U admin%1

Сменить основную группу пользователя
Код:

usermod -g nt_managers user

Установить пароль для пользователя
Код:

smbpasswd user

Ввести сервер в домен
Код:

net rpc join -Uadmin%1

7) Проверить на вход в домен
Код:

net rpc testjoin

Добавить права определенной группе
Код:

net rpc rights grant "Domain Admins" SeMachineAccountPrivilege SeTakeOwnershipPrivilege SeBackupPrivilege               
 SeRestorePrivilege SeRemoteShutdownPrivilege SePrintOperatorPrivilege SeAddUsersPrivilege SeDiskOperatorPrivilege -Uadmin%1

Список сопоставлений:
Код:

net groupmap list

Список всех пользователей
Код:

net rpc user -U admin%1

Список всех групп
Код:

net rpc group -U admin%1

Список пользователей принадлежащих определенной группе
Код:

net rpc group members "Managers" -U admin%1

Список компьютеров (группа «Domain Computers»)
Код:

net rpc group members "Domain Computers" -U admin%1

Группы, которым принадлежит определенный пользователь
Код:

net rpc user info user3 -Uadmin%1

Общая информация о домене
Код:

net rpc info -Uadmin%1

Код:

apt-get install dialog

nano /usr/local/bin/usrmng.sh
Код:

#! /bin/sh
 if [ -z $DISPLAY ]
 then
 DIALOG=dialog
 else
 DIALOG=Xdialog
 fi
 tempfile=`mktemp 2>/dev/null` || tempfile=/tmp/test$$
 trap "rm -f $tempfile" 0 1 2 5 15

 $DIALOG --backtitle "OOO Берег Столица" \
 --title "SMB User Manager" --clear \
 --menu  "
 Sergey Ivanovsky (
 sergey@linux.cpms.ruЭтот e-mail адрес защищен от спам-ботов, для его просмотра у Вас должен быть включен Javascript
 ):
 " 30 50 15 \
 "1"  "Adding new Users to Users group" \
 "2"  "Adding new users to Manager group" \
 "3"  "Adding new users to Buh group" \
 "4"  "Adding new users to IT group" \
 "5"  "Add new WorkStation" \
 "6"  "Delete Users" \
 "7"  "Delete Workstatoon" \
 "8"  "List Users" \
 "9"  "List WorkStation" \
 2> $tempfile

 retval=$?

 choice=`cat $tempfile`
 case $retval in
 0)
 #    echo "'$choice' chosen."
 if [ "$choice" == "1" ];then
 #		echo "Add User"
 /usr/local/bin/AddUser.sh
 elif [ "$choice" == "2" ];then
 #		echo "Add Manager"
 /usr/local/bin/AddManagers.sh
 elif [ "$choice" == "3" ];then
 #		echo "Add Buh"
 /usr/local/bin/AddBuh.sh
 elif [ "$choice" == "4" ];then
 #		echo "Add IT"
 /usr/local/bin/AddIt.sh
 elif [ "$choice" == "5" ];then
 #		echo "Add Workstation"
 /usr/local/bin/AddSt.sh
 elif [ "$choice" == "6" ];then
 #		echo "Delete User"
 /usr/local/bin/DelUser.sh
 elif [ "$choice" == "7" ];then
 #		echo "Delete Workstation"
 /usr/local/bin/DelSt.sh
 elif [ "$choice" == "8" ];then
 #		echo "UserList"
 /usr/local/bin/ListUser.sh
 elif [ "$choice" == "9" ];then
 #		echo "UserStation"
 /usr/local/bin/ListSt.sh
 else
 exit
 fi

 /usr/local/bin/usrmng.sh
 ;;
 1)
 echo "Cancel pressed.";;
 255)
 echo "ESC pressed.";;
 esac

nano /usr/local/bin/AddBuh.sh
Код:

if [ -z $DISPLAY ]
 then
 DIALOG=dialog
 else
 DIALOG=Xdialog
 fi
 tempfile=`mktemp 2>/dev/null` || tempfile=/tmp/test$$
 trap "rm -f $tempfile" 0 1 2 5 15

 $DIALOG --title "Пользователь" --clear \
 --inputbox "Login" 16 51 2> $tempfile

 retval=$?

 case $retval in
 0)
 echo "Вы ввели `cat $tempfile`"
 useradd  -d /home/`cat $tempfile` -G nt_buh,nt_managers,users -g nt_buh -s /bin/bash -p `cat $tempfile` `cat $tempfile`
 mkdir /home/`cat $tempfile`
 chown `cat $tempfile`:users /home/`cat $tempfile`
 #smbpasswd -a `cat $tempfile`
 (sleep 2; echo `cat $tempfile`; sleep 2; echo `cat $tempfile`) | smbpasswd -s -a `cat $tempfile`
 ;;
 1)
 echo "Отказ от ввода.";;
 255)
 if test -s $tempfile ; then
 cat $tempfile
 else
 echo "Нажата клавиша ESC."
 fi
 ;;
 esac

nano /usr/local/bin/AddIt.sh
Код:

if [ -z $DISPLAY ]
 then
 DIALOG=dialog
 else
 DIALOG=Xdialog
 fi
 tempfile=`mktemp 2>/dev/null` || tempfile=/tmp/test$$
 trap "rm -f $tempfile" 0 1 2 5 15

 $DIALOG --title "Пользователь" --clear \
 --inputbox "Login" 16 51 2> $tempfile

 retval=$?

 case $retval in
 0)
 echo "Вы ввели `cat $tempfile`"
 useradd  -d /home/`cat $tempfile` -G nt_it,nt_admins,nt_managers,users -g nt_it  -s /bin/bash -p `cat $tempfile` `cat $tempfile`
 mkdir /home/`cat $tempfile`
 chown `cat $tempfile`:users /home/`cat $tempfile`
 #smbpasswd -a `cat $tempfile`
 (sleep 2; echo `cat $tempfile`; sleep 2; echo `cat $tempfile`) | smbpasswd -s -a `cat $tempfile`
 ;;
 1)
 echo "Отказ от ввода.";;
 255)
 if test -s $tempfile ; then
 cat $tempfile
 else
 echo "Нажата клавиша ESC."
 fi
 ;;
 esac

nano /usr/local/bin/AddManagers.sh
Код:

if [ -z $DISPLAY ]
 then
 DIALOG=dialog
 else
 DIALOG=Xdialog
 fi
 tempfile=`mktemp 2>/dev/null` || tempfile=/tmp/test$$
 trap "rm -f $tempfile" 0 1 2 5 15

 $DIALOG --title "Пользователь" --clear \
 --inputbox "Login" 16 51 2> $tempfile

 retval=$?

 case $retval in
 0)
 echo "Вы ввели `cat $tempfile`"
 useradd  -d /home/`cat $tempfile` -G nt_managers,users -g nt_managers  -s /bin/bash -p `cat $tempfile` `cat $tempfile`
 mkdir /home/`cat $tempfile`
 chown `cat $tempfile`:users /home/`cat $tempfile`
 #smbpasswd -a `cat $tempfile`
 (sleep 2; echo `cat $tempfile`; sleep 2; echo `cat $tempfile`) | smbpasswd -s -a `cat $tempfile`
 ;;
 1)
 echo "Отказ от ввода.";;
 255)
 if test -s $tempfile ; then
 cat $tempfile
 else
 echo "Нажата клавиша ESC."
 fi
 ;;
 esac

nano /usr/local/bin/AddUser.sh
Код:

if [ -z $DISPLAY ]
 then
 DIALOG=dialog
 else
 DIALOG=Xdialog
 fi
 tempfile=`mktemp 2>/dev/null` || tempfile=/tmp/test$$
 trap "rm -f $tempfile" 0 1 2 5 15

 $DIALOG --title "Пользователь" --clear \
 --inputbox "Login" 16 51 2> $tempfile

 retval=$?

 case $retval in
 0)
 echo "Вы ввели `cat $tempfile`"
 useradd  -d /home/`cat $tempfile` -G users -g users  -s /bin/bash -p `cat $tempfile` `cat $tempfile`
 mkdir /home/`cat $tempfile`
 chown `cat $tempfile`:users /home/`cat $tempfile`
 #smbpasswd -a `cat $tempfile`
 (sleep 2; echo `cat $tempfile`; sleep 2; echo `cat $tempfile`) | smbpasswd -s -a `cat $tempfile`
 ;;
 1)
 echo "Отказ от ввода.";;
 255)
 if test -s $tempfile ; then
 cat $tempfile
 else
 echo "Нажата клавиша ESC."
 fi
 ;;
 esac

nano /usr/local/bin/AddSt.sh
Код:

if [ -z $DISPLAY ]
 then
 DIALOG=dialog
 else
 DIALOG=Xdialog
 fi
 tempfile=`mktemp 2>/dev/null` || tempfile=/tmp/test$$
 trap "rm -f $tempfile" 0 1 2 5 15

 $DIALOG --title "Введите имя рабочей станции" --clear \
 --inputbox "Login" 16 51 2> $tempfile

 retval=$?

 case $retval in
 0)
 #       echo "Вы ввели `cat $tempfile`"
 net rpc user add `cat $tempfile`\$ -U admin%$(cat /etc/samba/adminpswd)
 ;;
 1)
 echo "Отказ от ввода.";;
 255)
 if test -s $tempfile ; then
 cat $tempfile
 else
 echo "Нажата клавиша ESC."
 fi
 ;;
 esac

nano /usr/local/bin/DelUser.sh
Код:

if [ -z $DISPLAY ]
 then
 DIALOG=dialog
 else
 DIALOG=Xdialog
 fi
 tempfile=`mktemp 2>/dev/null` || tempfile=/tmp/test$$
 trap "rm -f $tempfile" 0 1 2 5 15

 $DIALOG --title "Удаление Пользователя" --clear \
 --inputbox "Login" 16 51 2> $tempfile

 retval=$?

 case $retval in
 0)
 #       echo "Вы ввели `cat $tempfile`"
 smbpasswd -x `cat $tempfile`
 userdel -r `cat $tempfile`
 ;;
 1)
 echo "Отказ от ввода.";;
 255)
 if test -s $tempfile ; then
 cat $tempfile
 else
 echo "Нажата клавиша ESC."
 fi
 ;;
 esac

nano /usr/local/bin/DelSt.sh
Код:

if [ -z $DISPLAY ]
 then
 DIALOG=dialog
 else
 DIALOG=Xdialog
 fi
 tempfile=`mktemp 2>/dev/null` || tempfile=/tmp/test$$
 trap "rm -f $tempfile" 0 1 2 5 15

 $DIALOG --title "Удаление Рабочей станции" --clear \
 --inputbox "Login" 16 51 2> $tempfile

 retval=$?

 case $retval in
 0)
 #       echo "Вы ввели `cat $tempfile`"
 net rpc user delete `cat $tempfile`\$ -U admin%$(cat /etc/samba/adminpswd)
 userdel  `cat $tempfile`
 ;;
 1)
 echo "Отказ от ввода.";;
 255)
 if test -s $tempfile ; then
 cat $tempfile
 else
 echo "Нажата клавиша ESC."
 fi
 ;;
 esac

nano /usr/local/bin/ListSt.sh
Код:

#! /bin/sh
 if [ -z $DISPLAY ]
 then
 DIALOG=dialog
 else
 DIALOG=Xdialog
 fi
 tempfile=`mktemp 2>/dev/null` || tempfile=/tmp/test$$
 trap "rm -f $tempfile" 0 1 2 5 15

 net rpc group members "Domain Computers" -U  admin%$(cat /etc/samba/adminpswd) | sed s/\$$// > $tempfile

 $DIALOG --clear --title "       Domain Computers" --textbox "$tempfile" 22 30

 case $? in
 0)
 echo "OK";;
 255)
 echo "ESC pressed.";;
 esac

nano /usr/local/bin/ListUser.sh
Код:

#! /bin/sh
 if [ -z $DISPLAY ]
 then
 DIALOG=dialog
 else
 DIALOG=Xdialog
 fi
 tempfile=`mktemp 2>/dev/null` || tempfile=/tmp/test$$
 trap "rm -f $tempfile" 0 1 2 5 15

 #cat < $tempfile
 #`net rpc user -U admin%1 | grep \$$`
 #EOF

 net rpc user -U admin%$(cat /etc/samba/adminpswd) | sed -e /\$$/d | sed -e /root/d | sed -e /admin/d > $tempfile

 $DIALOG --clear --title "TEXT BOX" --textbox "$tempfile" 22 30

 case $? in
 0)
 echo "OK";;
 255)
 echo "ESC pressed.";;
 esac

Код:

echo adminpasswd > /etc/samba/adminpswd

adminpasswd — пароль администратора домена. В этом HowTo везде «1».
Если вам кажеться, что в сетях с Window может присутствовать какая-то «безопасность» — усложните пароль

Даем атрибут исполнения
Код:

chmod +x /usr/local/bin/*
Внимание! Обязательно отключите брендмауер! С ним у пользователю не передадуться привелегии «Опытные пользователи»!
Да и по моему скромному мнению, бредмауэр защищает не столько от внешних атак и вирусов, сколько от технического персонала Как настроить профиль пользователя, создаваемый системой по умолчанию

Для этого следует создать временного пользователя, загрузиться в его профиль и выполнить все необходимые настройки. Затем, загрузившись под администраторским логином, следует скопировать содержимое папки этого пользователя взамен содержимого папки «Default User». При этом на этот вновь созданный каталог «Default User» следует выставить такие же права доступа, какие были раньше. Останется только удалить созданного нами временного пользователя и его профиль. Так как при заходе под гостевым логином содержимое папки «Default User» копируется в свежесозданную папку «Guest», удаляемую при отлогинивании, все созданные нами настройки останутся в силе и на гостевом логине. 

Как превратить домашнюю операционную систему в рабочую станцию, а рабочую станцию в сервер

Операционные системы Windows одного семейства имеют одинаковые ядра, а отличаются только вспомогательными файлами и утилитами. Однако некоторые возможности ядра заблокированы у младших систем в семействе. За эту блокировку отвечают лишь три параметра в системном реестре. Путём их изменения можно заставить домашнюю операционку (Windows XP Home) считать себя рабочей станцией (Windows XP Professional), а рабочую станцию (Windows NT Workstation, Windows 2000 Professional, Windows XP Professional) считать себя сервером (Windows NT Server, Windows 2000 Server, Windows .NET Whistler Server). После этой операции можно получить ряд дополнительных функциональных возможностей. Наиболее актуальные из них — это получение возможности подключения к домену компьютера с Windows XP Home (например, когда принесли на работу домашний ноутбук), снятие ограничения для рабочих станций в 10 подключений по сети (например, когда сетевой принтер подключен к рабочей станции) или установка на сервер программ, которые требуют только рабочую станцию в момент инсталляции (например, не серверный вариант антивируса).
Основные параметры реестра, ответственные за самоопознание операционной системы, — это строковый параметр «ProductType» и мультистроковый параметр «ProductSuite» в разделе
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ProductOptions
Обычный сервер в параметре «ProductType» содержит значение «ServerNT», контроллер домена — «LanmanNT», а остальные операционки — «WinNT».
В параметре «ProductSuite» сервер содержит свои дополнительные характеристики (например, «Terminal Server»), у рабочих станций этот параметр пустой, а у Windows XP Home он имеет значение «Personal».
Таким образом, например, у Windows XP Home достаточно очистить параметр «ProductSuite» и она начнёт себя считать Windows XP Pro и входить в домен.
Операционная система, однако, блокирует изменение этих параметров в данном разделе реестра, но это можно обойти. Самый простой способ — это изменить нужные параметры в разделе реестра, определяющем конфигурацию системы при последней успешной загрузке. Этот раздел не заблокирован от изменений. Затем можно просто загрузиться в этой конфигурации, но лучше переопределить конфигурации, чтобы иметь возможность аварийной загрузки в случае возникновения проблем. Для этого:

1. В разделе
HKEY_LOCAL_MACHINE\SYSTEM\Select
смотрим значение параметра «LastKnownGood», указывающее на номер N набора управляющих опций (control sets), с помощью которого был произведён последний беспроблемный запуск системы.

2. Открываем раздел
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet00N\Control\ProductOptions
и устанавливаем нужные значения параметров «ProductType» и «ProductSuite».

3. В разделе
HKEY_LOCAL_MACHINE\SYSTEM\Select
смотрим значение параметра «Default» и назначаем его параметру «LastKnownGood», а параметру «Default» присваиваем значение, которое было у «LastKnownGood».

4. Перезагружаем компьютер.
В результате загрузка произойдёт с новыми параметрами. А при проблемах нажимаем клавишу , как только начинается загрузка Windows, и в появившемся меню вариантов загрузки выбираем пункт «Загрузка последней удачной конфигурации» («Last Known Good Configuration»).

Чтобы из рабочей станции получить сервер и наоборот, надо дополнительно изменить ещё один параметр реестра (до перезагрузки!): двоичный параметр «SystemPrefix» в разделе
HKEY_LOCAL_MACHINE\System\Setup

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

Добавлю также, что вместо исправления всех этих параметров вручную, можно использовать специальные программы: NTSwitch или TweakNT.

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

Запись опубликована в рубрике Debian, Сервер. Добавьте в закладки постоянную ссылку.

2 комментария на «DEBIAN+SAMBA=PDC»

  1. Iura говорит:

    Почитав разные статьи в инете я наконец-таки смог поднять домен на Самбе, но больше всего мне помогла статья http://artmader.com/samba-pdc-configuration/ SAMBA AS PDC. <Тут я все сразу понял

  2. sergey говорит:

    Я сейчас поднял домен на Samba + Ldap. Тут http://linux.cpms.ru/?p=5607 описано. Вроде по удобнее.
    Но вот не могу понять, почему на Debian “squeeze” не работает перемещаемый профиль. Главное катало создаёться сам, то есть права есть. Остальное всё работает.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Анти-спам: выполните заданиеWordPress CAPTCHA