Первичный контроллер домена (PDC): Samba + OpenLDAP + Quota
Контроллер домена - главный компьютер в домене (локальная сеть с иерархической структурой), которому "подчиняются" рабочие станции в домене. Контроллер домена хранит данные о пользователях и компьютерах в домене, с него можно ими централизованно управлять.
В роли первичного контроллера домена будет samba, пользователи и группы будут храниться в openldap, для ограничения дискового пространства пользователям будет применяться пакет quota, и не только (см. ниже)...
При входе в домен будут монтироваться три сетевых диска: первый с личной папкой пользователя, второй с папкой отдела, в который пользователь входит, третий с общей папкой предприятия.
Прежде чем читать эту статью можно ознакомиться более подробно что такое openldap :
ldapИ что такое samba (простейший пример настройки):
samba Устанавливаем самбу если еще не стоит (у меня самба ставилась в процессе установки убунту сервер) и ldap:
sudo apt-get install samba smbclient smbfs slapd ldap-utils Настройка Самбы
Необходимы:
1. Личная папка для каждого пользователя (При создании пользователя в системе создается его домашняя дирректория, доступ к которой открывается в конфиге самбы, в разделе[homes], см. ниже)
2. Общая папка для отдела
Создаем папки:
sudo mkdir /home/o_itsudo mkdir /home/o_prodagsudo mkdir /home/o_logistsudo mkdir /home/o_buhsudo mkdir /home/o_administraciya Добавим группы в которые будут входить создаваемые пользователи. (Когда будем создавать пользователей, будем вносить их в две группы, первая - smbusers или smbadmins и вторая - o_* (сейчас создадим), это необходимо для разграничения доступа к папкам отделов)
sudo groupadd o_itsudo groupadd o_prodagsudo groupadd o_logistsudo groupadd o_buhsudo groupadd o_administraciya Самбе помимо учетных записей в ldap потребуются системные учетные записи. Создадим необходимые группы:
sudo groupadd -g 2000 smbadminssudo groupadd -g 2001 smbguestssudo groupadd -g 2002 smbuserssudo groupadd -g 2003 smbcomputers Меняем группу, которой принадлежат папки:
sudo chgrp smbusers /home/o_it/
sudo chgrp smbusers /home/o_prodag/sudo chgrp smbusers /home/o_logist/sudo chgrp smbusers /home/o_buh/sudo chgrp smbusers /home/o_administraciya/ Даем права на папки(660 - полный доступ владельцу и группе, остальным доступа нет):
s
udo chmod 660 /home/o_itsudo chmod 660 /home/o_prodagsudo chmod 660 /home/o_logistsudo chmod 660 /home/o_buhsudo chmod 660 /home/o_administraciya Необходимо ограничить размер папки. Делаем это путем создания файла необходимого размера, форматирования этого файла и монтирования в созданную папку.
Создаем папку, где будут храниться "форматированные файлы-разделы" :
sudo mkdir /home/fs В данном примере создаем файл, содержащий 10485760 блоков размером по 1024байт = 10ГБ (при необходимости размер изменяем на нужный меняя count):
sudo dd if=/dev/zero of=/home/fs/o_it.fs bs=1024 count=10485760sudo dd if=/dev/zero of=/home/fs/o_prodag.fs bs=1024 count=10485760sudo dd if=/dev/zero of=/home/fs/o_logist.fs bs=1024 count=10485760sudo dd if=/dev/zero of=/home/fs/o_buh.fs bs=1024 count=10485760sudo dd if=/dev/zero of=/home/fs/o_administraciya.fs bs=1024 count=10485760 # dd - преобразование и копирование файла
Даем права на созданные файлы:
sudo chmod 600 /home/fs/o_it.fssudo chmod 600 /home/fs/o_prodag.fssudo chmod 600 /home/fs/o_logist.fssudo chmod 600 /home/fs/o_buh.fssudo chmod 600 /home/fs/o_administraciya.fs Форматируем, например в ext3:
sudo mkfs.ext3 /home/fs/o_it.fssudo mkfs.ext3 /home/fs/o_prodag.fssudo mkfs.ext3 /home/fs/o_logist.fssudo mkfs.ext3 /home/fs/o_buh.fssudo mkfs.ext3 /home/fs/o_administraciya.fs Монтируем в созданные нами папки:
sudo mount -t ext3 -o loop /home/fs/o_it.fs /home/o_itsudo mount -t ext3 -o loop /home/fs/o_prodag.fs /home/o_prodagsudo mount -t ext3 -o loop /home/fs/o_logist.fs /home/o_logistsudo mount -t ext3 -o loop /home/fs/o_buh.fs /home/o_buhsudo mount -t ext3 -o loop /home/fs/o_administraciya.fs /home/o_administraciya для автоматического монтирования при загрузке в /etc/fstab добавляем:
/home/fs/o_it.fs /home/o_it auto auto,loop 0 0/home/fs/o_prodag.fs /home/o_prodag auto auto,loop 0 0/home/fs/o_logist.fs /home/o_logist auto auto,loop 0 0/home/fs/o_buh.fs /home/o_buh auto auto,loop 0 0/home/fs/o_administraciya.fs /home/o_administraciya auto auto,loop 0 0 тем самым, получаем папку с лимитированным обьемом. Доступ к этим папкам разграничивается в конфиге самбы (см.ниже), к примеру в папку o_it будут иметь доступ только пользователи, входящие в группу o_it.
3. Общая папка для предприятия
Делаем аналогично:
sudo mkdir /home/sharesudo chmod 666 /home/sharesudo dd if=/dev/zero of=/home/fs/share.fs bs=1024 count=10485760sudo chmod 600 /home/fs/share.fssudo mkfs.ext3 /home/fs/share.fssudo mount -t ext3 -o loop /home/fs/share.fs /home/share В /etc/fstab добавляем:
/home/fs/share.fs /home/share auto auto,loop 0 0 О том как менять размер созданных папок - читаем здесь:
size share .
Samba
Далее будем настраивать самбу. Создадим необходимые папки и права на них (для чего эти папки - поясняется в конфиге самбы):
sudo mkdir /var/lib/samba/netlogonsudo chmod 755 /var/lib/samba/netlogonsudo mkdir /var/lib/samba/Profilessudo chmod 777 /var/lib/samba/Profiles Символы подстановки переменных в Samba:
%S Имя текущей службы%P Корневой каталог текущей службы%u Пользователь текущей службы%g Основная группа %u%U Имя пользователя для сеанса (может отличаться от имени,запрошенного клиентом)%G Основная группа %U%H Домашний каталог пользователя%v Версия Samba%h Имя хоста, на котором работает Samba%m NetBIOS-имя компьютера-клиента%L NetBIOS имя сервера%M Имя хоста для компьютера-клиента%N Имя NIS-сервера домашних каталогов. Значение определяется при помощи файланастройки системы NIS auto map.Если вы скомпилировали Samba без automount, то значение совпадает с установленным для сервера NetBIOS именем%p Путь к домашнему каталогу службы. Определяется при помощи файла настройкисистемы NIS auto map, как %N:%p%R Выбранный после установления соединения уровень протокола%d Номер текущего серверного процесса%a Операционная система клиента (значение может быть неверным)%I IP-адрес клиентской машины%T Текущие дата и время Создадим резервную копию конфига /etc/samba/smb.conf:
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.backup Теперь откроем файл /etc/samba/smb.conf для редактирования:
sudo nano /etc/samba/smb.conf Очищаем и вставляем следующее, при необходимости подгоняя под свои нужды:
[global]# Название группыworkgroup = MEGA# Название компьютера. Посмотреть можно командой: hostname -fnetbios name = gate# клиент должен сначала произвести вход (logon), с существующим именем# пользователя и паролем, имя запрошенного ресурса не будет послано# серверу до тех пор, пока сервер не аутентифицирует клиента.security = user# Администратор самбы (этот логин используется для ввода компьютеров в домен)admin users = it#_____________LDAP_START___________________________# Настраиваем самбу для работы с ldap# Путь к базе данных ldap (ldap на этом же компьютере)passdb backend = ldapsam:ldap://127.0.0.1/# Корневой каталог ldapldap suffix = dc=mega,dc=local# Каталог, содержащий пользователейldap user suffix = ou=Users# Каталог, содержащий группыldap group suffix = ou=Groups# Каталог, содержащий компьютерыldap machine suffix = ou=Computers#ldap filter = (uid=%u)# Указываем админа ldap, самба от его имени с ldap работаетldap admin dn = "cn=admin,dc=mega,dc=local"# Разрешаем самбе удалять объектыldap delete dn = yes# Отключаем шифрование. (и самба и база на одном компьютере, нет смысла)ldap ssl = off#_____________LDAP_END_____________________________# Самба в роли контроллера доменаlocal master = yesdomain master = yespreferred master = yes# Влияет на выбор "главного компьютера" в сети Windows.os level = 65# Включаем поддержку входа в доменdomain logons = yes# Скрипт, выполняющийся при входе в домен, на машине, входящей в домен# Для каждого пользователя свой скрипт.# Будет лежать в папке netlogonlogon script = %U.bat# Путь к профилям пользователей# (компьютеры-клиенты домена будут сохранять профили не локально а на сервере).# папка Profiles расшарена нижеlogon path = \\%L\Profiles\%U# монтирует домашнюю дирректорию пользователя как сетевой диск при входе в доменlogon drive = H:# Включаем поддержку WINS-сервераwins support = yes# порядок ипользования сервисов имен для получения IP адресаname resolve order = wins lmhosts host bcast# Определяет будет ли демон nmbd(8) (в случае если WINS не смог# разрешить NetBIOS имя) делать запрос к DNS.dns proxy = no# Настройка кодировкиdos charset = CP866unix charset = UTF8display charset = UTF8# сюда кладем скрипты, выполняющиеся при входе в домен[netlogon]comment = Network Logon Servicepath=var/lib/samba/netlogonbrowseable = no # делаем невидимойguest ok = yes # гостевой доступwritable = no # запрещаем записьshare modes = no# Папка с профилями пользователей[Profiles]path=var/lib/samba/profilesbrowseable = no # делаем невидимойguest ok = yes # гостевой доступwriteable = yes # разрешаем запись# Личная папка для каждого пользователя[homes]comment = Home Directoriesvalid users = %Sread only = No # разрешаем записьbrowseable = Yes # папка нескрыта# Папка для отдела[o_it]path=home/o_itvalid users = @o_it # доступ только группе o_itread only = No # разрешаем записьbrowseable = Yes # папка нескрытаguest ok = no # запрещаем гостевой доступ[o_prodag]path=home/o_prodagvalid users = @o_prodag # доступ только группе o_prodagread only = No # разрешаем записьbrowseable = Yes # папка нескрытаguest ok = no # запрещаем гостевой доступ[o_logist]path=home/o_logistvalid users = @o_logist # доступ только группе o_logistread only = No # разрешаем записьbrowseable = Yes # папка нескрытаguest ok = no # запрещаем гостевой доступ[o_buh]path=home/o_buhvalid users = @o_buh # доступ только группе o_buhread only = No # разрешаем записьbrowseable = Yes # папка нескрытаguest ok = no # запрещаем гостевой доступ[o_administraciya]path=home/o_administraciyavalid users = @o_administraciya # доступ только группе o_administraciyaread only = No # разрешаем записьbrowseable = Yes # папка нескрытаguest ok = no # запрещаем гостевой доступ# Общая папка предприятия[share]path=home/shareread only = No # разрешаем записьbrowseable = Yes # папка нескрытаguest ok = no # запрещаем гостевой доступ Проверяем параметры конфига командой:
testparm Samba подключается к ldap под аккаунтом администратора ldap (cn=admin,dc=mega,dc=local), поэтому необходимо сообщить ей пароль этого аккаунта. Делается это следующей командой:
sudo smbpasswd -w pass Этот же пароль пароль нужно будет указать дальше при настройке openldap.
LDAP
Для того чтобы использовать LDAP в SAMBA cкопируем файл samba.schema в каталог /etc/ldap/schema/ :
cp /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz /etc/ldap/schema/ а так как он запакованный с помошью gzip, распаковываем его
gzip -d /etc/ldap/schema/samba.schema.gz Запускаем конфигуратор:
sudo dpkg-reconfigure slapd и отвечаем на вопросы:
невыполнять настройку сервера openldap:
нет удалять базу при вычистке slapd:
да allow ldapv2 protocol:
да Включаем поддержку slapd.conf (с новшеством новой версии, с динамической загрузкой, отношения у меня не сложились):
В /etc/default/slapd переменной SLAPD_CONF указываем путь к файлу конфигу:
SLAPD_CONF=/etc/ldap/slapd.conf Генерим рутовский пароль для доступа к ldap (тот же что указывали при настройке самбы):
slappasswd -s <ваш pass> Получим следующее:
{SSHA}a2ieiYYJfYMkUHY6RvxjxWu7Nadbpnh9 копируем, дальше понадобится. Создаем файл конфигурации:
sudo touch /etc/ldap/slapd.confsudo nano /etc/ldap/slapd.conf Заполняем:
include /etc/ldap/schema/core.schemainclude /etc/ldap/schema/cosine.schemainclude /etc/ldap/schema/inetorgperson.schemainclude /etc/ldap/schema/misc.schemainclude /etc/ldap/schema/nis.schemainclude /etc/ldap/schema/openldap.schemainclude /etc/ldap/schema/samba.schemapidfile /var/run/slapd/slapd.pidargsfile /var/run/slapd/slapd.argsmodulepath /usr/lib/ldapmoduleload back_bdbaccess to * by * readaccess to attrs=userPassword{Tab}by self write{Tab}by anonymous auth{Tab}by * nonedatabase bdbsuffix "dc=mega,dc=local"rootdn "cn=admin,dc=mega,dc=local"rootpw {SSHA}a2ieiYYJfYMkUHY6RvxjxWu7Nadbpnh9directory /var/lib/ldaploglevel 256index objectClass eqindex cn eq Рассмотрим конфиг подробнее. Сначала добавляем нужные схемы, в зависимости от того какое програмное обеспечение будет использовать ldap (например для интеграции с dhcp исползуется dhcp.schema). Далее указываются пути к Pid-файлу, файлу с аргументами, путь к модулям. Подгружаем модуль bdb, Описываем доступ к информации: указываем, что себе(под кем Вы находитесь в системе) разрешена запись, анонимам предлагается авторизоваться. Указываем тип базы - bdb (во многих руководствах еще используется ldbm). Описываем корень базы и указываем логин и пароль администратора ldap, указываем директорию хранения БД и индексы, для ускорения поиска по базе.
Нажатие клавиши
{Tab} в указанных строках конфига обязательно, иначе будет ошибка.
Перезапускаем ldap:
sudo /etc/init.d/slapd restart Если выдала система ошибку, смотрим логи:
cat /var/log/syslog Проверяем появился ли процесс:
ps -ax | grep slap Проверяем что 389-ый порт слушается:
netstat -nap tcp | grep 389 Если все нормально, значит сервер ldap готов.
Создадим базовый каталог ldap. Сначала создается текстовый файл, в него пишем необходимые параметры, а затем загружаем этот файл в ldap:
sudo mkdir /etc/ldap/my_ldifsudo touch /etc/ldap/my_ldif/base.ldifsudo nano /etc/ldap/my_ldif/base.ldif dn: dc=mega,dc=localobjectClass: dcObjectobjectclass: organizationdc: megao: mega dn: ou=Users,dc=mega,dc=localobjectClass: organizationalUnitou: Users dn: ou=Groups,dc=mega,dc=localobjectClass: organizationalUnitou: Groups dn: ou=Computers,dc=mega,dc=localobjectClass: organizationalUnitou: Computers 1. - базовый каталог
2. - здесь будут храниться данные пользователей
3. - здесь группы (группа админов, группа пользователей)
4. - здесь учетные записи машин, входящих в домен. Самбе они необходимы.
Добавляем этот каталог в базу:
ldapadd -x -D "cn=admin,dc=mega,dc=local" -W -f /etc/ldap/my_ldif/base.ldif # "cn=admin,dc=mega,dc=local" - от имени учетной записи администратора ldap
# /etc/ldap/my_ldif/base.ldif - путь к файлу с параметрами
Создадим каталог групп:
sudo touch /etc/ldap/my_ldif/group_win.ldifsudo nano /etc/ldap/my_ldif/group_win.ldif dn: cn=Domain Admins,ou=Groups,dc=mega, dc=localobjectClass: posixGroupgidNumber: 2000cn: Domain Admins dn: cn=Domain Guests, ou=Groups, dc=mega, dc=localobjectClass: posixGroupgidNumber: 2001cn: Domain Guests dn: cn=Domain Users, ou=Groups, dc=mega, dc=localobjectClass: posixGroupgidNumber: 2002cn: Domain Users dn: cn=Domain Computers, ou=Groups, dc=mega, dc=localobjectClass: posixGroupgidNumber: 2003cn: Domain Computers Добавляем каталог групп в базу:
ldapadd -x -D "cn=admin,dc=mega,dc=local" -W -f /etc/ldap/my_ldif/group_win.ldif перезапускаем самбу:
sudo /etc/init.d/smbd restart Теперь нужно указать соответствие линукс групп виндовс группам. Для этого сначала получаем SID (SID в windows NT является неким аналогом UID в UNIX):
sudo net getlocalsid Получим что то вроде:
S-1-5-21-1488355170-3944945206-1639150920 Добавляя к этому номеру нужные значения получаем SIDы для групп виндовс:
Windows группы ridDomain Admins 512Domain Users 513Domain Guests 514Domain Computers 515 добавляем группы в groupmap:
sudo net groupmap add sid=S-1-5-21-1488355170-3944945206-1639150920-512 unixgroup=smbadmins type=domainsudo net groupmap add sid=S-1-5-21-1488355170-3944945206-1639150920-513 unixgroup=smbusers type=domainsudo net groupmap add sid=S-1-5-21-1488355170-3944945206-1639150920-514 unixgroup=smbguests type=domainsudo net groupmap add sid=S-1-5-21-1488355170-3944945206-1639150920-515 unixgroup=smbcomputers type=domain Затем проводим соответствие групп:
sudo net groupmap modify ntgroup="Domain Admins" unixgroup=smbadmins type=domainsudo net groupmap modify ntgroup="Domain Users" unixgroup=smbusers type=domainsudo net groupmap modify ntgroup="Domain Guests" unixgroup=smbguests type=domainsudo net groupmap modify ntgroup="Domain Computers" unixgroup=smbcomputers type=domain Результат этих операций можно посмотреть командой:
sudo net groupmap list После проведенных операций с net groupmap в базе ldap в созданных нами группах добавились новые параметры самбы, посмотреть можно командой:
ldapsearch -LLL -x -b 'dc=mega,dc=local' '*' | lessАвтоматическое изменение прав доступа к файлам
apt-get install bindfs
bindfs -o perms=0777,mirror=@smbusers,group=smbusers /home/share /home/share
bindfs -o perms=0777,mirror=@smbusers,group=smbusers /home/o_it /home/o_it
bindfs -o perms=0777,mirror=@smbusers,group=smbusers /home/o_prodag /home/o_prodag
bindfs -o perms=0777,mirror=@smbusers,group=smbusers /home/o_logist /home/o_logist
bindfs -o perms=0777,mirror=@smbusers,group=smbusers /home/o_buh /home/o_buh
bindfs -o perms=0777,mirror=@smbusers,group=smbusers /home/o_administraciya /home/o_administraciyaгде:
perms=0777 - права доступа
mirror=@smbusers - все пользователи группы smbusers будут считаться владельцами файлов в расшаренной папке;
group=smbusers - все файлы, скопированные или перенесенные в расшаренную папку, будут принадлежать группе smbusers.
Права будут меняться на нужные независимо от того, каким образом файлы попадают в шару.
И добавляем эти строчки в автозапуск, в конец файла
/etc/rc.local .
Добавление пользователя
Добавляем пользователя:
1. Добавляем пользователя в систему (для начала - с админскими правами). При этом вносим его в две группы, smbadmins соответствует Domain Admins в виндовс, во вторую добавляем чтобы иметь доступ к папке отдела.
sudo useradd -G smbadmins,o_it -s /bin/false -d /home/ivanov_av -m ivanov_av sudo passwd ivanov_av 2. Добавляем пользователя в базу ldap.
sudo smbpasswd -a ivanov_av 3. Добавляем компьютер пользователя в систему.
sudo useradd -g smbcomputers -d /dev/null -s /bin/false Comp_IAV$ sudo passwd Comp_IAV$ 4. Добавляем компьютер пользователя в ldap.
smbpasswd -a -m Comp_IAV Проверяем добавление:
ldapsearch -LLL -x -b 'dc=mega,dc=local' '*' | less Аналогично добавим простого пользователя, например petrov_ia, изменив лишь в первой команде группу на smbusers.
Слишком много операций для добавления одного пользователя, но далее будет создан скрипт, значительно упрощающий данный процесс.
Quota
Теперь нам надо установить квоты для юзверей на дисковое пространство. Ставим пакет quota:
sudo apt-get install quota Редактируем файл /etc/fstab, добавляем "usrquota" в раздел, на который устанавливаем ограничение для пользователей:
sudo nano /etc/fstab UUID=04b5c25b-a82c-4bc7-8dad-2ccb9cfe7be6 / ext4 noatime,relatime,usrquota,user_xattr,errors=remount-ro 0 Перемонтируем:
sudo mount -o remount / или перезагружаемся.
По умолчанию файлы квот хранятся в корневом каталоге файловой системы в файлах с именами aquota.user и aquota.group соответственно для пользовательских и групповых квот.
Этой командой создадим файлы:
quotacheck /
Если будет ругаться - пробуем запускать с ключем -m или -f .
sudo edquota -u petrov_ia после этой команды откроется текстовый редактор, в которым указываем ограничения и сохраняем. Вы можете ограничивать размещение ресурсов на основе объема дискового пространства (квотирование блоков), количества файлов (квотирование inode) или их комбинации. Каждое из этих ограничений, в свою очередь, делится на две категории: мягкие (soft) и жёсткие (hard) ограничения. Жёсткое ограничение не может быть превышено. мягкие ограничения могут быть превышены в течении некоторого периода времени. Если пользователь превышает своё мягкое ограничение в течение периода времени, превышающего отсрочку, то это мягкое ограничение становится жестким и последующее выделение ресурсов будет запрещено.
Например поставим ограничения: по объему – 1000 Мбайт, по количеству – 1000 файлов. Добавляя 10% запаса на жесткие пределы:
Disk quotas for user petrov_ia (uid 1005):Filesystem blocks soft hard inodes soft hard/dev/loop0 7 1024000 1126400 4 1000 1100 Размер указывается не в КБ, это число блоков. Но у меня в файловой системе один блок - 1024Б, поэтому в данном примере 1 блок = 1 КБ.
Параметры blocks и inodes изменять бессмысленно, они ставятся автоматически.
Параметр "grace period" позволяет вам установить время, прежде чем значение soft limit будет приведено в жизнь на файловой системе с включенными квотами:
sudo edquota -t По умолчанию:
Grace period before enforcing soft limits for users:Time units may be: days, hours, minutes, or secondsFilesystem Block grace period Inode grace period/dev/loop0 7days 7days Проверяем установленные квоты:
sudo repquota / Иногда желательно установить ограничения квот на некоторый диапазон UID (идентификаторов пользователей). Это можно сделать при помощи параметра -p в команде edquota. Во-первых, установите желаемое ограничение для пользователя, а затем запустите команду edquota -p protouser startuid-enduid. Например, если пользователь test имеет желаемые ограничения, то для дублирования этих ограничений на пользователей с UID от 10000 до 19999 может быть использована такая команда:
sudo edquota -p test 10000-19999 Или для списка пользователей:
sudo edquota -p test test1 test2 test3 ...
Для квотирования групп пользователей (в моем примере это не используется, так, для справки) в /etc/fstab добавляем grpquota, туда же, куда и usrquota, создаем файл:
quotacheck Добавляем квоты:
sudo edquota -g smbusers И далее аналогично установкам квот на пользователя.
Немного батаники
Теперь создадим файлы .bat , который будет выполняться на клиентской машине при входе в домен. в нем напишем команду монтирования сетевого диска, для нужной группы - нужный диск. Создавать лучше в виндовс, а потом закидывать на сервер.
/var/lib/samba/netlogon/o_it.txt net use o: \\gate\o_itnet use s: \\gate\share /var/lib/samba/netlogon/o_prodag.txt net use o: \\gate\o_prodagnet use s: \\gate\share /var/lib/samba/netlogon/o_logist.txt net use o: \\gate\o_logistnet use s: \\gate\share /var/lib/samba/netlogon/o_buh.txt net use o: \\gate\o_buhnet use s: \\gate\share /var/lib/samba/netlogon/o_administraciya.txt net use o: \\gate\o_administraciyanet use s: \\gate\share Далее в процессе создания пользователя в скрипте, который напишем ниже, нужный файл копируется и меняется имя.txt на <имя пользователя>.bat, и уже этот файл будет выполняться при входе в домен, т.е. для каждого пользователя свой батник.
Немного bash-скриптинга
Создадим скрипты добавления и удаления пользователей.
Скрипт добавления:
sudo touch add.sh Даем права на выполнение файла:
sudo chmod +x add.shsudo nano add.sh #!/bin/bashecho -e "username: \c "read nameecho -e "password: \c "read passecho -e "PC_name: \c "read compecho "o_it: 1"echo "o_prodag: 2"echo "o_buh: 3"echo "o_logist: 4"echo "o_administraciya: 5"echo -e "enter N: \c "read groupcase $group in1) group=o_it;;2) group=o_prodag;;3) group=o_buh;;4) group=o_logist;;5) group=o_administraciya;;esacsudo useradd -G smbusers,$group -s /bin/false -d /home/$name -m $name(sleep 1echo "$pass"echo "$pass") | sudo passwd $name(sleep 1echo "$pass"echo "$pass") | sudo smbpasswd -as $namesudo useradd -g smbcomputers -d /dev/null -s /bin/false $comp(sleep 1echo "$pass"echo "$pass") | sudo passwd $compsudo smbpasswd -a -m $compcp /var/lib/samba/netlogon/$group.txt /var/lib/samba/netlogon/$name.batsudo edquota -p petrov_ia $name запускаем:
~/add.sh Здесь вводим только имя пользователя, его пароль, номер группы в которую он входит и имя компьютера, запрашиваемые скриптом. Этим скриптом добавляется только учетная запись userа, админских учеток немного и можно и вручную, тем более что квоты для админских учеток ненужны). Квоты для добавляемых юзверей будут копироваться из квоты созданного вручную первого пользователя petrov_ia.
Скрипт удаления:
sudo touch del.shsudo chmod +x del.shsudo nano del.sh #!/bin/bashecho -e "username: \c "read nameecho -e "PC_name: \c "read compsudo smbpasswd -x $namesudo userdel $namesudo rm -R /home/$namesudo smbpasswd -x $compsudo userdel $comprm /var/lib/samba/netlogon/$name.bat запускаем:
~/del.sh Ввод windows 7 в контроллер домена (pdc samba)
Правим реестр:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\LanmanWorkstation\Parameters]
DomainCompatibilityMode=dword:00000001
DNSNameResolutionRequired=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Netlogon\Parameters]
RequireSignOrSeal=dword:00000001
RequireStrongKey=dword:00000001
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\Interfaces]
Domain=example.ru
NV Domain=example.ruГде example.ru - это имя домена вашей сети.
После перезагрузки рабочая станция Windows 7 должна успешно зарегистрироваться в домене. Однако войти с именем пользователя из домена возможно не получиться по причине: "Не удается установить доверительные отношения".
Чтобы они подружились идем в Пуск -> Панель управления -> Администрирование -> Локальная политика безопасности. Далее заходим в Локальная политика -> Параметры безопасности и меняем следующие параметры:
"Сетевая безопасность: Уровень проверки подлинности LAN Manager" - поставить значение "Отправлять LM- и NTML-ответы".
"Сетевая безопасность: Минимальная сеансовая безопасность для клиентов (серверов) на базе NTLM SSP" - отключить пункт "Требовать 128-битное шифрование".
"Член домена: Требовать стойкий ключ сеанса (Windows 2000 и выше)" - отключить.
На этом пока закончим.
Sept. 29, 2010