diff options
author | Kai Blin <kai@samba.org> | 2008-04-01 00:17:00 +0200 |
---|---|---|
committer | Kai Blin <kai@samba.org> | 2008-04-02 23:07:53 +0200 |
commit | 8ac91d913231ecd7ead595b93032c7486f67c949 (patch) | |
tree | b527ff7d36496e142e915091231eea9e432f4b0d /source4/scripting/python/samba/idmap.py | |
parent | b6c48091d442781d5f22d703a00aa242de8f7226 (diff) | |
download | samba-8ac91d913231ecd7ead595b93032c7486f67c949.tar.gz samba-8ac91d913231ecd7ead595b93032c7486f67c949.tar.xz samba-8ac91d913231ecd7ead595b93032c7486f67c949.zip |
provision: Set up id mappings in the idmap db, only map Administrator.
(This used to be commit 206b7d387c6d17e5cc40fd45b489abac9235a7a4)
Diffstat (limited to 'source4/scripting/python/samba/idmap.py')
-rw-r--r-- | source4/scripting/python/samba/idmap.py | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/source4/scripting/python/samba/idmap.py b/source4/scripting/python/samba/idmap.py new file mode 100644 index 00000000000..355565968a3 --- /dev/null +++ b/source4/scripting/python/samba/idmap.py @@ -0,0 +1,73 @@ +#!/usr/bin/python + +# Unix SMB/CIFS implementation. +# Copyright (C) 2008 Kai Blin <kai@samba.org> +# +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. +# + +"""Convenience functions for using the idmap database.""" + +import samba +import ldb + +class IDmapDB(samba.Ldb): + """The IDmap database.""" + + # Mappings for ID_TYPE_UID, ID_TYPE_GID and ID_TYPE_BOTH + TYPE_UID = 1 + TYPE_GID = 2 + TYPE_BOTH = 3 + + def __init__(self, url=None, session_info=None, credentials=None, + modules_dir=None, lp=None): + """Open the IDmap Database. + + :param url: URL of the database. + """ + super(IDmapDB, self).__init__(session_info=session_info, credentials=credentials, + modules_dir=modules_dir, lp=lp) + if url: + self.connect(url) + + + def setup_name_mapping(self, sid, type, unixid): + """Setup a mapping between a sam name and a unix name. + + :param sid: SID of the NT-side of the mapping. + :param unixname: Unix name to map to. + """ + type_string = "" + if type == self.TYPE_UID: + type_string = "ID_TYPE_UID" + elif type == self.TYPE_GID: + type_string = "ID_TYPE_GID" + elif type == self.TYPE_BOTH: + type_string = "ID_TYPE_BOTH" + else: + return + + mod = """ +dn: CN=%s +xidNumber: %s +objectSid: %s +objectClass: sidMap +type: %s +cn: %s + +""" % (sid, unixid, sid, type_string, sid) + self.add(self.parse_ldif(mod).next()[1]) + + |