Crmgo Blog

man pro Sambu

man pro Sambu

Instalace Samby Samba 3.0, na rozdíl od předchozích verzí Samby, umožňuje fungovat v sítích Windows, které běží v režimu Active Directory (nebo v nativním režimu Windows 2000). Pokud je tato funkce požadována, nainstalujte balíček samba3-3.0 místo samba-2.2. Active Directory…

man pro Sambu
Instalace Samba

Samba 3.0, na rozdíl od starších verzí Samba, umí pracovat v sítích Windows, které běží v režimu Active Directory (nebo v nativním režimu Windows 2000). Pokud je tato funkce požadována, nainstalujte balík samba3-3.0 místo samba-2.2.

Active Directory používá jiný schéma pojmenování domén, počítačů a uživatelů založené na DNS. Předpokládejme, že existuje síť s názvem my.firm.com a počítači host1.my.firm.com, host2.my.firm.com, host3.my.firm.com; pak bude doména Active Directory nazývána my.firm.com a uživatelé Active Directory budou mít jména ve formátu user@my.firm.com.

Konfigurace

/etc/krb5.conf musí obsahovat alespoň následující řádky:

[realms]

MY.FIRM.COM = {
kdc = your.kerberos.server
}

kde MY.FIRM.COM je název domény (nebo „říše“ v terminologii Kerberos; musí být zadáno velkými písmeny) a your.kerberos.server je název nebo IP adresa KDC (Kerberos Domain Controller), což je ekvivalent PDC (Primary Domain Controller) v doménách Windows NT — například server.my.firm.com nebo 192.168.117.11.

Správnost nastavení parametrů můžete ověřit spuštěním příkazu (nahraďte jméno uživatele aktuálním — například administrator@MY.FIRM.COM):

# kinit username@REALM

a ujistěte se, že server přijal heslo. REALM se vždy zadává velkými písmeny.

Musíte se také ujistit, že je možné získat jméno KDC z jeho IP adresy (takzvaný Reverse DNS lookup). Jméno KDC musí buď odpovídat NetBIOS jménu počítače (jméno stroje v síti Windows bez uvedení domény), nebo se skládat z NetBIOS jména a názvu domény. Pokud není možné získat jméno KDC z adresy, při pokusu o připojení do domény obdržíte chybu „local error“.

Pokud váš DNS nepodporuje Reverse lookup nebo není KDC zaregistrován v DNS, můžete přiřazení IP adresy a jména zadat do /etc/hosts.

Úprava /etc/samba/smb.conf

Pro práci v Active Directory musí smb.conf obsahovat následující parametry:

[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>

 

Registrace počítače v doméně Active Directory

Ujistěte se, že Samba neběží. Pokud běží, musíte ji zastavit:

# service smb stop; service winbind stop

 

Pro přidání počítače do domény spusťte příkaz:

# net ads join -U administrator

kde administrator je uživatelské jméno domény, které má právo vytvářet nové uživatelské účty.

Pokud nebylo vydáno žádné chybové hlášení, byl počítač úspěšně zaregistrován v doméně — jinak zkontrolujte správnost nastavení parametrů v /etc/samba/smb.conf a /etc/krb5.conf. Ujistěte se, že uživatel uvedený za -U v příkazu net ads join má potřebná práva pro vytváření nových účtů.

Nyní můžete spustit potřebné služby:

# service smb start; service winbind start

 

Ověření správného fungování v Active Directory

Pro práci s počítači registrovanými v Active Directory není nutné zadávat uživatelské jméno a heslo. Zkuste spustit příkaz:

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

 

Měli byste získat seznam dostupných zdrojů, přičemž smbclient by neměl vyžadovat uživatelské jméno a heslo.

Chcete-li ověřit, že je přístup ke zdrojům vašeho počítače možný z jiných počítačů v doméně, můžete zkusit spustit stejný příkaz:

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

a získat seznam dostupných zdrojů. Můžete také zkusit otevřít nějaký zdroj na vašem počítači z počítače s Windows, který je členem domény. V každém případě by se neměla vyžadovat zadání uživatelského jména a hesla.

Některé specifika práce v Active Directory

Na rozdíl od domén Windows NT se autorizace v Active Directory neprovádí pomocí uživatelského jména a hesla, ale pomocí Kerberos tiketů. Z tohoto důvodu může práce se smbclient na začátku působit neobvykle.

Za prvé, při volání smbclient je třeba zadat přepínač -k. Za druhé, Kerberos tikety jsou vydávány na určitou dobu (obvykle na jeden den, ale to závisí na nastavení serveru). Proto je třeba je pravidelně obnovovat pomocí příkazu kinit:

# kinit username@REALM

kde username je vaše uživatelské jméno v doméně Active Directory REALM.

Takže pokud smbclient náhle přestane připojovat k doménovým zdrojům, zkuste obnovit tiket – pravděpodobně je to tím.

článek převzat zde
Někde v hloubce této struktury existuje adresář share, ke kterému je třeba poskytnout přístup různým uživatelům (například user) prostřednictvím samby. Při tom nelze měnit skupinu a user této skupině nepatří.

Při vytváření adresářů ve složce share musí mít práva 770, soubory v nich 660 a musí být také přístupné pro user.

Použijeme ACL.

Provedeme chmod g+s share ..., aby vytvářené soubory a adresáře měly skupinu project
Provedeme setfacl -m u:user:rx pro všechny adresáře až po share ..., aby se user mohl dostat k tomuto adresáři
Provedeme setfacl -m u:user:rwx pro adresář share a všechny jeho podadresáře ..., aby uživatel mohl v tomto adresáři něco vytvářet
Provedeme setfacl -m u:user:rw pro všechny soubory v adresáři share

V sambě zapíšeme

directory mask = 770
create mask = 660
inherit acls = yes
inherit permissions = yes # bez tohoto předchozí řádek nefunguje!!!
map acl inherit = yes
map archive = no
map system = no
map hidden = no

Pak zkusíme vytvořit složku a soubor v adresáři share přes sambu pod user.

Dostaneme
Složku s právy 770 a vlastníkem user:project (všechno tak, jak má být)
a Soubor s právy 670 a vlastníkem user:project

Poznámka: příspěvek mohl vzniknout s pomocí AI a lidskou redakcí. Odpovědný: Dmytro Lomaka, Kaltenkirchen.