def decode_permissions(permissions): if len(permissions) != 10: return "Invalid permissions string." file_type = permissions[0] owner_permissions = permissions[1:4] group_permissions = permissions[4:7] others_permissions = permissions[7:10] file_type_dict = { 'd': "Directory", '-': "File" } owner_permissions_dict = { 'r': "Read", 'w': "Write", 'x': "Execute", '-': "No permission" } owner_permissions_str = " ".join(owner_permissions_dict[p] for p in owner_permissions) group_permissions_dict = { 'r': "Read", 'w': "Write", 'x': "Execute", 's': "Set Group ID (SGID) bit set", '-': "No permission" } group_permissions_str = " ".join(group_permissions_dict[p] for p in group_permissions) others_permissions_dict = { 'r': "Read", 'w': "Write", 'x': "Execute", 's': "Set Group ID (SGID) bit set for others", '-': "No permission" } others_permissions_str = " ".join(others_permissions_dict[p] for p in others_permissions) return f"{file_type_dict[file_type]} - Owner: {owner_permissions_str}, Group: {group_permissions_str}, Others: {others_permissions_str}" file_permissions = "drwxrwsrwx+" print(decode_permissions(file_permissions)) # Output: Directory - Owner: Read Write Execute, Group: Read Write Set Group ID (SGID) bit set, Others: Read Write Execute