~ubuntu-branches/ubuntu/vivid/samba/vivid

« back to all changes in this revision

Viewing changes to source4/scripting/python/samba/tests/ntacls.py

  • Committer: Package Import Robot
  • Author(s): Chuck Short
  • Date: 2011-12-21 13:18:04 UTC
  • mfrom: (0.39.21 sid)
  • Revision ID: package-import@ubuntu.com-20111221131804-xtlr39wx6njehxxr
Tags: 2:3.6.1-3ubuntu1
* Merge from Debian testing.  Remaining changes:
  + debian/patches/VERSION.patch:
    - set SAMBA_VERSION_SUFFIX to Ubuntu.
  + debian/patches/error-trans.fix-276472:
    - Add the translation of Unix Error code -ENOTSUP to NT Error Code
    - NT_STATUS_NOT_SUPPORTED to prevent the Permission denied error.
  + debian/smb.conf:
    - add "(Samba, Ubuntu)" to server string.
    - comment out the default [homes] share, and add a comment about
      "valid users = %S" to show users how to restrict access to
      \\server\username to only username.
    - Set 'usershare allow guests', so that usershare admins are 
      allowed to create public shares in addition to authenticated
      ones.
    - add map to guest = Bad user, maps bad username to guest access.
  + debian/samba-common.config:
    - Do not change priority to high if dhclient3 is installed.
    - Use priority medium instead of high for the workgroup question.
  + debian/control:
    - Don't build against or suggest ctdb.
    - Add dependency on samba-common-bin to samba.
  + Add ufw integration:
    - Created debian/samba.ufw.profile
    - debian/rules, debian/samba.dirs, debian/samba.files: install
      profile
    - debian/control: have samba suggest ufw
  + Add apport hook:
    - Created debian/source_samba.py.
    - debian/rules, debian/samba.dirs, debian/samba-common-bin.files: install
  + Switch to upstart:
    - Add debian/samba.{nmbd,smbd}.upstart.
  + debian/samba.logrotate, debian/samba-common.dhcp, debian/samba.if-up:
    - Make them upstart compatible
  + debian/samba.postinst: 
    - Avoid scary pdbedit warnings on first import.
  + debian/samba-common.postinst: Add more informative error message for
    the case where smb.conf was manually deleted
  + debian/patches/fix-debuglevel-name-conflict.patch: don't use 'debug_level'
    as a global variable name in an NSS module 
  + Dropped:
    - debian/patches/error-trans.fix-276472
    - debian/patches/fix-debuglevel-name-conflict.patch

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/usr/bin/env python
 
2
 
 
3
# Unix SMB/CIFS implementation. Tests for ntacls manipulation
 
4
# Copyright (C) Matthieu Patou <mat@matws.net> 2009-2010
 
5
#
 
6
# This program is free software; you can redistribute it and/or modify
 
7
# it under the terms of the GNU General Public License as published by
 
8
# the Free Software Foundation; either version 3 of the License, or
 
9
# (at your option) any later version.
 
10
#
 
11
# This program is distributed in the hope that it will be useful,
 
12
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 
13
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
14
# GNU General Public License for more details.
 
15
#
 
16
# You should have received a copy of the GNU General Public License
 
17
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
18
#
 
19
 
 
20
"""Tests for samba.ntacls."""
 
21
 
 
22
from samba.ntacls import setntacl, getntacl, XattrBackendError
 
23
from samba.dcerpc import xattr, security
 
24
from samba.param import LoadParm
 
25
from samba.tests import TestCase, TestSkipped
 
26
import random
 
27
import os
 
28
 
 
29
class NtaclsTests(TestCase):
 
30
 
 
31
    def test_setntacl(self):
 
32
        random.seed()
 
33
        lp = LoadParm()
 
34
        path = os.environ['SELFTEST_PREFIX']
 
35
        acl = "O:S-1-5-21-2212615479-2695158682-2101375467-512G:S-1-5-21-2212615479-2695158682-2101375467-513D:(A;OICI;0x001f01ff;;;S-1-5-21-2212615479-2695158682-2101375467-512)"
 
36
        tempf = os.path.join(path,"pytests"+str(int(100000*random.random())))
 
37
        ntacl = xattr.NTACL()
 
38
        ntacl.version = 1
 
39
        open(tempf, 'w').write("empty")
 
40
        lp.set("posix:eadb",os.path.join(path,"eadbtest.tdb"))
 
41
        setntacl(lp, tempf, acl, "S-1-5-21-2212615479-2695158682-2101375467")
 
42
        os.unlink(tempf)
 
43
 
 
44
    def test_setntacl_getntacl(self):
 
45
        random.seed()
 
46
        lp = LoadParm()
 
47
        path = None
 
48
        path = os.environ['SELFTEST_PREFIX']
 
49
        acl = "O:S-1-5-21-2212615479-2695158682-2101375467-512G:S-1-5-21-2212615479-2695158682-2101375467-513D:(A;OICI;0x001f01ff;;;S-1-5-21-2212615479-2695158682-2101375467-512)"
 
50
        tempf = os.path.join(path,"pytests"+str(int(100000*random.random())))
 
51
        ntacl = xattr.NTACL()
 
52
        ntacl.version = 1
 
53
        open(tempf, 'w').write("empty")
 
54
        lp.set("posix:eadb",os.path.join(path,"eadbtest.tdb"))
 
55
        setntacl(lp,tempf,acl,"S-1-5-21-2212615479-2695158682-2101375467")
 
56
        facl = getntacl(lp,tempf)
 
57
        anysid = security.dom_sid(security.SID_NT_SELF)
 
58
        self.assertEquals(facl.info.as_sddl(anysid),acl)
 
59
        os.unlink(tempf)
 
60
 
 
61
    def test_setntacl_getntacl_param(self):
 
62
        random.seed()
 
63
        lp = LoadParm()
 
64
        acl = "O:S-1-5-21-2212615479-2695158682-2101375467-512G:S-1-5-21-2212615479-2695158682-2101375467-513D:(A;OICI;0x001f01ff;;;S-1-5-21-2212615479-2695158682-2101375467-512)"
 
65
        path = os.environ['SELFTEST_PREFIX']
 
66
        tempf = os.path.join(path,"pytests"+str(int(100000*random.random())))
 
67
        ntacl = xattr.NTACL()
 
68
        ntacl.version = 1
 
69
        open(tempf, 'w').write("empty")
 
70
        setntacl(lp,tempf,acl,"S-1-5-21-2212615479-2695158682-2101375467","tdb",os.path.join(path,"eadbtest.tdb"))
 
71
        facl=getntacl(lp,tempf,"tdb",os.path.join(path,"eadbtest.tdb"))
 
72
        domsid=security.dom_sid(security.SID_NT_SELF)
 
73
        self.assertEquals(facl.info.as_sddl(domsid),acl)
 
74
        os.unlink(tempf)
 
75
 
 
76
    def test_setntacl_invalidbackend(self):
 
77
        random.seed()
 
78
        lp = LoadParm()
 
79
        acl = "O:S-1-5-21-2212615479-2695158682-2101375467-512G:S-1-5-21-2212615479-2695158682-2101375467-513D:(A;OICI;0x001f01ff;;;S-1-5-21-2212615479-2695158682-2101375467-512)"
 
80
        path = os.environ['SELFTEST_PREFIX']
 
81
        tempf = os.path.join(path,"pytests"+str(int(100000*random.random())))
 
82
        ntacl = xattr.NTACL()
 
83
        ntacl.version = 1
 
84
        open(tempf, 'w').write("empty")
 
85
        self.assertRaises(XattrBackendError, setntacl, lp, tempf, acl, "S-1-5-21-2212615479-2695158682-2101375467","ttdb", os.path.join(path,"eadbtest.tdb"))
 
86
 
 
87
    def test_setntacl_forcenative(self):
 
88
        if os.getuid() == 0:
 
89
            raise TestSkipped("Running test as root, test skipped")
 
90
        random.seed()
 
91
        lp = LoadParm()
 
92
        acl = "O:S-1-5-21-2212615479-2695158682-2101375467-512G:S-1-5-21-2212615479-2695158682-2101375467-513D:(A;OICI;0x001f01ff;;;S-1-5-21-2212615479-2695158682-2101375467-512)"
 
93
        path = os.environ['SELFTEST_PREFIX']
 
94
        tempf = os.path.join(path,"pytests"+str(int(100000*random.random())))
 
95
        ntacl = xattr.NTACL()
 
96
        ntacl.version = 1
 
97
        open(tempf, 'w').write("empty")
 
98
        lp.set("posix:eadb", os.path.join(path,"eadbtest.tdb"))
 
99
        self.assertRaises(Exception, setntacl, lp, tempf ,acl,
 
100
            "S-1-5-21-2212615479-2695158682-2101375467","native")
 
101
        os.unlink(tempf)