From: Andrew Bartlett Date: Tue, 7 Aug 2012 06:54:28 +0000 (+1000) Subject: s4-scripting: Redefine getntacl() as accessing via the smbd VFS or directly X-Git-Tag: samba-4.0.0beta7~70 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=b1825c64215ac304eff8fcd3555e9f5943f3ba63;p=thirdparty%2Fsamba.git s4-scripting: Redefine getntacl() as accessing via the smbd VFS or directly This allows us to write tests that compare the smbd vfs with what is in the DB or xattr. Andrew Bartlett --- diff --git a/source4/scripting/python/samba/ntacls.py b/source4/scripting/python/samba/ntacls.py index 64dfd17d64a..6f8e770bba4 100644 --- a/source4/scripting/python/samba/ntacls.py +++ b/source4/scripting/python/samba/ntacls.py @@ -55,8 +55,8 @@ def checkset_backend(lp, backend, eadbfile): raise XattrBackendError("Invalid xattr backend choice %s"%backend) -def getntacl(lp, file, backend=None, eadbfile=None): - if use_ntvfs: +def getntacl(lp, file, backend=None, eadbfile=None, direct_db_access=True): + if direct_db_access: (backend_obj, dbname) = checkset_backend(lp, backend, eadbfile) if dbname is not None: try: @@ -71,8 +71,13 @@ def getntacl(lp, file, backend=None, eadbfile=None): else: attribute = samba.xattr_native.wrap_getxattr(file, xattr.XATTR_NTACL_NAME) - ntacl = ndr_unpack(xattr.NTACL, attribute) - return ntacl + ntacl = ndr_unpack(xattr.NTACL, attribute) + if ntacl.version == 1: + return ntacl.info + elif ntacl.version == 2: + return ntacl.info.sd + elif ntacl.version == 3: + return ntacl.info.sd else: return smbd.get_nt_acl(file) diff --git a/source4/scripting/python/samba/tests/ntacls.py b/source4/scripting/python/samba/tests/ntacls.py index c867c95c4e1..8cdf613078a 100644 --- a/source4/scripting/python/samba/tests/ntacls.py +++ b/source4/scripting/python/samba/tests/ntacls.py @@ -49,7 +49,7 @@ class NtaclsTests(TestCase): setntacl(lp,tempf,acl,"S-1-5-21-2212615479-2695158682-2101375467") facl = getntacl(lp,tempf) anysid = security.dom_sid(security.SID_NT_SELF) - self.assertEquals(facl.info.as_sddl(anysid),acl) + self.assertEquals(facl.as_sddl(anysid),acl) os.unlink(tempf) def test_setntacl_getntacl_param(self): @@ -62,7 +62,7 @@ class NtaclsTests(TestCase): setntacl(lp,tempf,acl,"S-1-5-21-2212615479-2695158682-2101375467","tdb",os.path.join(path,"eadbtest.tdb")) facl=getntacl(lp,tempf,"tdb",os.path.join(path,"eadbtest.tdb")) domsid=security.dom_sid(security.SID_NT_SELF) - self.assertEquals(facl.info.as_sddl(domsid),acl) + self.assertEquals(facl.as_sddl(domsid),acl) os.unlink(tempf) def test_setntacl_invalidbackend(self):