Ejemplo n.º 1
0
def test_add_file_infer_mode():
    mtree = MtreeFile(verbose=False)
    with tempfile.TemporaryDirectory() as td:
        parent_dir = _create_dir(Path(td), "parent", 0o750)
        testdir = _create_dir(parent_dir, "testdir", 0o700)
        testfile = _create_file(testdir, "file", 0o666)
        testlink = _create_symlink(testdir,
                                   name="link",
                                   target="file",
                                   mode=0o444)
        symlink_perms = "0444" if HAVE_LCHMOD else "0777"
        assert oct(testfile.lstat().st_mode) == "0o100666"
        assert oct(testlink.lstat().st_mode) == "0o12" + symlink_perms
        print("testlink", oct(testlink.lstat().st_mode))
        mtree.add_file(testfile, "foo/bar/file")
        mtree.add_file(testlink, "foo/bar/link")
        expected = """#mtree 2.0
. type=dir uname=root gname=wheel mode=0755
./foo type=dir uname=root gname=wheel mode=0750
./foo/bar type=dir uname=root gname=wheel mode=0700
./foo/bar/file type=file uname=root gname=wheel mode=0666 contents={testfile}
./foo/bar/link type=link uname=root gname=wheel mode={symlink_perms} link=file
# END
""".format(testfile=testfile, symlink_perms=symlink_perms)
        assert expected == _get_as_str(mtree)
Ejemplo n.º 2
0
def test_add_file():
    mtree = MtreeFile(verbose=False)
    mtree.add_file(Path("/foo/bar"), "tmp/mysh", mode=0o755)
    print(_get_as_str(mtree), file=sys.stderr)
    expected = """#mtree 2.0
. type=dir uname=root gname=wheel mode=0755
./tmp type=dir uname=root gname=wheel mode=0755
./tmp/mysh type=file uname=root gname=wheel mode=0755 contents=/foo/bar
# END
"""
    assert expected == _get_as_str(mtree)
Ejemplo n.º 3
0
def test_symlink_infer_mode(temp_symlink):
    mtree = MtreeFile(verbose=False)
    print(temp_symlink)
    mtree.add_file(temp_symlink[0], "tmp/link", parent_dir_mode=0o755)
    mtree.add_file(temp_symlink[1], "tmp/testfile", parent_dir_mode=0o755)
    print(_get_as_str(mtree), file=sys.stderr)
    symlink_perms = "0644" if HAVE_LCHMOD else "0777"
    expected = """#mtree 2.0
. type=dir uname=root gname=wheel mode=0755
./tmp type=dir uname=root gname=wheel mode=0755
./tmp/link type=link uname=root gname=wheel mode={symlink_perms} link={target}
./tmp/testfile type=file uname=root gname=wheel mode=0700 contents={testfile}
# END
""".format(target=temp_symlink[2],
           testfile=str(temp_symlink[1]),
           symlink_perms=symlink_perms)
    assert expected == _get_as_str(mtree)
Ejemplo n.º 4
0
def test_symlink_symlink(temp_symlink):
    mtree = MtreeFile(verbose=False)
    print(temp_symlink)
    mtree.add_file(temp_symlink[0],
                   "tmp/link",
                   mode=0o755,
                   parent_dir_mode=0o755)
    mtree.add_file(temp_symlink[1],
                   "tmp/testfile",
                   mode=0o755,
                   parent_dir_mode=0o755)
    print(_get_as_str(mtree), file=sys.stderr)
    expected = """#mtree 2.0
. type=dir uname=root gname=wheel mode=0755
./tmp type=dir uname=root gname=wheel mode=0755
./tmp/link type=link uname=root gname=wheel mode=0755 link={target}
./tmp/testfile type=file uname=root gname=wheel mode=0755 contents={testfile}
# END
""".format(target=temp_symlink[2], testfile=str(temp_symlink[1]))
    assert expected == _get_as_str(mtree)
Ejemplo n.º 5
0
def test_add_file_infer_ssh_mode():
    mtree = MtreeFile()
    with tempfile.TemporaryDirectory() as td:
        root_dir = _create_dir(td, "root", 0o744)
        ssh_dir = _create_dir(root_dir, ".ssh", 0o777)
        auth_keys = _create_file(ssh_dir, "authorized_keys", 0o666)
        privkey = _create_file(ssh_dir, "id_foo", 0o754)
        pubkey = _create_file(ssh_dir, "id_foo.pub", 0o755)
        testlink = _create_symlink(ssh_dir,
                                   "link",
                                   target="authorized_keys",
                                   mode=0o767)
        symlink_perms = "0767" if HAVE_LCHMOD else "0777"  # However, in the mtree it is actually 0600 due to .ssh perms
        # The input files have wrong permissions but the mtree should be correct:
        assert oct(auth_keys.lstat().st_mode) == "0o100666"
        assert oct(privkey.lstat().st_mode) == "0o100754"
        assert oct(pubkey.lstat().st_mode) == "0o100755"
        assert oct(testlink.lstat().st_mode) == "0o12" + symlink_perms
        assert oct(ssh_dir.lstat().st_mode) == "0o40777"
        assert oct(root_dir.lstat().st_mode) == "0o40744"
        mtree.add_file(auth_keys, "root/.ssh/authorized_keys")
        mtree.add_file(privkey, "root/.ssh/id_foo")
        mtree.add_file(pubkey, "root/.ssh/id_foo.pub")
        mtree.add_file(testlink, "root/.ssh/link")

        expected = """#mtree 2.0
. type=dir uname=root gname=wheel mode=0755
./root type=dir uname=root gname=wheel mode=0755
./root/.ssh type=dir uname=root gname=wheel mode=0700
./root/.ssh/authorized_keys type=file uname=root gname=wheel mode=0600 contents={auth_keys}
./root/.ssh/id_foo type=file uname=root gname=wheel mode=0600 contents={privkey}
./root/.ssh/id_foo.pub type=file uname=root gname=wheel mode=0755 contents={pubkey}
./root/.ssh/link type=link uname=root gname=wheel mode=0600 link=authorized_keys
# END
""".format(auth_keys=auth_keys,
           privkey=privkey,
           pubkey=pubkey,
           symlink_perms=symlink_perms)
        assert expected == _get_as_str(mtree)