Встановлення Samba
Samba 3.0, на відміну від більш ранніх версій Samba, має можливість працювати в мережах Wndows, що працюють у режимі Active Directory (або Windows 2000 native mode). Якщо потрібна ця функціональність, слід встановити пакет samba3-3.0 замість samba-2.2.
Active Directory має іншу схему іменування доменів, комп'ютерів і користувачів, засновану на DNS. Припустимо, існує мережа з іменем my.firm.com і комп'ютерами host1.my.firm.com,host2.my.firm.com, host3.my.firm.com; тоді домен Active Directory називатиметься my.firm.com, а користувачі Active Directory матимуть імена виду user@my.firm.com.
/etc/krb5.conf має містити принаймні такі рядки:
[realms]
MY.FIRM.COM = {
kdc = your.kerberos.server
}
де MY.FIRM.COM - ім'я домену (або “царства”, в термінології Kerberos; задається обов'язково у верхньому регістрі), а your.kerberos.server — ім'я або IP-адреса KDC (Kerberos Domain Controller), аналог PDC (Primary Domain Controller) в доменах Windows NT — наприклад, server.my.firm.com або 192.168.117.11.
Правильність зазначення параметрів можна перевірити, виконавши команду (замініть ім'я користувача на актуальне — наприклад, administrator@MY.FIRM.COM):
# kinit username@REALM
і переконавшись, що пароль було прийнято сервером. REALM завжди задається у верхньому регістрі.
Ви також повинні переконатися, що можливо отримати ім'я KDC за його IP адресою (так званий Reverse DNS lookup). Ім'я KDC має або збігатися з NetBIOS-іменем комп'ютера (ім'я машини в мережі Windows без зазначення домену) або складатися з NetBIOS-імені та імені домену. Якщо отримати ім'я KDC за адресою неможливо, ви отримаєте помилку “local error” при спробі увійти в домен.
Якщо ваш DNS не підтримує Reverse lookup або KDC не зареєстрований в DNS, ви можете вказати відповідність IP-адреси та імені в /etc/hosts.
Для роботи в Active Directory smb.conf має містити такі параметри:
[global] # Задает Kerberos realm, обычно совпадает с именем домена в # верхнем регистре, например realm = MY.FIRM.COM realm = <REALM> # Это обычно часть реалма до первой точки, например # workgroup = MY workgroup = <WORKGROUP> # Тип домена - Active Directory. security = ADS # В случае Active Directory пароли всегда шифруются. encrypt passwords = true # Обычно этот параметр указывать не обязательно, т.к. Samba сама # определяет адрес KDC, если в сети есть WINS-сервер и он указан # в smb.conf ads server = <your.kerberos.server>
Переконайтеся, що Samba не запущена. Якщо запущена, її потрібно зупинити:
# service smb stop; service winbind stop
Щоб включити комп'ютер у домен, виконайте команду:
# net ads join -U administrator
де administrator — ім'я користувача домену, який має право створювати нові облікові записи.
Якщо не було видано повідомлення про помилку, то машина успішно зареєстрована в домені — інакше перевірте правильність задання параметрів у /etc/samba/smb.conf і /etc/krb5.conf. Переконайтеся, що користувач, зазначений після -U в net ads join, має необхідні права на створення нових облікових записів.
Тепер можна запустити необхідні служби:
# service smb start; service winbind start
Для роботи з комп'ютерами, зареєстрованими в Active Directory, не потрібно вказувати ім'я користувача та пароль. Спробуйте виконати команду:
$ smbclient -k -L <имя компьютера в домене>
Ви повинні отримати список доступних ресурсів, при цьому smbclient не повинен запитувати ім'я користувача та пароль.
Щоб перевірити, що доступ до ресурсів вашої машини можливий з інших машин домену, ви можете спробувати виконати все ту саму команду:
$ smbclient -k -L <имя вашего компьютера в домене>
і отримати список доступних ресурсів. Можна також спробувати відкрити який-небудь ресурс на вашій машині з Windows-машини, що входить до домену. У будь-якому випадку ім'я користувача та пароль запитуватися не повинні.
На відміну від доменів Windows NT, авторизація в Active Directory проводиться не за іменем і паролем, а за допомогою квитків протоколу Kerberos. Через це робота з smbclient може спочатку здатися незвичною.
По-перше, при виклику smbclient потрібно вказувати опцію -k. По-друге, квитки Kerberos видаються на певний час (зазвичай на добу, але це залежить від налаштувань сервера). Тому їх потрібно періодично оновлювати за допомогою команди kinit:
# kinit username@REALM
де username — ваше ім'я в Actiev Directory домені REALM.
Тож якщо smbclient раптом перестає підключатися до доменних ресурсів, спробуйте оновити квиток — найімовірніше, справа саме в цьому.
При створенні директорій у папці share вони повинні мати права 770, файли в них 660 і бути також доступними для user.
Використовуємо acl.
Робимо chmod g+s share ... щоб створювані файли та папки мали групу project
Робимо setfacl -m u:user:rx для всіх директорій до share ... для того, щоб user міг дійти до цієї директорії
Робимо setfacl -m u:user:rwx для директорії share та всіх її піддиректорій... для того, щоб користувач міг щось створювати в цій директорії
Робимо setfacl -m u:user:rw для всіх підфайлів директорії share
У samba пишемо
directory mask = 770
create mask = 660
inherit acls = yes
inherit permissions = yes # без цього попередній рядок не працює!!!
map acl inherit = yes
map archive = no
map system = no
map hidden = no
Після цього пробуємо створити папку та файл у директорії share через samba з-під user.
Отримуємо
Папку з правами 770 та власником user:project (все як і треба)
і Файл з правами 670 та власником user:project
