Posted on 2020-06-16 by overlord
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