def set_protection(self, lock, ami_path, mask): sys_path = self.path_mgr.ami_to_sys_path(lock, ami_path) if sys_path == None or not os.path.exists(sys_path): log_file.info("file to set proteciton not found: '%s'", ami_path) return ERROR_OBJECT_NOT_FOUND prot = DosProtection(mask) posix_mask = 0 if prot.is_e(): posix_mask |= stat.S_IXUSR | stat.S_IXGRP | stat.S_IXOTH if prot.is_w(): posix_mask |= stat.S_IWUSR | stat.S_IWGRP | stat.S_IWOTH if prot.is_r(): posix_mask |= stat.S_IRUSR | stat.S_IRGRP | stat.S_IROTH posix_mask &= ~self.umask log_file.info( "set protection: '%s': %s -> '%s': posix_mask=%03o umask=%03o", ami_path, prot, sys_path, posix_mask, self.umask, ) try: os.chmod(sys_path, posix_mask) return NO_ERROR except OSError: return ERROR_OBJECT_WRONG_TYPE
def set_protection(self, lock, ami_path, mask): sys_path = self.path_mgr.ami_to_sys_path(lock, ami_path) if sys_path == None or not os.path.exists(sys_path): log_file.info("file to set proteciton not found: '%s'", ami_path) return ERROR_OBJECT_NOT_FOUND prot = DosProtection(mask) posix_mask = 0 if prot.is_e(): posix_mask |= stat.S_IXUSR | stat.S_IXGRP | stat.S_IXOTH if prot.is_w(): posix_mask |= stat.S_IWUSR | stat.S_IWGRP | stat.S_IWOTH if prot.is_r(): posix_mask |= stat.S_IRUSR | stat.S_IRGRP | stat.S_IROTH posix_mask &= ~self.umask if prot.is_p(): posix_mask |= stat.S_ISUID if prot.is_s(): posix_mask |= stat.S_ISGID log_file.info( "set protection: '%s': %s -> '%s': posix_mask=%03o umask=%03o", ami_path, prot, sys_path, posix_mask, self.umask) try: os.chmod(sys_path, posix_mask) return NO_ERROR except OSError: return ERROR_OBJECT_WRONG_TYPE