Sekalaisia komentoja Samban debuggaukseen

Alla tukku hyödyllisiä komentoja Samban debuggaukseen. Oletus on, että Samba AD DC ja Domain Member-palvelinten konfiguraatiot ovat pääosin kunnossa. Tähän pisteeseen päästään helpohkosti Puppet-Finland -projektin samba4-moduulilla. Täysin hands off -asennus on varsin haastava, joten debuggaustyökaluille tulee väistämättä tarvetta.

Tarkistetaan, onko member-nimisellä koneella jo machine account Samban LDAP:ssa, eli onko se jo liitetty domainiin:

$ net ads dn 'CN=member,CN=Computers,DC=smb,DC=domain,dc=com' cn -U administrator%password
 Got 1 replies
 
 cn: member

Tässä eräs toinen tapa selvittää, onko member-kone liitetty domainiin. Tähän vaaditaan Debianissa ldb-tools -paketin asentaminen ja komento on ajettava DC-koneella:

 ldbsearch -H /var/lib/samba/private/sam.ldb.d/DC=SMB,DC=DOMAIN,DC=COM.ldb 'servicePrincipalName=HOST/Member'

Member-koneen liittäminen (Samba) Active Directory Domain Controlleriin:

$ net ads join -U administrator%password
 Using short domain name -- SMB
 Joined 'MEMBER' to dns domain 'smb.domain.com'

Member-koneen poistaminen domainista:

$ net ads leave -U administrator%password
 Deleted account for 'MEMBER' in realm 'SMB.DOMAIN.COM

Levyjaon (testshare) toimivuuden varmistaminen:

$ smbclient //member.smb.domain.com/testshare -UAdministrator%password -c 'ls'
 
 Domain=[SMB] OS=[Windows 6.1] Server=[Samba 4.2.14-Debian]
 . D 0 Tue Dec 20 18:40:13 2016
 .. D 0 Wed Dec 21 10:44:14 2016
 
 9717280 blocks of size 1024. 8038660 blocks available

Debian 8:ssa samba-ad-dc -palvelun käynnistys ei aina näyttäisi käynnistävän Samban Kerberos-palvelua, joka kuuntelee TCP-portissa 88. Ilman Kerberosta AD DC ei tietenkään toimi, joten sen toimivuuden voi tarkistaa esim. seuraavasti:

$ netstat -plnt|grep :88
 tcp 0 0 0.0.0.0:88 0.0.0.0:* LISTEN 668/samba
 tcp6 0 0 :::88 :::* LISTEN 668/samba

Tätä lähestymistapaa käytetään myös samba4-puppet-moduulin samba-ad-dc.monit.erb -tiedostossa.

Toinen, vielä varmempi tapa varmistua Kerberoksen toiminnasta on pyytää siltä tiketti:

$ kinit administrator
 Password for [email protected]:
 Warning: Your password will expire in 41 days on Tue 31 Jan 2017 05:31:40 PM EET

Jos Kerberos ei ole käynnissä, on syytä käynnistää koko samba-ad-dc -palvelu uudelleen:

$ systemctl restart samba-ad-dc

Member-koneilla, joille halutaan kirjautua AD-käyttäjinä, tarvitaan winbind-palvelu, joka on integroitava Linuxin PAM-järjestelmään (pluggable authentication modules). Winbindin toiminnan voi varmistaa getent -komennolla:

$ getent passwd|grep krbtgt
 krbtgt:*:10502:10513:krbtgt:/home/SMB/krbtgt:/bin/bash

Jos winbind ei toimi oikein, yllä oleva komento ei tulosta mitään.

Yleensä halutaan myös sallia sshd:n autentikoida käyttäjät Kerberoksella. Tähän riittää pieni lisäys /etc/ssh/sshd_config -tiedostoon:

KerberosAuthentication yes

AD-käyttäjien oikeudet voi selvittää seuraavasti:

$ net rpc rights list accounts -U administrator%password -I dc1.smb.domain.com
 BUILTINPrint Operators
 SeLoadDriverPrivilege
 SeShutdownPrivilege
 SeInteractiveLogonRight
 
 BUILTINAccount Operators
 SeInteractiveLogonRight
 
 --- snip ---
 
 BUILTINPre-Windows 2000 Compatible Access 
 SeRemoteInteractiveLogonRight 
 SeChangeNotifyPrivilege

Oikeuksia voidaan lisätä seuraavasti:

$ net rpc rights grant 'SMBDomain Admins' SeDiskOperatorPrivilege -U administrator%password -I dc1.smb.domain.com

Ei pidä myöskään unohtaa systemctl-komentoja kuten

$ systemctl status samba-ad-dc
 $ journalctl -n 0 -f --unit=samba-ad-dc
 $ journalctl -n 50 /usr/sbin/winbind

Lopuksi vielä tukku hyödyllisiä linkkejä debuggauksen avuksi:

menucross-circle