[mégsincs MEGOLDVA] samba tartományvezérlő, win7 kliensekhez

 ( sigellef | 2014. szeptember 14., vasárnap - 22:05 )

Üdv!

Most csinálok először ilyet, és most elakadtam. Amit el akarok érni, hogy legyen egy INFORMATIKA tartomány, és amely felhasználók ezen a gépen vannak definiálva, a win7-es klienseken INFORMATIKA\username -ként be tudjanak jelentkezni.

Amit eddig műveltem:

hosts -ba egy sor:
192.168.2.254 informatika informatika

egy script, biztos ami biztos alapon, nyitva legyenek az smb által használt portok:

########################### SMB nyitása #################################
/usr/sbin/iptables -I INPUT -p tcp --sport 137 -j ACCEPT
/usr/sbin/iptables -I OUTPUT -p tcp --dport 137 -j ACCEPT
/usr/sbin/iptables -I INPUT -p udp --sport 137 -j ACCEPT
/usr/sbin/iptables -I OUTPUT -p udp --dport 137 -j ACCEPT

/usr/sbin/iptables -I INPUT -p tcp --sport 138 -j ACCEPT
/usr/sbin/iptables -I OUTPUT -p tcp --dport 138 -j ACCEPT
/usr/sbin/iptables -I INPUT -p udp --sport 138 -j ACCEPT
/usr/sbin/iptables -I OUTPUT -p udp --dport 138 -j ACCEPT

/usr/sbin/iptables -I INPUT -p tcp --sport 139 -j ACCEPT
/usr/sbin/iptables -I OUTPUT -p tcp --dport 139 -j ACCEPT
/usr/sbin/iptables -I INPUT -p udp --sport 139 -j ACCEPT
/usr/sbin/iptables -I OUTPUT -p udp --dport 139 -j ACCEPT

/usr/sbin/iptables -I INPUT -p tcp --sport 445 -j ACCEPT
/usr/sbin/iptables -I OUTPUT -p tcp --dport 445 -j ACCEPT
/usr/sbin/iptables -I INPUT -p udp --sport 445 -j ACCEPT
/usr/sbin/iptables -I OUTPUT -p udp --dport 445 -j ACCEPT

Létrehoztam egy "informatika" nevű csoportot

Létrehoztam a felhasználókat névsor.txt-ből, mindenkinek a jelszava informatika (majd még finomítom), csoportja informatika,users:

add sript:
useradd -d `pwd`/$1 -p `openssl passwd -1 informatika` -g users -G users,informatika -m $1
chmod 750 `pwd`/$1

generate script:
#!/bin/bash

cat ./nevsor.txt | while read nev; do
echo "Készít:"$nev
./add $nev
done

lefuttatva /home/informatika/2013C mappában.
Eddig biztos a dolog, szúrópróba szerűen kipróbáltam egynéhány felhasznlóval ftp és ssh/putty elérést.

Nahh, most jönnek a számomra új dolgok. Egy doksi alapján ugyanígy megírtam egy scriptet, ami futtatja az smbpasswd-t minden felhasználónévre:
#!/bin/bash

cat ./nevsor.txt | while read nev; do
echo "Készít:"$nev
echo -e "informatika\ninformatika" | smbpasswd -s -a $nev
done

Folytattam a doksit, minden kliengép-névhez rendeltem egy usert (!!!???):
useradd -s /bin/false -d /dev/null gepnev$
smbpasswd -a -m gepnev$

Aztán kapott egy ilyen smb.conf-ot:

# /etc/samba/smb.conf
[global]
workgroup = INFORMATIKA
netbios name = INFORMATIKA
security = user
guest account = nobody
encrypt passwords = yes
os level = 66
local master = yes
domain master = yes
preferred master = yes
domain logons = yes
wins support = yes

[netlogon]
path = /home/informatika/netlogon
public = no
writeable = no
browseable = no

[home]
comment = Saját mappa
create mask = 0600
directory mask = 0700
browseable = yes
writeable = yes
path = %H/

[2011C]
comment = 12.C
create mask = 0600
directory mask = 0700
browseable = yes
public = no
force group = informatika
path = /home/informatika/2011C

[2013C]
comment = 10.C
create mask = 0600
directory mask = 0700
browseable = yes
public = no
force group = informatika
path = /home/informatika/2013C

[print$]
path = /etc/samba/drivers
write list = root

[printers]
browseable = No
path = /tmp
printable = Yes

[pub]
comment = PUBLIC
create mask = 0666
directory mask = 0777
browseable = yes
public = yes
path = /srv/smb

Ha a "security = user" -t átírom "security = share"-re, akkor működik win7 klienseken a következőképpen:

nyitok egy fájlkezelőt, a szerkesztőlécbe beírom, hogy \\INFORMATIKA vagy \\192.168.2.254. Ekkor dobja az ablakot, hogy írjak neki felhasználónevet és jelszót. A beírt felhasználó látja a saját mappáját, írni/olvasni tudja, másokéba nem tud belelépni... szóval, így korrekt.

Ami nem működik:
Windows-ba való bejelentkezéskor ha felhasználónak az INFORMATIKA\felhasznalonev usert adom, akkor azt írja, hogy a "tartomány nem létezik, vagy nem lehet hozzá csatlakozni"

A gépnév megadásánál is próbálkoztam, gepnev.INFORMATIKA, valamint tartományba való beléptetéskor kér egy beléptetésre jogosult felhasználót. Itt nem fogadta el sem a kliengép rendszergazdáját, sem a szerver rendszergazdáját.

Itt most megakadtam, mert azt sem tudom, hogy az smb.conf-ban rossz-e valami, meg azzal sem vagyok tisztában, hogy a kliensen hogy kell ezt a beléptetést csinálni.

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Nem írtad, hogy milyen samba-t használsz. Hogyha 3-ast, akkor nem fognak maguktól csak úgy bemenni a tartományba a kliensek. A win7-ben kell egy kicsit trükközni a registry-ben. Ezeket add hozzá:

[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanManWorkstation\Parameters]
"DomainCompatibilityMode"=dword:00000001
"DNSNameResolutionRequired"=dword:00000000

Ha ezután se megy, akkor én szétnéznék még a pamd körül is.

Ez volt a baj! Meg is kapta a bat fájlt:

REG ADD "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanManWorkstation\Parameters" /v "DomainCompatibilityMode" /t REG_DWORD /d 00000001
REG ADD "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanManWorkstation\Parameters" /v "DNSNameResolutionRequired" /t REG_DWORD /d 00000000

-fs-
Az olyan tárgyakat, amik képesek az mc futtatására, munkaeszköznek nevezzük.
/usr/lib/libasound.so --gágágágá --lilaliba

Ha most építed a domain-t, szerintem érdemesebb 4-es Sambával és natív AD-vel kezdeni, nem sokkal nehezebb belőni, viszont kapsz hozzá SMB3-at/DNS-t/Kerberos-t/GP-t/..., nem kell registry hackekkel szórakozni stb.
Ami miatt végképp megéri: a classic NT domain-t ugyan még támogatja a Windows 8 (spec. már Win7-re is írták, hogy nem támogatják, lévén az NT 4.0 support véget ért [http://technet.microsoft.com/en-us/library/ee681706%28v=ws.10%29.aspx]), de bármikor megtörhetik, akkor egy migrálás bonyolultabb lesz, mintha most egy AD-vel indítanál.

BlackY
--
"en is amikor bejovok dolgozni, nem egy pc-t [..] kapcsolok be, hanem a mainframe-et..." (sj)

+1

En nyaron csereltem le a Samba3-as "tartomanyunkat" Samba4-re. Nem migraltam, full ujat csinaltam, es azt kell mondani, hogy sokkal jobban kezelheto! (Nativ AD ugye. :)) A jogosultsagokkal volt egy kis kavaras (POSIX ACL-t elotte nem igazan ismertem), de gyakorlatilag ez volt az egyetlen dolog amivel kicsit tobbet kellett foglalkoznom. Arrol nem beszelve, hogy a bejelentkezes mennyivel gyorsabban megtortenik olyan gepen amin Windows 7 fut.

Szoval en meg elgondolkodnek arrol, hogy ujrakezdjek mindent...

--
http://www.flickr.com/photos/mizyhun/

lehet nézted már, de ami miatt nem lépnek be a kliensek az a rosszul felkonfigurált dns szerver nagy részben

win7 esetén beléptetés: http://windows.microsoft.com/en-us/windows/connect-computer-domain#1TC=windows-7

továbbá nézd meg hogy a gépek azt a dnst kapják dhcp-n amiből a domainded dolgozik, ha azt kapják nézd meg hogy fel tudod oldani a szervered nevét

ha ezt feloldja és a dns is jó akkor mennie kell a beléptetésnek, elméletileg bármilyn user tud beléptetni aki adbe van

win7 esetén belépéskor nem kell megadni \-rel a tartománynevet amikor domainbe lépteted simán csak felhasználónév jelszó páros és menni fog

Eddig tartott az öröm. A gépbe belekerült +1 hálókártya. Innenetől kezdve megsüketült, sehogy sem lehet rá csatlakozni.

Belépéskor a kliens 1-2 percig csak várakozik, aztán dobja a szöveget, hogy "Pillanatnyilag nem áll rendelkezésre olyan tartomány, ami a kérést kiszolgálja."

Az 1-2 perc várakozás alatt kb. fél másodpercig van hálózati forgalom (serveren, iptraf-fal nézve), utána semmi.

A hálókártya újbóli kiszedése után sem oldódik meg a dolog. A kliensekkel sem lehet gond, eddig 16 gépen működött akár egyszerre is, most egyiken sem.

Amit próbáltam az smb.conf-ban:

interfaces = eth1 lo

vagy

interfaces = 192.168.2 127

aztán rm /var/lib/samba/*.dat
aztán rm /ar/lib/samba/*.tdb...

a jelszófájlokat is újrageneráltattam, továbbra is néma csend.

Mit kellene még megnéznem?

-fs-
Az olyan tárgyakat, amik képesek az mc futtatására, munkaeszköznek nevezzük.
/usr/lib/libasound.so --gágágágá --lilaliba

Az interface-s mellett van bind interfaces only is? nmdb/smdb démonok futnak? Ha felviszed a log levelt mondjuk 3-5 körülre, nincs valami használható a logban? Nem lehet, hogy iptables szinten eldobálod a broadcast/arra az interface-re jövő csomagokat?

BlackY
--
"en is amikor bejovok dolgozni, nem egy pc-t [..] kapcsolok be, hanem a mainframe-et..." (sj)

A logok tele vannak hibaüzenetekkel, amikor működött, akkor is tele voltak. Google-ztam is, egy jó párat sikerült is eltüntetnem, de így is sok van még 2-es szinten is. A meglévőkből mazsoláztam:

nmbd.log -ban főként ez hemzseg:
[2014/09/24 12:42:38, 2] nmbd/nmbd_browsesync.c:107(announce_local_master_browser_to_domain_master_browser)
announce_local_master_browser_to_domain_master_browser:
We are both a domain and a local master browser for workgroup INFORMATIKA. Do not announce to ourselves.

smbd.log
[2014/09/24 08:26:37, 2] smbd/process.c:1979(deadtime_fn)
Closing idle connection
[2014/09/24 08:26:47, 2] smbd/process.c:1979(deadtime_fn)
Closing idle connection
[2014/09/24 08:26:47, 2] lib/access.c:406(check_access)
[2014/09/24 08:26:47, 2] lib/access.c:406(check_access)
Allowed connection from informatika (192.168.2.254)
Allowed connection from informatika (192.168.2.254)
[2014/09/24 12:44:19, 2] smbd/sesssetup.c:1360(setup_new_vc_session)
setup_new_vc_session: New VC == 0, if NT4.x compatible we would close all oldresources.

winbindd.log
[2014/09/24 08:25:34, 0] winbindd/winbindd_cache.c:2578(initialize_winbindd_cache)
initialize_winbindd_cache: clearing cache and re-creating with version number1
[2014/09/24 08:25:34, 2] winbindd/winbindd_util.c:235(add_trusted_domain)
Added domain BUILTIN S-1-5-32
[2014/09/24 08:25:34, 2] winbindd/winbindd_util.c:235(add_trusted_domain)
Added domain INFORMATIKA S-1-5-21-1699175939-3260495401-3149255644
[2014/09/24 08:26:20, 1] lib/util_tdb.c:521(tdb_wrap_log)
tdb(/var/lib/samba/mutex.tdb): tdb_lock failed on list 129 ltype=1 (Félbeszakított rendszerhívás)
[2014/09/24 08:26:20, 0] lib/util_tdb.c:69(tdb_chainlock_with_timeout_internal)
tdb_chainlock_with_timeout_internal: alarm (40) timed out for key INFORMATIKAin tdb /var/lib/samba/mutex.tdb
[2014/09/24 08:26:20, 1] lib/server_mutex.c:71(grab_named_mutex)
Could not get the lock for INFORMATIKA
....
[2014/09/24 08:29:42, 1] lib/util_tdb.c:521(tdb_wrap_log)
tdb(/var/lib/samba/mutex.tdb): tdb_lock failed on list 129 ltype=1 (Félbeszakított rendszerhívás)
[2014/09/24 08:29:42, 0] lib/util_tdb.c:69(tdb_chainlock_with_timeout_internal)
tdb_chainlock_with_timeout_internal: alarm (40) timed out for key INFORMATIKAin tdb /var/lib/samba/mutex.tdb
[2014/09/24 08:29:42, 1] lib/server_mutex.c:71(grab_named_mutex)
Could not get the lock for INFORMATIKA
[2014/09/24 08:29:42, 0] winbindd/winbindd_cm.c:782(cm_prepare_connection)
cm_prepare_connection: mutex grab failed for INFORMATIKA
[2014/09/24 08:30:20, 0] libsmb/namequery.c:75(saf_store)
saf_store: refusing to store 0 length domain or servername!
[2014/09/24 08:32:36, 1] rpc_client/cli_pipe.c:949(cli_pipe_validate_current_pdu)
cli_pipe_validate_current_pdu: RPC fault code DCERPC_FAULT_OP_RNG_ERROR received from host INFORMATIKA!
[2014/09/24 08:32:36, 0] winbindd/winbindd_dual.c:186(async_request_timeout_handler)
async_request_timeout_handler: child pid 3132 is not responding. Closing connection to it.
[2014/09/24 08:32:36, 1] winbindd/winbindd_util.c:303(trustdom_recv)
Could not receive trustdoms

-fs-
Az olyan tárgyakat, amik képesek az mc futtatására, munkaeszköznek nevezzük.
/usr/lib/libasound.so --gágágágá --lilaliba

Milyen disztrón milyen verziójú Samba fut?

BlackY
--
"en is amikor bejovok dolgozni, nem egy pc-t [..] kapcsolok be, hanem a mainframe-et..." (sj)

UHU-Linux 2.2, samba 3.4.6

-fs-
Az olyan tárgyakat, amik képesek az mc futtatására, munkaeszköznek nevezzük.
/usr/lib/libasound.so --gágágágá --lilaliba

No, egyik se mai darab... a hivatkozott mutex.tdb létezik, olvasható/írható, egy tdbdump lefut rá?

BlackY
--
"en is amikor bejovok dolgozni, nem egy pc-t [..] kapcsolok be, hanem a mainframe-et..." (sj)

létezik, tulaj root:root, jogok 600, a tdbdump nem jelez semmit, hibát sem.

-fs-
Az olyan tárgyakat, amik képesek az mc futtatására, munkaeszköznek nevezzük.
/usr/lib/libasound.so --gágágágá --lilaliba

Nem változott meg véletlenül a tartomány SID értéke?

# net getlocalsid

A felhasználónak, aki felveszi a gépeket a tartományba, megvan a megfelelő jogosultsága?

# net -U xxxadminxxx rpc rights list 'INFORMATIKA\Domain Admins'

root@informatika:~# net getlocalsid
SID for domain INFORMATIKA is: S-1-5-21-1699175939-3260495401-3149255644

root@informatika:~# net -U xxxadminxxx rpc rights list 'INFORMATIKA\Domain Admins'
Enter xxxadminxxx's password:
Could not connect to server 127.0.0.1
The username or password was not correct.
Connection failed: NT_STATUS_LOGON_FAILURE

... nahh, itt lesz valami gond. Aki a tartományba veszi a gépeket, annak a root-ot adtam meg, xxxadminxxx felhasználó nincs a gépen.

-fs-
Az olyan tárgyakat, amik képesek az mc futtatására, munkaeszköznek nevezzük.
/usr/lib/libasound.so --gágágágá --lilaliba

hoppá... elnéztem...

root@informatika:~# net -U root rpc rights list 'INFORMATIKA\Domain Admins'Enter root's password:

semmit nem ír...

-fs-
Az olyan tárgyakat, amik képesek az mc futtatására, munkaeszköznek nevezzük.
/usr/lib/libasound.so --gágágágá --lilaliba

Tisztázzuk:

  1. Kell egy olyan felhasználó, aki "samba felhasználó", legyen ez pl, a 'dcadmin'.
  2. Létezni kell a 'Domain Admins' csoportnak.
  3. A dcadmin felhasználónak a 'Domain Admins' csoport tagjának kell lenni.
  4. A 'Domain Admins' csoportnak jogosultságot kell adni, hogy gépeket vehessenek fel a tartományba.
  5. A 4. pontot kihagyhatod és adhatsz jogot csak a 'dcadmin' felhasználónak is, hogy gépeket vehessen fel a tartományba.
  6. További előfeltételek is szükségesek, inkább olvasd el az alábbi oldalról kiindulva: http://www.mithrandir.hu/doc/book/node58.html egy kicsit régi, de az UHU 2.2 is az :-)

Nem írtam, de az xxxadminxxx helyett azt a felhasználónevet írd be a parancsba, akivel a tartományba veszed fel a felhasználókat.

Lehet túl egyszerű, de a route parancs mit mond? Default gw rendben?

Destination Gateway Genmask Flags Metric Ref Use Iface
195.199.82.104 * 255.255.255.248 U 0 0 0 eth2
192.168.2.0 * 255.255.255.0 U 1 0 0 eth1
10.2.0.0 * 255.255.0.0 U 1 0 0 eth0
default 10.2.1.1 0.0.0.0 UG 0 0 0 eth0

probléma az nincs, eddig is az eth1 volt leosztva a gépteremnek. A többi szolgáltatással (dhcp, squid, httpd, proftpd, sshd) nem lett probléma, csak a samba dőlt ki.

-fs-
Az olyan tárgyakat, amik képesek az mc futtatására, munkaeszköznek nevezzük.
/usr/lib/libasound.so --gágágágá --lilaliba

Ha beraksz egy új hálókártyát akkor 99%, hogy megváltoztak a hálókártya elnevezések (az eth0, már eth1). Ehhez nézd meg a /etc/udev/rules.d/70-persistent-net.rules file-t. Itt vannak a hálókártya nevek és MAC adress-ek összetársítva. Ha ezt rendbe rakod, akkor minden jó lesz!

Hát... elég hülyén szokott néha bánni az udev a hálókártyákkal, de most szerencsém volt. De lényegtelen, mert dhcp is fut, az osztja a címeket a saját kártyáinak is MAC alapján, tévedni legfeljebb ott tudok, hogy hová dugom a drótot.

-fs-
Az olyan tárgyakat, amik képesek az mc futtatására, munkaeszköznek nevezzük.
/usr/lib/libasound.so --gágágágá --lilaliba

... újabb érdekes dolog állt elő:
1. bejelentkezek az egyik gépbe lokális userként
2. a fájlkezelőben lenyitom a "Hálózatok" nevű.. ... (bigyót)
3. ott látszik az "INFORMATIKA" nevű gép? megosztás? vagy mi...
4. azt lenyitva rákattintok a "home" nevű megosztásra
5. kéri a felhasználónév/jelszó párost
6. beírom, elfogadja
7. onnantól tudok írni a megadott felhasználó mappájába. A működése eddig korrekt, mert csak a megadott felhasználó mappájába ír. A [2011C] megosztáson látszik a többi user mappája, azokra rákattintva szintén kére a user:password párost, és azt megadva szintén működik az adott mappa.

Summa summárum: az egész "motorja" gyakorlatilag mintha működne, csak valami oknál fogva a beléptetéssel lett valami baj.

-fs-
Az olyan tárgyakat, amik képesek az mc futtatására, munkaeszköznek nevezzük.
/usr/lib/libasound.so --gágágágá --lilaliba

A samba szerveren futtatva a következő parancsot, mit kapsz válaszul:

# nmblookup -B server __INFORMATIKA__

Egy kliensen futtatva a következő parancsokat, mit kapsz válaszul:

C:\> nbtstat -a informatika
C:\> net view \\INFORMATIKA

root@informatika:~# nmblookup -B server __INFORMATIKA__
doing parameter idmap uid = 10000-20000
doing parameter idmap gid = 10000-20000
doing parameter local master = yes
doing parameter domain master = yes
doing parameter preferred master = yes
doing parameter domain logons = yes
doing parameter wins support = yes
doing parameter winbind separator = /
doing parameter winbind trusted domains only = yes
doing parameter printcap name = /dev/null
doing parameter load printers = no
doing parameter max log size = 50000
doing parameter domain logons = yes
doing parameter logon path = \\%L\profiles\.profile
doing parameter logon drive = Z:
doing parameter logon home = \\%L\%U
pm_process() returned Yes
added interface eth1 ip=192.168.2.254 bcast=192.168.2.255 netmask=255.255.255.0
added interface lo ip=127.0.0.1 bcast=127.255.255.255 netmask=255.0.0.0
Socket opened.
querying __INFORMATIKA__ on 192.168.2.255
querying __INFORMATIKA__ on 127.255.255.255
name_query failed to find name __INFORMATIKA__

így nem leli, de ha nem teszem __ közé:

... ...
pm_process() returned Yes
added interface eth1 ip=192.168.2.254 bcast=192.168.2.255 netmask=255.255.255.0
added interface lo ip=127.0.0.1 bcast=127.255.255.255 netmask=255.0.0.0
Socket opened.
querying INFORMATIKA on 192.168.2.255
nmb packet from 192.168.2.254(137) header: id=315 opcode=Query(0) response=Yes
header: flags: bcast=No rec_avail=Yes rec_des=Yes trunc=No auth=Yes
header: rcode=0 qdcount=0 ancount=1 nscount=0 arcount=0
answers: nmb_name=INFORMATIKA<00> rr_type=32 rr_class=1 ttl=259200
answers 0 char ...... hex E000C0A802FE
Got a positive name query response from 192.168.2.254 ( 192.168.2.254 )
192.168.2.254 INFORMATIKA<00>

a klienseket meg majd este, ha bemegyek a gépterembe...

-fs-
Az olyan tárgyakat, amik képesek az mc futtatására, munkaeszköznek nevezzük.
/usr/lib/libasound.so --gágágágá --lilaliba