コード例 #1
0
ファイル: FileManager.py プロジェクト: rdowner/amitools
 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
コード例 #2
0
 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