|
43 |
from samba.idmap import IDmapDB |
43 |
from samba.idmap import IDmapDB |
44 |
from samba.auth import system_session |
44 |
from samba.auth import system_session |
45 |
from samba.param import LoadParm |
45 |
from samba.param import LoadParm |
|
|
46 |
from samba.provision import setup_idmapdb |
46 |
|
47 |
|
47 |
name = 'samba4-idmap' |
48 |
name = 'samba4-idmap' |
48 |
description = 'Update local IDmap entries' |
49 |
description = 'Update local IDmap entries' |
|
94 |
|
95 |
|
95 |
__SPECIAL_SIDS = set(__SPECIAL_ACCOUNT_SIDS.values()) |
96 |
__SPECIAL_SIDS = set(__SPECIAL_ACCOUNT_SIDS.values()) |
96 |
|
97 |
|
|
|
98 |
__IDMAP = None |
99 |
|
97 |
|
100 |
|
98 |
def open_idmap(): |
101 |
def open_idmap(): |
|
|
102 |
if __IDMAP: |
103 |
return __IDMAP |
104 |
|
99 |
global lp |
105 |
global lp |
|
|
106 |
|
107 |
idmap_ldb = '/var/lib/samba/private/idmap.ldb' |
100 |
listener.setuid(0) |
108 |
listener.setuid(0) |
101 |
try: |
109 |
try: |
102 |
idmap = IDmapDB('/var/lib/samba/private/idmap.ldb', session_info=system_session(), lp=lp) |
110 |
if not os.path.exists(idmap_ldb): |
|
|
111 |
setup_idmapdb(idmap_ldb, session_info=system_session(), lp=lp) |
112 |
__IDMAP = IDmapDB(idmap_ldb, session_info=system_session(), lp=lp) |
103 |
except ldb.LdbError: |
113 |
except ldb.LdbError: |
104 |
univention.debug.debug(univention.debug.LISTENER, univention.debug.ERROR, "%s: /var/lib/samba/private/idmap.ldb could not be opened" % name) |
114 |
univention.debug.debug(univention.debug.LISTENER, univention.debug.ERROR, "%s: /var/lib/samba/private/idmap.ldb could not be opened" % name) |
105 |
raise |
115 |
raise |
106 |
finally: |
116 |
finally: |
107 |
listener.unsetuid() |
117 |
listener.unsetuid() |
108 |
|
118 |
|
109 |
return idmap |
119 |
return __IDMAP |
110 |
|
120 |
|
111 |
|
121 |
|
112 |
def rename_or_modify_idmap_entry(old_sambaSID, new_sambaSID, xidNumber, type_string, idmap=None): |
122 |
def rename_or_modify_idmap_entry(old_sambaSID, new_sambaSID, xidNumber, type_string, idmap=None): |
|
235 |
idmap_ldb_backup = '%s_%d' % (idmap_ldb, time.time()) |
245 |
idmap_ldb_backup = '%s_%d' % (idmap_ldb, time.time()) |
236 |
univention.debug.debug(univention.debug.LISTENER, univention.debug.PROCESS, 'Move %s to %s' % (idmap_ldb, idmap_ldb_backup)) |
246 |
univention.debug.debug(univention.debug.LISTENER, univention.debug.PROCESS, 'Move %s to %s' % (idmap_ldb, idmap_ldb_backup)) |
237 |
os.rename(idmap_ldb, idmap_ldb_backup) |
247 |
os.rename(idmap_ldb, idmap_ldb_backup) |
|
|
248 |
setup_idmapdb(idmap_ldb, session_info=system_session(), lp=lp) |
238 |
finally: |
249 |
finally: |
239 |
listener.unsetuid() |
250 |
listener.unsetuid() |
240 |
|
251 |
|