Exemple #1
0
    def create_install_directory(self, spec):
        _check_concrete(spec)

        prefix = self.check_installed(spec)
        if prefix:
            raise InstallDirectoryAlreadyExistsError(prefix)

        # Create install directory with properly configured permissions
        # Cannot import at top of file
        from spack.package_prefs import get_package_dir_permissions
        from spack.package_prefs import get_package_group

        # Each package folder can have its own specific permissions, while
        # intermediate folders (arch/compiler) are set with full access to
        # everyone (0o777) and install_tree root folder is the chokepoint
        # for restricting global access.
        # So, whoever has access to the install_tree is allowed to install
        # packages for same arch/compiler and since no data is stored in
        # intermediate folders, it does not represent a security threat.
        group = get_package_group(spec)
        perms = get_package_dir_permissions(spec)
        perms_intermediate = 0o777

        mkdirp(spec.prefix, mode=perms, mode_intermediate=perms_intermediate)
        if group:
            chgrp(spec.prefix, group)
            # Need to reset the sticky group bit after chgrp
            os.chmod(spec.prefix, perms)

        mkdirp(self.metadata_path(spec), mode=perms)

        self.write_spec(spec, self.spec_file_path(spec))
Exemple #2
0
def set_permissions_by_spec(path, spec):
    # Get permissions for spec
    if os.path.isdir(path):
        perms = pp.get_package_dir_permissions(spec)
    else:
        perms = pp.get_package_permissions(spec)
    group = pp.get_package_group(spec)

    set_permissions(path, perms, group)
Exemple #3
0
def post_install(spec):
    if not spec.external:
        perms = get_package_permissions(spec)
        dir_perms = get_package_dir_permissions(spec)
        group = get_package_group(spec)

        forall_files(spec.prefix, chmod_real_entries, [perms], [dir_perms])

        if group:
            forall_files(spec.prefix, chgrp, [group])
Exemple #4
0
    def create_install_directory(self, spec):
        _check_concrete(spec)

        # Create install directory with properly configured permissions
        # Cannot import at top of file
        from spack.package_prefs import get_package_dir_permissions, get_package_group

        # Each package folder can have its own specific permissions, while
        # intermediate folders (arch/compiler) are set with access permissions
        # equivalent to the root permissions of the layout.
        group = get_package_group(spec)
        perms = get_package_dir_permissions(spec)

        fs.mkdirp(spec.prefix, mode=perms, group=group, default_perms='parents')
        fs.mkdirp(self.metadata_path(spec), mode=perms, group=group)  # in prefix

        self.write_spec(spec, self.spec_file_path(spec))
Exemple #5
0
    def create_install_directory(self, spec):
        _check_concrete(spec)

        prefix = self.check_installed(spec)
        if prefix:
            raise InstallDirectoryAlreadyExistsError(prefix)

        # Create install directory with properly configured permissions
        # Cannot import at top of file
        from spack.package_prefs import get_package_dir_permissions
        from spack.package_prefs import get_package_group
        group = get_package_group(spec)
        perms = get_package_dir_permissions(spec)
        mkdirp(spec.prefix, mode=perms)
        if group:
            chgrp(spec.prefix, group)
            # Need to reset the sticky group bit after chgrp
            os.chmod(spec.prefix, perms)

        mkdirp(self.metadata_path(spec), mode=perms)
        self.write_spec(spec, self.spec_file_path(spec))
Exemple #6
0
    def create_install_directory(self, spec):
        _check_concrete(spec)

        prefix = self.check_installed(spec)
        if prefix:
            raise InstallDirectoryAlreadyExistsError(prefix)

        # Create install directory with properly configured permissions
        # Cannot import at top of file
        from spack.package_prefs import get_package_dir_permissions
        from spack.package_prefs import get_package_group
        group = get_package_group(spec)
        perms = get_package_dir_permissions(spec)
        mkdirp(spec.prefix, mode=perms)
        if group:
            chgrp(spec.prefix, group)
            # Need to reset the sticky group bit after chgrp
            os.chmod(spec.prefix, perms)

        mkdirp(self.metadata_path(spec), mode=perms)
        self.write_spec(spec, self.spec_file_path(spec))