Первичный контроллер домена (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_it
sudo mkdir /home/o_prodag
sudo mkdir /home/o_logist
sudo mkdir /home/o_buh
sudo mkdir /home/o_administraciya
 
Добавим группы в которые будут входить создаваемые пользователи. (Когда будем создавать пользователей, будем вносить их в две группы, первая - smbusers или smbadmins и вторая -  o_* (сейчас создадим), это необходимо для разграничения доступа к папкам отделов)
 
sudo groupadd o_it
sudo groupadd o_prodag
sudo groupadd o_logist
sudo groupadd o_buh
sudo groupadd o_administraciya
 
Самбе помимо учетных записей в ldap потребуются системные учетные записи. Создадим необходимые группы:
 
sudo groupadd -g 2000 smbadmins
sudo groupadd -g 2001 smbguests
sudo groupadd -g 2002 smbusers
sudo 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 - полный доступ владельцу и группе, остальным доступа нет):
 
sudo chmod 660 /home/o_it
sudo chmod 660 /home/o_prodag
sudo chmod 660 /home/o_logist
sudo chmod 660 /home/o_buh
sudo 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=10485760
sudo dd if=/dev/zero of=/home/fs/o_prodag.fs bs=1024 count=10485760
sudo dd if=/dev/zero of=/home/fs/o_logist.fs bs=1024 count=10485760
sudo dd if=/dev/zero of=/home/fs/o_buh.fs bs=1024 count=10485760
sudo dd if=/dev/zero of=/home/fs/o_administraciya.fs bs=1024 count=10485760
 
# dd - преобразование и копирование файла
 
Даем права на созданные файлы:
 
sudo chmod 600 /home/fs/o_it.fs
sudo chmod 600 /home/fs/o_prodag.fs
sudo chmod 600 /home/fs/o_logist.fs
sudo chmod 600 /home/fs/o_buh.fs
sudo chmod 600 /home/fs/o_administraciya.fs
 
Форматируем, например в ext3:
 
sudo mkfs.ext3 /home/fs/o_it.fs
sudo mkfs.ext3 /home/fs/o_prodag.fs
sudo mkfs.ext3 /home/fs/o_logist.fs
sudo mkfs.ext3 /home/fs/o_buh.fs
sudo mkfs.ext3 /home/fs/o_administraciya.fs
 
Монтируем в созданные нами папки:
 
sudo mount -t ext3 -o loop /home/fs/o_it.fs /home/o_it
sudo mount -t ext3 -o loop /home/fs/o_prodag.fs /home/o_prodag
sudo mount -t ext3 -o loop /home/fs/o_logist.fs /home/o_logist
sudo mount -t ext3 -o loop /home/fs/o_buh.fs /home/o_buh
sudo 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/share
sudo chmod 666 /home/share
sudo dd if=/dev/zero of=/home/fs/share.fs bs=1024 count=10485760
sudo chmod 600 /home/fs/share.fs
sudo mkfs.ext3 /home/fs/share.fs
sudo 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/netlogon
sudo chmod 755 /var/lib/samba/netlogon
sudo mkdir /var/lib/samba/Profiles
sudo 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 -f
netbios name = gate
# клиент должен сначала произвести вход (logon), с существующим именем
# пользователя и паролем, имя запрошенного ресурса не будет послано
# серверу до тех пор, пока сервер не аутентифицирует клиента.
security = user
# Администратор самбы (этот логин используется для ввода компьютеров в домен)
admin users = it
#_____________LDAP_START___________________________
# Настраиваем самбу для работы с ldap
# Путь к базе данных ldap (ldap на этом же компьютере)
passdb backend = ldapsam:ldap://127.0.0.1/
# Корневой каталог ldap
ldap 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 = yes
domain master = yes
preferred master = yes
# Влияет на выбор "главного компьютера" в сети Windows.
os level = 65
# Включаем поддержку входа в домен
domain logons = yes
# Скрипт, выполняющийся при входе в домен, на машине, входящей в домен
# Для каждого пользователя свой скрипт.
# Будет лежать в папке netlogon
logon 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 = CP866
unix charset = UTF8
display charset = UTF8
# сюда кладем скрипты, выполняющиеся при входе в домен
[netlogon]
comment = Network Logon Service
path=var/lib/samba/netlogon
browseable = no # делаем невидимой
guest ok = yes # гостевой доступ
writable = no # запрещаем запись
share modes = no
# Папка с профилями пользователей
[Profiles]
path=var/lib/samba/profiles
browseable = no # делаем невидимой
guest ok = yes # гостевой доступ
writeable = yes # разрешаем запись
# Личная папка для каждого пользователя
[homes]
comment = Home Directories
valid users = %S
read only = No # разрешаем запись
browseable = Yes # папка нескрыта
# Папка для отдела
[o_it]
path=home/o_it
valid users = @o_it # доступ только группе o_it
read only = No # разрешаем запись
browseable = Yes # папка нескрыта
guest ok = no # запрещаем гостевой доступ
[o_prodag]
path=home/o_prodag
valid users = @o_prodag # доступ только группе o_prodag
read only = No # разрешаем запись
browseable = Yes # папка нескрыта
guest ok = no # запрещаем гостевой доступ
[o_logist]
path=home/o_logist
valid users = @o_logist # доступ только группе o_logist
read only = No # разрешаем запись
browseable = Yes # папка нескрыта
guest ok = no # запрещаем гостевой доступ
[o_buh]
path=home/o_buh
valid users = @o_buh # доступ только группе o_buh
read only = No # разрешаем запись
browseable = Yes # папка нескрыта
guest ok = no # запрещаем гостевой доступ
[o_administraciya]
path=home/o_administraciya
valid users = @o_administraciya # доступ только группе o_administraciya
read only = No # разрешаем запись
browseable = Yes # папка нескрыта
guest ok = no # запрещаем гостевой доступ
# Общая папка предприятия
[share]
path=home/share
read 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.conf
sudo nano /etc/ldap/slapd.conf
 
Заполняем:
 
include /etc/ldap/schema/core.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/inetorgperson.schema
include /etc/ldap/schema/misc.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/openldap.schema
include /etc/ldap/schema/samba.schema
pidfile /var/run/slapd/slapd.pid
argsfile /var/run/slapd/slapd.args
modulepath /usr/lib/ldap
moduleload back_bdb
access to * by * read
access to attrs=userPassword
{Tab}by self write
{Tab}by anonymous auth
{Tab}by * none
database bdb
suffix "dc=mega,dc=local"
rootdn "cn=admin,dc=mega,dc=local"
rootpw {SSHA}a2ieiYYJfYMkUHY6RvxjxWu7Nadbpnh9
directory /var/lib/ldap
loglevel 256
index objectClass eq
index 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_ldif
sudo touch /etc/ldap/my_ldif/base.ldif
sudo nano /etc/ldap/my_ldif/base.ldif
 
dn: dc=mega,dc=local
objectClass: dcObject
objectclass: organization
dc: mega
o: mega
 
dn: ou=Users,dc=mega,dc=local
objectClass: organizationalUnit
ou: Users
 
dn: ou=Groups,dc=mega,dc=local
objectClass: organizationalUnit
ou: Groups
 
dn: ou=Computers,dc=mega,dc=local
objectClass: organizationalUnit
ou: 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.ldif
sudo nano /etc/ldap/my_ldif/group_win.ldif
 
dn: cn=Domain Admins,ou=Groups,dc=mega, dc=local
objectClass: posixGroup
gidNumber: 2000
cn: Domain Admins
 
dn: cn=Domain Guests, ou=Groups, dc=mega, dc=local
objectClass: posixGroup
gidNumber: 2001
cn: Domain Guests
 
dn: cn=Domain Users, ou=Groups, dc=mega, dc=local
objectClass: posixGroup
gidNumber: 2002
cn: Domain Users
 
dn: cn=Domain Computers, ou=Groups, dc=mega, dc=local
objectClass: posixGroup
gidNumber: 2003
cn: 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 группы      rid
Domain Admins        512
Domain Users        513
Domain Guests        514
Domain Computers    515
 
добавляем группы в groupmap:
 
sudo net groupmap add sid=S-1-5-21-1488355170-3944945206-1639150920-512 unixgroup=smbadmins type=domain
sudo net groupmap add sid=S-1-5-21-1488355170-3944945206-1639150920-513 unixgroup=smbusers type=domain
sudo net groupmap add sid=S-1-5-21-1488355170-3944945206-1639150920-514 unixgroup=smbguests type=domain
sudo 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=domain
sudo net groupmap modify ntgroup="Domain Users" unixgroup=smbusers type=domain
sudo net groupmap modify ntgroup="Domain Guests" unixgroup=smbguests type=domain
sudo 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 seconds
Filesystem             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_it
net use s: \\gate\share
 
/var/lib/samba/netlogon/o_prodag.txt
 
net use o: \\gate\o_prodag
net use s: \\gate\share
 
/var/lib/samba/netlogon/o_logist.txt
 
net use o: \\gate\o_logist
net use s: \\gate\share
 
/var/lib/samba/netlogon/o_buh.txt
 
net use o: \\gate\o_buh
net use s: \\gate\share
 
/var/lib/samba/netlogon/o_administraciya.txt
 
net use o: \\gate\o_administraciya
net use s: \\gate\share
 
Далее в процессе создания пользователя в скрипте, который напишем ниже, нужный файл копируется и меняется имя.txt на <имя пользователя>.bat, и уже этот файл будет выполняться при входе в домен, т.е. для каждого пользователя свой батник.
 

Немного bash-скриптинга


 
Создадим скрипты добавления и удаления пользователей.
 
Скрипт добавления:
 
sudo touch add.sh
 
Даем права на выполнение файла:
 
sudo chmod +x add.sh
sudo nano add.sh
 
#!/bin/bash
echo -e "username: \c "
read name
echo -e "password: \c "
read pass
echo -e "PC_name: \c "
read comp
echo "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 group
case $group in
1) group=o_it;;
2) group=o_prodag;;
3) group=o_buh;;
4) group=o_logist;;
5) group=o_administraciya;;
esac
sudo useradd -G smbusers,$group -s /bin/false -d /home/$name -m $name
(
sleep 1
echo "$pass"
echo "$pass"
) | sudo passwd $name
(
sleep 1
echo "$pass"
echo "$pass"
) | sudo smbpasswd -as $name
sudo useradd -g smbcomputers -d /dev/null -s /bin/false $comp
(
sleep 1
echo "$pass"
echo "$pass"
) | sudo passwd $comp
sudo smbpasswd -a -m $comp
cp /var/lib/samba/netlogon/$group.txt /var/lib/samba/netlogon/$name.bat
sudo edquota -p petrov_ia $name
 
запускаем:
 
~/add.sh
 
Здесь вводим только имя пользователя, его пароль, номер группы в которую он входит и имя компьютера, запрашиваемые скриптом. Этим скриптом добавляется только учетная запись userа, админских учеток немного и можно и вручную, тем более что квоты для админских учеток ненужны). Квоты для добавляемых юзверей будут копироваться из квоты созданного вручную первого пользователя petrov_ia.
 
Скрипт удаления:
 
sudo touch del.sh
sudo chmod +x del.sh
sudo nano del.sh
 
#!/bin/bash
echo -e "username: \c "
read name
echo -e "PC_name: \c "
read comp
sudo smbpasswd -x $name
sudo userdel $name
sudo rm -R /home/$name
sudo smbpasswd -x $comp
sudo userdel $comp
rm /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