Samba FSMO Role Átruházása Másik DC-Re

samba ad dc fsmo roles error

Samba szerveren üzemeltetett AD esetén előfordul, hogy szerver tervezett karbantartása, vagy egyéb okból szükségessé válik az FSMO role-ok átruházása másik szerverre.

Be kell lépni – mondjuk SSH-n – a célszerverre, és ellenőrizni kell az FSMO role-ok aktuális értékét.

samba-tool fsmo show

Ez valami hasonló eredményt fog hozni:

SchemaMasterRole owner: CN=NTDS Settings,CN=MYSERVER,CN=Servers,CN=HOME,CN=Sites,CN=Configuration,DC=ad,DC=test,DC=com
InfrastructureMasterRole owner: CN=NTDS Settings,CN=MYSERVER,CN=Servers,CN=HOME,CN=Sites,CN=Configuration,DC=ad,DC=test,DC=com
RidAllocationMasterRole owner: CN=NTDS Settings,CN=MYSERVER,CN=Servers,CN=HOME,CN=Sites,CN=Configuration,DC=ad,DC=test,DC=com
PdcEmulationMasterRole owner: CN=NTDS Settings,CN=MYSERVER,CN=Servers,CN=HOME,CN=Sites,CN=Configuration,DC=ad,DC=test,DC=com
DomainNamingMasterRole owner: CN=NTDS Settings,CN=MYSERVER,CN=Servers,CN=HOME,CN=Sites,CN=Configuration,DC=ad,DC=test,DC=com
DomainDnsZonesMasterRole owner: CN=NTDS Settings,CN=MYSERVER,CN=Servers,CN=HOME,CN=Sites,CN=Configuration,DC=ad,DC=test,DC=com
ForestDnsZonesMasterRole owner: CN=NTDS Settings,CN=MYSERVER,CN=Servers,CN=HOME,CN=Sites,CN=Configuration,DC=ad,DC=test,DC=com

Fenti eredményből látható, hogy a HOME Site-on lévő MYSERVER látja el a feladatokat jelen pillanatban. Az FSMO role teljes áthelyezéséhez egy másik szerverre ajánlott a célszerverre belépve kiadni a következő parancsot:

samba-tool fsmo transfer --role=all -U AdministratorAccount

Ahol az AdministratorAccount a domain-ben admin joggal rendelkező fiókot adja meg. A parancs végrehajtása során be fogja kérni az admin fiókhoz tartozó jelszót, így elkerülhető a command line-on a speciális karakterek megadásából- és beviteléből adódó probléma.

Találkozhatunk az alábbihoz hasonló hibaüzenettel:

ERROR: Failed to delete role 'forestdns': LDAP error 50 LDAP_INSUFFICIENT_ACCESS_RIGHTS - <00002098: Object CN=Infrastructure,DC=ForestDnsZones,DC=ad,DC=test, DC=com has no write property access> <>

Ebben az esetben nem megfelelő usert adtunk meg, mivel nincs joga módosítást végrehajtani az LDAP szerveren. Ugyanez fodulhat elő a user megadása nélkül is, szintén az előbb említett jogosultsági probléma miatt.

Az FSMO role-ok áthelyezése során, legyen szó egyenkénti, vagy az összes role egyidejű áthelyezéséről, előfordulhat, hogy a parancs minden helyesen megadott paraméter ellenére hasonló hibára fut:

ERROR(): uncaught exception - 'module' object has no attribute 'drs_utils'
File "/usr/lib/python2.7/dist-packages/samba/netcmd/init.py", line 176, in _run
return self.run(*args, **kwargs)
File "/usr/lib/python2.7/dist-packages/samba/netcmd/fsmo.py", line 515, in run
"domaindns", samdb)
File "/usr/lib/python2.7/dist-packages/samba/netcmd/fsmo.py", line 129, in transfer_dns_role
except samba.drs_utils.drsException, e:

Ebben az esetben kézzel meg kell patch-elni a következő file-t (Ubuntu 18.04):

/usr/lib/python2.7/dist-packages/samba/netcmd/fsmo.py

Ide az első néhány sorban importálni kell a samba.drs_utils -t a kiemelt módon a kódba illesztve:

import samba
import samba.getopt as options
import ldb
import samba.drs_utils
from ldb import LdbError
from samba.dcerpc import drsuapi, misc
from samba.auth import system_session