def checkset_backend(lp, backend, eadbfile):
- # if posix:eadb is set, then force the backend
- if backend is not None:
- if backend == "native":
- lp.set("posix:eadb", "")
- elif backend == "tdb":
- if eadbfile is not None:
- lp.set("posix:eadb", eadbfile)
- else:
- os.path.abspath(os.path.join(lp.get("private dir"), "eadb.tdb"))
+ '''return the path to the eadb, or None'''
+ if backend is None:
+ return lp.get("posix:eadb")
+ elif backend == "native":
+ return None
+ elif backend == "tdb":
+ if eadbfile is not None:
+ return eadbfile
else:
- raise XattrBackendError("Invalid xattr backend choice %s"%backend)
+ return os.path.abspath(os.path.join(lp.get("private dir"), "eadb.tdb"))
+ else:
+ raise XattrBackendError("Invalid xattr backend choice %s"%backend)
def getntacl(lp, file, backend=None, eadbfile=None):
- checkset_backend(lp, backend, eadbfile)
- eadbname = lp.get("posix:eadb")
- if eadbname is not None and eadbname != "":
+ eadbname = checkset_backend(lp, backend, eadbfile)
+ if eadbname is not None:
try:
attribute = samba.xattr_tdb.wrap_getxattr(eadbname, file,
xattr.XATTR_NTACL_NAME)
def setntacl(lp, file, sddl, domsid, backend=None, eadbfile=None):
- checkset_backend(lp, backend, eadbfile)
+ eadbname = checkset_backend(lp, backend, eadbfile)
ntacl = xattr.NTACL()
ntacl.version = 1
sid = security.dom_sid(domsid)
sd = security.descriptor.from_sddl(sddl, sid)
ntacl.info = sd
- eadbname = lp.get("posix:eadb")
- if eadbname is not None and eadbname != "":
+ if eadbname is not None:
try:
samba.xattr_tdb.wrap_setxattr(eadbname,
file, xattr.XATTR_NTACL_NAME, ndr_pack(ntacl))
"O:S-1-5-32G:S-1-5-32", "S-1-5-32", "native")
eadb = False
except:
- # XXX: Should catch a specific exception here
- if lp.get("posix:eadb") is None:
- logger.info("You are not root or your system do not support xattr, using tdb backend for attributes. "
- "If you intend to use this provision in production, rerun the script as root on a system supporting xattrs.")
+ logger.info("You are not root or your system do not support xattr, using tdb backend for attributes. "
+ "If you intend to use this provision in production, rerun the script as root on a system supporting xattrs.")
file.close()