PDF Печать E-mail

 

Первичный контроллер домена (PDC): Samba + OpenLDAP + Quota

 

 

Контроллер домена - главный компьютер в домене (локальная сеть с иерархической структурой), которому "подчиняются" рабочие станции в домене. Контроллер домена хранит данные о пользователях и компьютерах в домене, с него можно ими централизованно управлять.

 

В роли первичного контроллера домена  будет samba, пользователи и группы будут храниться в openldap, для ограничения дискового пространства пользователям будет применяться пакет quota, и не только (см. ниже)...

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

 

 

Прежде чем читать эту статью можно ознакомиться более подробно что такое openldap : http://linux-bash.ru/index.php?option=com_content&view=article&id=42:ldap&catid=4:seti&Itemid=4

И что такое samba (простейший пример настройки): http://linux-bash.ru/index.php?option=com_content&view=article&id=26:samba&catid=4:seti&Itemid=4

 

 

Устанавливаем самбу если еще не стоит (у меня самба ставилась в процессе установки убунту сервер) и 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

 

О том как менять размер созданных папок - читаем здесь: http://linux-bash.ru/menudisk/64-sizeshare.html .

 

 

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

 

На этом пока закончим.

 

 

Комментарии 

 
# gard 20.04.2012 17:44
Здравствуйте!

Как я понимаю в ldap в данной статье записи о пользователях вносит только Samba. Мне кажется было бы удобнее, если бы в ldap вносились не только samba, но и unix пользователи. Чуть опишу схему действий.
1) Ставим ldap, настраиваем nss_ldap для использования учетной информации из ldap на linux-машине.
2) Пользуясь файлом .ldif создаем в samba вышеописанный вами группы Users, Computers, Groups. Затем в Users с помощью уже к примеру phpldapadmin создаем 4 unix-группы (smb_admins, smb_users, smb_guests, smb_computers).
 
 
# gard 20.04.2012 17:46
3) Делаем маппинг групп, samba сама дополнит записи о unix-группах в ldap, сделав их еще и "samba-группами".
4) Через тот же фронтенд добавляем samba-аккаунты, которые условно говоря представляют собой 1 запись в ldap, которая получается совмещением записи о unix-аккаунте и sambaSamAccount 'е.

Это позволит нам управлять аккаунтами не вводя пользователей вручную через smbpasswd и не следя за unix-учетными записями, соответствующим и samba-аккаунтам.
 
 
# admin 02.05.2012 10:50
Совершенству пределов не существует) Как нибудь попробую, как будет чуть больше свободнго времени.