Crmgo Блог

ман по самбі

ман по самбі

Встановлення Samba Samba 3.0, на відміну від більш ранніх версій Samba, має можливість працювати в мережах Wndows, що працюють у режимі Active Directory (або Windows 2000 native mode). Якщо потрібна ця функціональність, слід встановити пакет samba3-3.0 замість samba-2.2 . Active Directory…

ман по самбі
Встановлення 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.

Редагування /etc/samba/smb.conf

Для роботи в 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>

 

Реєстрація комп'ютера в домені Active Directory

Переконайтеся, що 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

Для роботи з комп'ютерами, зареєстрованими в Active Directory, не потрібно вказувати ім'я користувача та пароль. Спробуйте виконати команду:

$ smbclient -k -L <имя компьютера в домене>

 

Ви повинні отримати список доступних ресурсів, при цьому smbclient не повинен запитувати ім'я користувача та пароль.

Щоб перевірити, що доступ до ресурсів вашої машини можливий з інших машин домену, ви можете спробувати виконати все ту саму команду:

$ smbclient -k -L <имя вашего компьютера в домене>

і отримати список доступних ресурсів. Можна також спробувати відкрити який-небудь ресурс на вашій машині з Windows-машини, що входить до домену. У будь-якому випадку ім'я користувача та пароль запитуватися не повинні.

Деякі особливості роботи в Active Directory

На відміну від доменів Windows NT, авторизація в Active Directory проводиться не за іменем і паролем, а за допомогою квитків протоколу Kerberos. Через це робота з smbclient може спочатку здатися незвичною.

По-перше, при виклику smbclient потрібно вказувати опцію -k. По-друге, квитки Kerberos видаються на певний час (зазвичай на добу, але це залежить від налаштувань сервера). Тому їх потрібно періодично оновлювати за допомогою команди kinit:

# kinit username@REALM

де username — ваше ім'я в Actiev Directory домені REALM.

Тож якщо smbclient раптом перестає підключатися до доменних ресурсів, спробуйте оновити квиток — найімовірніше, справа саме в цьому.

стаття взята звідси
Десь у глибині цієї структури є директорія share, до якої треба надати доступ різним користувачам (наприклад user) через samba. При цьому групу змінювати не можна і user цій групі не належить.

При створенні директорій у папці 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

Примітка: матеріал міг бути створений за підтримки ШІ з подальшою людською редакцією. Відповідальний за зміст: Dmytro Lomaka, Kaltenkirchen.